diff options
author | Jens Bache-Wiig <jens.bache-wiig@digia.com> | 2014-03-04 17:52:09 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-20 19:01:53 +0100 |
commit | 23595107cd2366a86cf968578ddb17b827c7a596 (patch) | |
tree | ab07850ba35f1565877d8ddf1875718653cf95ed | |
parent | 80151389d6835629f746b0e61865b41d81a33feb (diff) |
Respect scrollbar position setting on Mac
This was a regression from Qt 4.7.
[ChangeLog][Widgets][QScrollArea] Respect scrollbar setting for
click-position on Mac.
Task-number: QTBUG-36314
Change-Id: I8bdb1aec9b308b0907f5db29d3519998bc843c18
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
-rw-r--r-- | src/widgets/styles/qmacstyle_mac.mm | 8 | ||||
-rw-r--r-- | tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp | 9 | ||||
-rw-r--r-- | tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp | 4 |
3 files changed, 11 insertions, 10 deletions
diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index d4b937ec03..c4e77425bd 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -2517,12 +2517,12 @@ int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w ret = 100; break; case SH_ScrollBar_LeftClickAbsolutePosition: { + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + bool result = [defaults boolForKey:@"AppleScrollerPagingBehavior"]; if(QApplication::keyboardModifiers() & Qt::AltModifier) - ret = false; - //ret = !qt_scrollbar_jump_to_pos; + ret = !result; else - ret = true; - //ret = qt_scrollbar_jump_to_pos; + ret = result; break; } case SH_TabBar_PreferNoArrows: ret = true; diff --git a/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp b/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp index adb3c26dce..4b577d59e5 100644 --- a/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp +++ b/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp @@ -990,15 +990,12 @@ void tst_QAbstractSlider::sliderPressedReleased() QRect rect = slider->style()->subControlRect(QStyle::ComplexControl(control), &option, QStyle::SubControl(subControl), slider); + if (qApp->style()->styleHint(QStyle::SH_ScrollBar_LeftClickAbsolutePosition)) + QSKIP("The result depends on system setting on mac"); + QTest::mousePress(slider, Qt::LeftButton, 0, QPoint(rect.center().x() + 2, rect.center().y() + 2)); -#ifdef Q_OS_MAC - QEXPECT_FAIL("scrollbar on the groove", "QTBUG-23679", Continue); -#endif QCOMPARE(spy1.count(), expectedCount); QTest::mouseRelease(slider, Qt::LeftButton, 0, rect.center()); -#ifdef Q_OS_MAC - QEXPECT_FAIL("scrollbar on the groove", "QTBUG-23679", Continue); -#endif QCOMPARE(spy2.count(), expectedCount); delete slider; diff --git a/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp b/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp index 51dd0852ee..4e0c563fc1 100644 --- a/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp +++ b/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp @@ -147,6 +147,10 @@ void tst_QScrollBar::task_209492() QApplication::sendEvent(verticalScrollBar, &mouseReleaseEvent); // Check that the action was triggered once. + +#ifdef Q_OS_MAC + QSKIP("The result depends on system setting and is not relevant on Mac"); +#endif QCOMPARE(scrollArea.scrollCount, 1); QCOMPARE(spy.count(), 1); } |