summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@qt.io>2017-05-18 14:58:57 -0700
committerGabriel de Dietrich <gabriel.dedietrich@qt.io>2017-07-10 17:38:35 +0000
commitaaf227e29913ed9ce7497522546b4e7bc48dcf6d (patch)
treeaa2bb96ebfc1f1c3997697b74cd682050493d0c5
parentb81573bbd83b3795df6d7cfc8af78121f9bc68ca (diff)
QMacStyle: Simplify rendering SC_GroupBoxLabel
Removes the last occurrence of HITHemeDrawTextBox. Change-Id: I13804a16672c692a4405d8b2f9d5fb6a132a6b7b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
-rw-r--r--src/plugins/styles/mac/qmacstyle_mac.mm39
1 files changed, 12 insertions, 27 deletions
diff --git a/src/plugins/styles/mac/qmacstyle_mac.mm b/src/plugins/styles/mac/qmacstyle_mac.mm
index 77ee42de57..95b9aeca2c 100644
--- a/src/plugins/styles/mac/qmacstyle_mac.mm
+++ b/src/plugins/styles/mac/qmacstyle_mac.mm
@@ -5701,36 +5701,21 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
else
groupBox.subControls = groupBox.subControls & ~SC_GroupBoxFrame; // We don't like frames and ugly lines
- bool didModifySubControls = false;
- if ((!widget || !widget->testAttribute(Qt::WA_SetFont))
- && QApplication::desktopSettingsAware()) {
+ const bool didSetFont = widget && widget->testAttribute(Qt::WA_SetFont);
+ const bool didModifySubControls = !didSetFont && QApplication::desktopSettingsAware();
+ if (didModifySubControls)
groupBox.subControls = groupBox.subControls & ~SC_GroupBoxLabel;
- didModifySubControls = true;
- }
QCommonStyle::drawComplexControl(cc, &groupBox, p, widget);
if (didModifySubControls) {
- p->save();
- CGContextSetShouldAntialias(cg, true);
- CGContextSetShouldSmoothFonts(cg, true);
- HIThemeTextInfo tti;
- tti.version = qt_mac_hitheme_version;
- tti.state = tds;
- QColor textColor = groupBox.palette.windowText().color();
- CGFloat colorComp[] = { static_cast<CGFloat>(textColor.redF()), static_cast<CGFloat>(textColor.greenF()),
- static_cast<CGFloat>(textColor.blueF()), static_cast<CGFloat>(textColor.alphaF()) };
- CGContextSetFillColorSpace(cg, qt_mac_genericColorSpace());
- CGContextSetFillColor(cg, colorComp);
- tti.fontID = flat ? kThemeSystemFont : kThemeSmallSystemFont;
- tti.horizontalFlushness = kHIThemeTextHorizontalFlushCenter;
- tti.verticalFlushness = kHIThemeTextVerticalFlushCenter;
- tti.options = kHIThemeTextBoxOptionNone;
- tti.truncationPosition = kHIThemeTextTruncationNone;
- tti.truncationMaxLines = 1 + groupBox.text.count(QLatin1Char('\n'));
- QCFString groupText = qt_mac_removeMnemonics(groupBox.text);
- QRect r = proxy()->subControlRect(CC_GroupBox, &groupBox, SC_GroupBoxLabel, widget);
- CGRect bounds = r.toCGRect();
- HIThemeDrawTextBox(groupText, &bounds, &tti, cg, kHIThemeOrientationNormal);
- p->restore();
+ const QRect rect = proxy()->subControlRect(CC_GroupBox, &groupBox, SC_GroupBoxLabel, widget);
+ const bool rtl = groupBox.direction == Qt::RightToLeft;
+ const int alignment = Qt::TextHideMnemonic | (rtl ? Qt::AlignRight : Qt::AlignLeft);
+ const QFont savedFont = p->font();
+ if (!flat)
+ p->setFont(*QGuiApplicationPrivate::platformTheme()->font(QPlatformTheme::SmallFont));
+ proxy()->drawItemText(p, rect, alignment, groupBox.palette, groupBox.state & State_Enabled, groupBox.text, QPalette::WindowText);
+ if (!flat)
+ p->setFont(savedFont);
}
}
break;