Add keyboardModifiers member to QStyleOptionSlider, and use it for mac

Gets rid of a call to QApplication::keyboardModifiers in a method that
is anyway only called from an input event handler, where we have that
information already.

Task-number: QTBUG-73829
Change-Id: I81753d6bf725e9db4918d831fac5b03a0b1940b9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
Volker Hilsheimer 2020-07-02 10:37:09 +02:00
parent dbe179e959
commit e278d72192
4 changed files with 6 additions and 3 deletions

View File

@ -2644,7 +2644,8 @@ int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w
case SH_ScrollBar_LeftClickAbsolutePosition: {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
bool result = [defaults boolForKey:@"AppleScrollerPagingBehavior"];
if(QApplication::keyboardModifiers() & Qt::AltModifier)
const QStyleOptionSlider *sliderOpt = qstyleoption_cast<const QStyleOptionSlider*>(opt);
if (sliderOpt && sliderOpt->keyboardModifiers & Qt::AltModifier)
ret = !result;
else
ret = result;

View File

@ -1966,7 +1966,7 @@ QStyleOptionSlider::QStyleOptionSlider()
: QStyleOptionComplex(Version, SO_Slider), orientation(Qt::Horizontal), minimum(0), maximum(0),
tickPosition(QSlider::NoTicks), tickInterval(0), upsideDown(false),
sliderPosition(0), sliderValue(0), singleStep(0), pageStep(0), notchTarget(0.0),
dialWrapping(false)
dialWrapping(false), keyboardModifiers{}
{
}
@ -1977,7 +1977,7 @@ QStyleOptionSlider::QStyleOptionSlider(int version)
: QStyleOptionComplex(version, SO_Slider), orientation(Qt::Horizontal), minimum(0), maximum(0),
tickPosition(QSlider::NoTicks), tickInterval(0), upsideDown(false),
sliderPosition(0), sliderValue(0), singleStep(0), pageStep(0), notchTarget(0.0),
dialWrapping(false)
dialWrapping(false), keyboardModifiers{}
{
}

View File

@ -527,6 +527,7 @@ public:
int pageStep;
qreal notchTarget;
bool dialWrapping;
Qt::KeyboardModifiers keyboardModifiers;
QStyleOptionSlider();
QStyleOptionSlider(const QStyleOptionSlider &other) : QStyleOptionComplex(Version, Type) { *this = other; }

View File

@ -553,6 +553,7 @@ void QScrollBar::mousePressEvent(QMouseEvent *e)
nullptr, this);
QStyleOptionSlider opt;
initStyleOption(&opt);
opt.keyboardModifiers = e->modifiers();
if (d->maximum == d->minimum // no range
|| (e->buttons() & (~e->button())) // another button was clicked before