From 3bb66583af45f4d2f922390f9f7a65017b22b0bc Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Sat, 11 Mar 2017 10:27:54 -0800 Subject: [PATCH] Better usability with touch --- src/QmlControls/SliderSwitch.qml | 42 ++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/QmlControls/SliderSwitch.qml b/src/QmlControls/SliderSwitch.qml index ae51d4b66..b51a6b10c 100644 --- a/src/QmlControls/SliderSwitch.qml +++ b/src/QmlControls/SliderSwitch.qml @@ -9,7 +9,7 @@ import QGroundControl.Palette 1.0 Rectangle { id: _root width: label.contentWidth + (_diameter * 2.5) + (_border * 4) - height: label.height * 2.5 + height: Math.max(ScreenTools.isMobile ? ScreenTools.minTouchPixels : 0, label.height * 2.5) radius: height /2 color: qgcPal.window @@ -49,31 +49,37 @@ Rectangle { fillMode: Image.PreserveAspectFit smooth: false mipmap: false - - color: qgcPal.text cache: false source: "/res/ArrowRight.svg" } - MouseArea { - id: sliderDragArea - anchors.fill: parent - drag.target: slider - drag.axis: Drag.XAxis - drag.minimumX: _border - drag.maximumX: _maxXDrag + } + + MouseArea { + id: sliderDragArea + anchors.leftMargin: -ScreenTools.defaultFontPixelWidth * 15 + anchors.fill: slider + drag.target: slider + drag.axis: Drag.XAxis + drag.minimumX: _border + drag.maximumX: _maxXDrag + preventStealing: true + + property real _maxXDrag: _root.width - (_diameter + _border) + property bool dragActive: drag.active + property real _dragOffset: 1 - property real _maxXDrag: _root.width - (_diameter + _border) - property bool dragActive: drag.active + onPressed: { + mouse.x + } - onDragActiveChanged: { - if (!sliderDragArea.drag.active) { - if (slider.x > _maxXDrag - _border) { - _root.accept() - } - slider.x = _border + onDragActiveChanged: { + if (!sliderDragArea.drag.active) { + if (slider.x > _maxXDrag - _border) { + _root.accept() } + slider.x = _border } } } -- 2.22.0