summaryrefslogtreecommitdiffstats
path: root/src/widgets/styles
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2022-05-17 04:15:12 +0200
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2022-05-18 13:15:00 +0200
commit9d41bd431280d7bb1f0fa3865e49a13200ff9608 (patch)
tree5f04f705b14ba29aa6da8313726a65a17420a1a5 /src/widgets/styles
parent2f35653a3058840e042ed92aba8f04d0abdf7d61 (diff)
Stylesheet: Another positioning fix for the menu indicator
Draw tool button menu indicator relative to frame, not content, so that padding added in the stylesheet creates room between text and indicator. Also, prevent another double-arrow by ignoring menu indicator rendering when a menu button subcontrol is used, as the two are mutually exclusive. This amends 1c338e6d07a42631a6603c5bb0bc86f6806addd6. Add problematic case to stylesheet baseline test. Fixes: QTBUG-102866 Pick-to: 6.3 6.2 Change-Id: I5d79e65b33a2e41ac07c8efe0c15697c5be65201 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/widgets/styles')
-rw-r--r--src/widgets/styles/qstylesheetstyle.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp
index f84fd040e3..0437561d13 100644
--- a/src/widgets/styles/qstylesheetstyle.cpp
+++ b/src/widgets/styles/qstylesheetstyle.cpp
@@ -3282,7 +3282,7 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC
if (customDropDownArrow)
toolOpt.features &= ~(QStyleOptionToolButton::Menu | QStyleOptionToolButton::HasMenu);
}
- const bool customMenuIndicator = (!customDropDown && drawMenuIndicator)
+ const bool customMenuIndicator = (!drawDropDown && drawMenuIndicator)
&& hasStyleRule(w, PseudoElement_ToolButtonMenuIndicator);
if (customMenuIndicator)
toolOpt.features &= ~QStyleOptionToolButton::HasMenu;
@@ -3354,9 +3354,9 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC
} else if (drawMenuIndicator) {
QRenderRule subRule = renderRule(w, opt, PseudoElement_ToolButtonMenuIndicator);
- QRect r = subRule.hasGeometry() || subRule.hasPosition()
- ? positionRect(w, subRule, PseudoElement_ToolButtonMenuIndicator, toolOpt.rect, toolOpt.direction)
- : subRule.contentsRect(opt->rect);
+ // content padding does not impact the indicator, so use the original rect to
+ // calculate position of the sub element within the toplevel rule
+ QRect r = positionRect(w, rule, subRule, PseudoElement_ToolButtonMenuIndicator, opt->rect, toolOpt.direction);
if (subRule.hasDrawable()) {
subRule.drawRule(p, r);
} else {
@@ -3397,7 +3397,6 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC
}
subRule.drawRule(p, arrowRect);
}
-
return;
}
break;