diff options
author | Robert Griebl <rgriebl@trolltech.com> | 2010-03-03 14:44:46 (GMT) |
---|---|---|
committer | Robert Griebl <rgriebl@trolltech.com> | 2010-03-03 14:45:41 (GMT) |
commit | d4bae0d0e96138d913bfc7ec9fa86b887043787f (patch) | |
tree | a93a5f60214f6be35e48ab462aceeee9a41856dd | |
parent | aee5766de0ab6c942ae3e3747162871651a4ab74 (diff) | |
download | Qt-d4bae0d0e96138d913bfc7ec9fa86b887043787f.zip Qt-d4bae0d0e96138d913bfc7ec9fa86b887043787f.tar.gz Qt-d4bae0d0e96138d913bfc7ec9fa86b887043787f.tar.bz2 |
Fix for QRadioButtons and QCheckBoxes drawn incorrectly when a style sheet is set.
Maemo 5 draws these controls very differently, so we can't rely on
QWindowStyle handling CE_RadioButton/CE_CheckBox.
Task-number: QTBUG-8356
Reviewed-by: ogoffart
-rw-r--r-- | src/gui/styles/qstylesheetstyle.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/gui/styles/qstylesheetstyle.cpp b/src/gui/styles/qstylesheetstyle.cpp index bc1bece..5376386 100644 --- a/src/gui/styles/qstylesheetstyle.cpp +++ b/src/gui/styles/qstylesheetstyle.cpp @@ -3457,10 +3457,17 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q case CE_RadioButton: case CE_CheckBox: - rule.drawRule(p, opt->rect); - ParentStyle::drawControl(ce, opt, p, w); - return; - + if (rule.hasBox() || !rule.hasNativeBorder() || rule.hasDrawable() || hasStyleRule(w, PseudoElement_Indicator)) { + rule.drawRule(p, opt->rect); + ParentStyle::drawControl(ce, opt, p, w); + return; + } else if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { + QStyleOptionButton butOpt(*btn); + rule.configurePalette(&butOpt.palette, QPalette::ButtonText, QPalette::Button); + baseStyle()->drawControl(ce, &butOpt, p, w); + return; + } + break; case CE_RadioButtonLabel: case CE_CheckBoxLabel: if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { |