mirror of
https://github.com/crystalidea/qt-build-tools.git
synced 2024-11-26 04:31:39 +08:00
5.15.7 - fix for QTBUG-98093 (backport of 4bee9cdc0a
)
This commit is contained in:
parent
330ff72275
commit
d32770f79d
@ -468,7 +468,11 @@ static bool setupSlider(NSSlider *slider, const QStyleOptionSlider *sl)
|
||||
if (sl->minimum >= sl->maximum)
|
||||
return false;
|
||||
|
||||
slider.frame = sl->rect.toCGRect();
|
||||
// NSSlider seems to cache values based on tracking and the last layout of the
|
||||
// NSView, resulting in incorrect knob rects that break the interaction with
|
||||
// multiple sliders. So completely reinitialize the slider.
|
||||
[slider initWithFrame:sl->rect.toCGRect()];
|
||||
|
||||
slider.minValue = sl->minimum;
|
||||
slider.maxValue = sl->maximum;
|
||||
slider.intValue = sl->sliderPosition;
|
||||
@ -498,6 +502,14 @@ static bool setupSlider(NSSlider *slider, const QStyleOptionSlider *sl)
|
||||
// the cell for its metrics and to draw itself.
|
||||
[slider layoutSubtreeIfNeeded];
|
||||
|
||||
if (sl->state & QStyle::State_Sunken) {
|
||||
const CGRect knobRect = [slider.cell knobRectFlipped:slider.isFlipped];
|
||||
CGPoint pressPoint;
|
||||
pressPoint.x = CGRectGetMidX(knobRect);
|
||||
pressPoint.y = CGRectGetMidY(knobRect);
|
||||
[slider.cell startTrackingAt:pressPoint inView:slider];
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user