VirtualBox

Ignore:
Timestamp:
Oct 13, 2020 1:58:00 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
140902
Message:

FE/Qt: bugref:9843: Rework QIRichTextLabel to be based on QTextBrowser to make it support external links.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/extensions
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIRichTextLabel.cpp

    r83523 r86557  
    2727QIRichTextLabel::QIRichTextLabel(QWidget *pParent)
    2828    : QWidget(pParent)
    29     , m_pTextEdit()
     29    , m_pTextBrowser()
    3030    , m_iMinimumTextWidth(0)
    3131{
     
    4040        pMainLayout->setMargin(0);
    4141
    42         /* Create text-edit: */
    43         m_pTextEdit = new QTextEdit;
    44         if (m_pTextEdit)
     42        /* Create text-browser: */
     43        m_pTextBrowser = new QTextBrowser;
     44        if (m_pTextBrowser)
    4545        {
    46             /* Configure text-edit: */
    47             m_pTextEdit->setReadOnly(true);
    48             m_pTextEdit->setFocusPolicy(Qt::NoFocus);
    49             m_pTextEdit->setFrameShape(QFrame::NoFrame);
    50             m_pTextEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    51             m_pTextEdit->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
     46            /* Configure text-browser: */
     47            m_pTextBrowser->setReadOnly(true);
     48            m_pTextBrowser->setFocusPolicy(Qt::NoFocus);
     49            m_pTextBrowser->setFrameShape(QFrame::NoFrame);
     50            m_pTextBrowser->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     51            m_pTextBrowser->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
     52            m_pTextBrowser->setOpenExternalLinks(true);
    5253
    53             /* Tune text-edit viewport palette: */
    54             m_pTextEdit->viewport()->setAutoFillBackground(false);
    55             QPalette pal = m_pTextEdit->viewport()->palette();
     54            /* Tune text-browser viewport palette: */
     55            m_pTextBrowser->viewport()->setAutoFillBackground(false);
     56            QPalette pal = m_pTextBrowser->viewport()->palette();
    5657            pal.setColor(QPalette::Active,   QPalette::Text, pal.color(QPalette::Active,   QPalette::WindowText));
    5758            pal.setColor(QPalette::Inactive, QPalette::Text, pal.color(QPalette::Inactive, QPalette::WindowText));
    5859            pal.setColor(QPalette::Disabled, QPalette::Text, pal.color(QPalette::Disabled, QPalette::WindowText));
    59             m_pTextEdit->viewport()->setPalette(pal);
     60            m_pTextBrowser->viewport()->setPalette(pal);
    6061        }
    6162
    6263        /* Add into layout: */
    63         pMainLayout->addWidget(m_pTextEdit);
     64        pMainLayout->addWidget(m_pTextBrowser);
    6465    }
    6566}
     
    6768QString QIRichTextLabel::text() const
    6869{
    69     return m_pTextEdit->toHtml();
     70    return m_pTextBrowser->toHtml();
    7071}
    7172
    7273void QIRichTextLabel::registerImage(const QImage &image, const QString &strName)
    7374{
    74     m_pTextEdit->document()->addResource(QTextDocument::ImageResource, QUrl(strName), QVariant(image));
     75    m_pTextBrowser->document()->addResource(QTextDocument::ImageResource, QUrl(strName), QVariant(image));
    7576}
    7677
    7778QTextOption::WrapMode QIRichTextLabel::wordWrapMode() const
    7879{
    79     return m_pTextEdit->wordWrapMode();
     80    return m_pTextBrowser->wordWrapMode();
    8081}
    8182
    8283void QIRichTextLabel::setWordWrapMode(QTextOption::WrapMode policy)
    8384{
    84     m_pTextEdit->setWordWrapMode(policy);
     85    m_pTextBrowser->setWordWrapMode(policy);
    8586}
    8687
     
    8889{
    8990    QWidget::installEventFilter(pFilterObj);
    90     m_pTextEdit->installEventFilter(pFilterObj);
     91    m_pTextBrowser->installEventFilter(pFilterObj);
    9192}
    9293
     
    9798
    9899    /* Get corresponding QTextDocument: */
    99     QTextDocument *pTextDocument = m_pTextEdit->document();
     100    QTextDocument *pTextDocument = m_pTextBrowser->document();
    100101    /* Bug in QTextDocument (?) : setTextWidth doesn't work from the first time. */
    101102    for (int iTry = 0; pTextDocument->textWidth() != m_iMinimumTextWidth && iTry < 3; ++iTry)
     
    105106
    106107    /* Resize to content size: */
    107     m_pTextEdit->setMinimumSize(size);
     108    m_pTextBrowser->setMinimumSize(size);
    108109    layout()->activate();
    109110}
     
    112113{
    113114    /* Set text: */
    114     m_pTextEdit->setHtml(strText);
     115    m_pTextBrowser->setHtml(strText);
    115116
    116117    /* Get corresponding QTextDocument: */
    117     QTextDocument *pTextDocument = m_pTextEdit->document();
     118    QTextDocument *pTextDocument = m_pTextBrowser->document();
    118119
    119120    // WORKAROUND:
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIRichTextLabel.h

    r82968 r86557  
    2323
    2424/* Qt includes: */
    25 #include <QTextEdit>
     25#include <QTextBrowser>
    2626
    2727/* GUI includes: */
     
    2929
    3030/** QLabel analog to reflect rich-text,
    31  ** based on private QTextEdit functionality. */
     31 ** based on private QTextBrowser functionality. */
    3232class SHARED_LIBRARY_STUFF QIRichTextLabel : public QWidget
    3333{
     
    6464private:
    6565
    66     /** Holds the text-editor instance. */
    67     QTextEdit *m_pTextEdit;
     66    /** Holds the text-browser instance. */
     67    QTextBrowser *m_pTextBrowser;
    6868
    6969    /** Holds the minimum text-width. */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette