Fix label margins for pulldowns with custom styled menu indicator on macOS

Don't apply the QMacStyle's pulldownButton titlemargins to the
QPushButton's contents rect if the button has a custom styled menu
indicator. This causes the button's text/icon to be misaligned.

Fixes: QTBUG-86134
Change-Id: I6ef95d51071c1d79f1cc07425a46958f50091b7e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
(cherry picked from commit 37f9f2e7afb2539ead355f1115e10835c2df9f92)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Doris Verria 2021-03-30 10:58:17 +02:00 committed by Qt Cherry-pick Bot
parent 2d5e8bf5af
commit a0def9b90d

View File

@ -5855,6 +5855,13 @@ QRect QStyleSheetStyle::subElementRect(SubElement se, const QStyleOption *opt, c
case SE_PushButtonBevel:
case SE_PushButtonFocusRect:
if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) {
if (btn->features & QStyleOptionButton::HasMenu
&& hasStyleRule(w, PseudoElement_PushButtonMenuIndicator)) {
QStyleOptionButton btnOpt(*btn);
btnOpt.features &= ~QStyleOptionButton::HasMenu;
return rule.baseStyleCanDraw() ? baseStyle()->subElementRect(se, &btnOpt, w)
: QWindowsStyle::subElementRect(se, &btnOpt, w);
}
if (rule.hasBox() || !rule.hasNativeBorder()) {
return visualRect(opt->direction, opt->rect, se == SE_PushButtonBevel
? rule.borderRect(opt->rect)