diff options
author | Olivier Goffart <ogoffart@trolltech.com> | 2009-04-27 15:34:50 (GMT) |
---|---|---|
committer | Olivier Goffart <ogoffart@trolltech.com> | 2009-04-27 16:14:22 (GMT) |
commit | 8af3500125a03a54dddb8c46ee709b7b8d257f27 (patch) | |
tree | a62d474028858dddd5f6f80b4a7c3f2270af343d /src/gui/widgets/qlabel.cpp | |
parent | 3cdde3b112f0c69e497d72d195b9ccc44d0048ab (diff) | |
download | Qt-8af3500125a03a54dddb8c46ee709b7b8d257f27.zip Qt-8af3500125a03a54dddb8c46ee709b7b8d257f27.tar.gz Qt-8af3500125a03a54dddb8c46ee709b7b8d257f27.tar.bz2 |
Fixes QLabel:hover{color:...} for simple text
(This was only working if the QLabel had a QTextControl)
Also rename the QStyleSheetStyle::focusPalette to ...::styleSheetPalette
Reviewed-by: Jens Bache-Wiig
Diffstat (limited to 'src/gui/widgets/qlabel.cpp')
-rw-r--r-- | src/gui/widgets/qlabel.cpp | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/gui/widgets/qlabel.cpp b/src/gui/widgets/qlabel.cpp index 63c1315..e510c7d 100644 --- a/src/gui/widgets/qlabel.cpp +++ b/src/gui/widgets/qlabel.cpp @@ -52,7 +52,6 @@ #include <qdebug.h> #include <qurl.h> #include "qlabel_p.h" -#include "private/qstylesheetstyle_p.h" QT_BEGIN_NAMESPACE @@ -971,6 +970,13 @@ void QLabel::paintEvent(QPaintEvent *) #endif if (d->isTextLabel) { QRectF lr = d->layoutRect(); + QStyleOption opt; + opt.initFrom(this); +#ifndef QT_NO_STYLE_STYLESHEET + if (QStyleSheetStyle* cssStyle = qobject_cast<QStyleSheetStyle*>(style())) { + cssStyle->styleSheetPalette(this, &opt, &opt.palette); + } +#endif if (d->control) { #ifndef QT_NO_SHORTCUT const bool underline = (bool)style->styleHint(QStyle::SH_UnderlineShortcut, 0, this, 0); @@ -984,11 +990,9 @@ void QLabel::paintEvent(QPaintEvent *) d->ensureTextLayouted(); QAbstractTextDocumentLayout::PaintContext context; - QStyleOption opt(0); - opt.init(this); if (!isEnabled() && style->styleHint(QStyle::SH_EtchDisabledText, &opt, this)) { - context.palette = palette(); + context.palette = opt.palette; context.palette.setColor(QPalette::Text, context.palette.light().color()); painter.save(); painter.translate(lr.x() + 1, lr.y() + 1); @@ -999,12 +1003,7 @@ void QLabel::paintEvent(QPaintEvent *) } // Adjust the palette - context.palette = palette(); -#ifndef QT_NO_STYLE_STYLESHEET - if (QStyleSheetStyle* cssStyle = qobject_cast<QStyleSheetStyle*>(style)) { - cssStyle->focusPalette(this, &opt, &context.palette); - } -#endif + context.palette = opt.palette; if (foregroundRole() != QPalette::Text && isEnabled()) context.palette.setColor(QPalette::Text, context.palette.color(foregroundRole())); @@ -1019,12 +1018,10 @@ void QLabel::paintEvent(QPaintEvent *) int flags = align; if (d->hasShortcut) { flags |= Qt::TextShowMnemonic; - QStyleOption opt; - opt.initFrom(this); if (!style->styleHint(QStyle::SH_UnderlineShortcut, &opt, this)) flags |= Qt::TextHideMnemonic; } - style->drawItemText(&painter, lr.toRect(), flags, palette(), isEnabled(), d->text, foregroundRole()); + style->drawItemText(&painter, lr.toRect(), flags, opt.palette, isEnabled(), d->text, foregroundRole()); } } else #ifndef QT_NO_PICTURE |