summaryrefslogtreecommitdiffstats
path: root/src/plugins/styles
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-09-22 18:14:04 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2020-09-24 04:20:03 +0000
commit6f850c080aac36035e12ce9da47d6359f3aaf7f9 (patch)
tree99782b8f7fb56a82f1b45cb27a9e4e7a24b25b2b /src/plugins/styles
parent7769b66120b8c55a8b29cc19db8942299d84c41e (diff)
macOS: Don't assume NSSlider is never flipped
We need to take into account the possibility that the slider is flipped, otherwise we end up with inverted rects, as noticed in Big Sur. The logic to use the ticks as input to whether the bar rect should be inverted didn't make sense. If the graphics context has been flipped, then we should reflect that through the slider. Change-Id: I3574027c14807460affb42a9763211981c4ed528 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit e4f647e2720612d030e4a2240a00500054bbda99) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/plugins/styles')
-rw-r--r--src/plugins/styles/mac/qmacstyle_mac.mm14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/plugins/styles/mac/qmacstyle_mac.mm b/src/plugins/styles/mac/qmacstyle_mac.mm
index 2f45378d8d..5005e89939 100644
--- a/src/plugins/styles/mac/qmacstyle_mac.mm
+++ b/src/plugins/styles/mac/qmacstyle_mac.mm
@@ -511,7 +511,7 @@ static void fixStaleGeometry(NSSlider *slider)
return;
NSSliderCell *cell = slider.cell;
- const NSRect barRect = [cell barRectFlipped:NO];
+ const NSRect barRect = [cell barRectFlipped:slider.isFlipped];
const NSSize sliderSize = slider.frame.size;
CGFloat difference = 0.;
if (slider.vertical)
@@ -5348,7 +5348,7 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
CGPoint pressPoint;
if (isPressed) {
- const CGRect knobRect = [slider.cell knobRectFlipped:NO];
+ const CGRect knobRect = [slider.cell knobRectFlipped:slider.isFlipped];
pressPoint.x = CGRectGetMidX(knobRect);
pressPoint.y = CGRectGetMidY(knobRect);
[slider.cell startTrackingAt:pressPoint inView:slider];
@@ -5406,7 +5406,7 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
if (hasDoubleTicks)
slider.numberOfTickMarks = 0;
- const CGRect barRect = [cell barRectFlipped:hasTicks];
+ const CGRect barRect = [cell barRectFlipped:slider.isFlipped];
if (drawBar) {
if (!isHorizontal && !sl->upsideDown && (hasDoubleTicks || !hasTicks)) {
// The logic behind verticalFlip and upsideDown is the twisted one.
@@ -5793,8 +5793,8 @@ QStyle::SubControl QMacStyle::hitTestComplexControl(ComplexControl cc,
break;
NSSliderCell *cell = slider.cell;
- const auto barRect = QRectF::fromCGRect([cell barRectFlipped:hasTicks]);
- const auto knobRect = QRectF::fromCGRect([cell knobRectFlipped:NO]);
+ const auto barRect = QRectF::fromCGRect([cell barRectFlipped:slider.isFlipped]);
+ const auto knobRect = QRectF::fromCGRect([cell knobRectFlipped:slider.isFlipped]);
if (knobRect.contains(pt)) {
sc = SC_SliderHandle;
} else if (barRect.contains(pt)) {
@@ -5898,7 +5898,7 @@ QRect QMacStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *op
NSSliderCell *cell = slider.cell;
if (sc == SC_SliderHandle) {
- ret = QRectF::fromCGRect([cell knobRectFlipped:NO]).toRect();
+ ret = QRectF::fromCGRect([cell knobRectFlipped:slider.isFlipped]).toRect();
if (isHorizontal) {
ret.setTop(sl->rect.top());
ret.setBottom(sl->rect.bottom());
@@ -5907,7 +5907,7 @@ QRect QMacStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *op
ret.setRight(sl->rect.right());
}
} else if (sc == SC_SliderGroove) {
- ret = QRectF::fromCGRect([cell barRectFlipped:hasTicks]).toRect();
+ ret = QRectF::fromCGRect([cell barRectFlipped:slider.isFlipped]).toRect();
} else if (hasTicks && sc == SC_SliderTickmarks) {
const auto tickMarkRect = QRectF::fromCGRect([cell rectOfTickMarkAtIndex:0]);
if (isHorizontal)