diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2014-11-07 12:25:29 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2014-11-07 17:52:25 +0100 |
commit | 8e8b0dbaec1868944e0a699a4474304b0cae65e9 (patch) | |
tree | aa3c20c58c00a4294dd687d0bf0e228bfb516ee0 | |
parent | a8532793ffac763b8345fd42fe0bccb312e4c94c (diff) | |
download | qtquickcontrols-8e8b0dbaec1868944e0a699a4474304b0cae65e9.tar.gz |
Slider: don't clamp to the initial press point
Change-Id: I5115bbab670f534dae44eb19c2208aff21293889
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
-rw-r--r-- | src/controls/Slider.qml | 2 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_slider.qml | 25 |
2 files changed, 26 insertions, 1 deletions
diff --git a/src/controls/Slider.qml b/src/controls/Slider.qml index d43923c1..89c1e723 100644 --- a/src/controls/Slider.qml +++ b/src/controls/Slider.qml @@ -258,7 +258,7 @@ Control { onPositionChanged: { if (pressed) - updateHandlePosition(mouse) + updateHandlePosition(mouse, preventStealing) var point = mouseArea.mapToItem(fakeHandle, mouse.x, mouse.y) handleHovered = fakeHandle.contains(Qt.point(point.x, point.y)) diff --git a/tests/auto/controls/data/tst_slider.qml b/tests/auto/controls/data/tst_slider.qml index 2b3a00a5..2541b1c5 100644 --- a/tests/auto/controls/data/tst_slider.qml +++ b/tests/auto/controls/data/tst_slider.qml @@ -41,6 +41,8 @@ import QtQuick 2.2 import QtTest 1.0 import QtQuickControlsTests 1.0 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 Item { id: container @@ -305,5 +307,28 @@ Item { compare(slider.__handlePos, 50) slider.destroy() } + + function test_dragThreshold() { + var control = Qt.createQmlObject('import QtQuick.Controls 1.2; Slider {x: 20; y: 20; width: 100; height: 50}', container, '') + + var pt = { x: control.width/2, y: control.height/2 } + + mousePress(control, pt.x, pt.y) + compare(control.value, 0.5) + + // drag less than the threshold distance + mouseMove(control, pt.x + Settings.dragThreshold - 1, pt.y) + compare(control.value, 0.5) + + // drag over the threshold + mouseMove(control, pt.x + Settings.dragThreshold + 1, pt.y) + verify(control.value > 0.5) + + // move back close to the original press point, less than the threshold distance away + mouseMove(control, pt.x - Settings.dragThreshold / 2, pt.y) + verify(control.value < 0.5) + + control.destroy() + } } } |