From 067e55185497c46412c8d5353b8c984514d53580 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 28 Aug 2015 18:53:15 +0200 Subject: Fix Slider position calculation to take paddings into account When Slider had paddings set, the handle didn't follow the touch point / mouse cursor. The larger paddings were set, the more the handle was "off". Change-Id: I82d97092a2c3fc99cba108fe011a463a571e5507 Reviewed-by: Liang Qi --- tests/auto/controls/data/tst_slider.qml | 73 +++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) (limited to 'tests/auto/controls/data') diff --git a/tests/auto/controls/data/tst_slider.qml b/tests/auto/controls/data/tst_slider.qml index 04d328c8..e497636c 100644 --- a/tests/auto/controls/data/tst_slider.qml +++ b/tests/auto/controls/data/tst_slider.qml @@ -358,4 +358,77 @@ TestCase { control.destroy() } + + function test_padding() { + // test with "unbalanced" paddings (left padding != right padding) to ensure + // that the slider position calculation is done taking padding into account + // ==> the position is _not_ 0.5 in the middle of the control + var control = slider.createObject(testCase, {leftPadding: 10, rightPadding: 20}) + verify(control) + + pressedSpy.target = control + verify(pressedSpy.valid) + + mousePress(control, 0, 0, Qt.LeftButton) + compare(pressedSpy.count, 1) + compare(control.pressed, true) + compare(control.value, 0.0) + compare(control.position, 0.0) + compare(control.visualPosition, 0.0) + + mouseMove(control, control.leftPadding + control.availableWidth * 0.5, control.height * 0.5, 0, Qt.LeftButton) + compare(pressedSpy.count, 1) + compare(control.pressed, true) + compare(control.value, 0.0) + compare(control.position, 0.5) + compare(control.visualPosition, 0.5) + + mouseMove(control, control.width * 0.5, control.height * 0.5, 0, Qt.LeftButton) + compare(pressedSpy.count, 1) + compare(control.pressed, true) + compare(control.value, 0.0) + verify(control.position > 0.5) + verify(control.visualPosition > 0.5) + + mouseRelease(control, control.leftPadding + control.availableWidth * 0.5, control.height * 0.5, Qt.LeftButton) + compare(pressedSpy.count, 2) + compare(control.pressed, false) + compare(control.value, 0.5) + compare(control.position, 0.5) + compare(control.visualPosition, 0.5) + + // RTL + control.value = 0 + control.layoutDirection = Qt.RightToLeft + + mousePress(control, 0, 0, Qt.LeftButton) + compare(pressedSpy.count, 3) + compare(control.pressed, true) + compare(control.value, 0.0) + compare(control.position, 0.0) + compare(control.visualPosition, 1.0) + + mouseMove(control, control.leftPadding + control.availableWidth * 0.5, control.height * 0.5, 0, Qt.LeftButton) + compare(pressedSpy.count, 3) + compare(control.pressed, true) + compare(control.value, 0.0) + compare(control.position, 0.5) + compare(control.visualPosition, 0.5) + + mouseMove(control, control.width * 0.5, control.height * 0.5, 0, Qt.LeftButton) + compare(pressedSpy.count, 3) + compare(control.pressed, true) + compare(control.value, 0.0) + verify(control.position < 0.5) + verify(control.visualPosition > 0.5) + + mouseRelease(control, control.leftPadding + control.availableWidth * 0.5, control.height * 0.5, Qt.LeftButton) + compare(pressedSpy.count, 4) + compare(control.pressed, false) + compare(control.value, 0.5) + compare(control.position, 0.5) + compare(control.visualPosition, 0.5) + + control.destroy() + } } -- cgit v1.2.3