diff --git a/src/FlightMap/MapItems/MissionItemIndicatorDrag.qml b/src/FlightMap/MapItems/MissionItemIndicatorDrag.qml index d9b3d5e2b535bc1c59f0373a9f30e76b0c47c825..c41ca75ef954ca6cff9c8884895a1a680ded2542 100644 --- a/src/FlightMap/MapItems/MissionItemIndicatorDrag.qml +++ b/src/FlightMap/MapItems/MissionItemIndicatorDrag.qml @@ -17,30 +17,31 @@ import QGroundControl.Controls 1.0 /// Use the drag a MissionItemIndicator Rectangle { id: itemDragger - x: itemIndicator.x - _expandMargin - y: itemIndicator.y - _expandMargin - width: itemIndicator.width + (_expandMargin * 2) - height: itemIndicator.height + (_expandMargin * 2) + x: itemIndicator.x - _touchMarginHorizontal + y: itemIndicator.y - _touchMarginVertical + width: itemIndicator.width + (_touchMarginHorizontal * 2) + height: itemIndicator.height + (_touchMarginVertical * 2) color: "transparent" z: QGroundControl.zOrderMapItems + 1 // Above item icons - // These are handy for debugging so left in for now - //border.width: 1 - //border.color: "white" - // Properties which must be specific by consumer property var itemIndicator ///< The mission item indicator to drag around property var itemCoordinate ///< Coordinate we are updating during drag property bool _preventCoordinateBindingLoop: false - property real _expandMargin: ScreenTools.isMobile ? ScreenTools.defaultFontPixelWidth : 0 + + property bool _mobile: true//ScreenTools.isMobile + property real _touchWidth: Math.max(itemIndicator.width, ScreenTools.minTouchPixels) + property real _touchHeight: Math.max(itemIndicator.height, ScreenTools.minTouchPixels) + property real _touchMarginHorizontal: _mobile ? (_touchWidth - itemIndicator.width) / 2 : 0 + property real _touchMarginVertical: _mobile ? (_touchHeight - itemIndicator.height) / 2 : 0 onXChanged: liveDrag() onYChanged: liveDrag() function liveDrag() { if (!itemDragger._preventCoordinateBindingLoop && Drag.active) { - var point = Qt.point(itemDragger.x + _expandMargin + itemIndicator.anchorPoint.x, itemDragger.y + _expandMargin + itemIndicator.anchorPoint.y) + var point = Qt.point(itemDragger.x + _touchMarginHorizontal + itemIndicator.anchorPoint.x, itemDragger.y + _touchMarginVertical + itemIndicator.anchorPoint.y) var coordinate = map.toCoordinate(point) itemDragger._preventCoordinateBindingLoop = true coordinate.altitude = itemCoordinate.altitude @@ -51,13 +52,14 @@ Rectangle { Drag.active: itemDrag.drag.active - MouseArea { - id: itemDrag - anchors.fill: parent - drag.target: parent - drag.minimumX: 0 - drag.minimumY: 0 - drag.maximumX: itemDragger.parent.width - parent.width - drag.maximumY: itemDragger.parent.height - parent.height + QGCMouseArea { + id: itemDrag + anchors.fill: parent + drag.target: parent + drag.minimumX: 0 + drag.minimumY: 0 + drag.maximumX: itemDragger.parent.width - parent.width + drag.maximumY: itemDragger.parent.height - parent.height + preventStealing: true } } diff --git a/src/MissionEditor/MissionItemEditor.qml b/src/MissionEditor/MissionItemEditor.qml index 2b9942d201b40c3e1006020a89b80e3ed6a51a3a..e1813762fef63d153d5e3f6bb08637c3108a7a80 100644 --- a/src/MissionEditor/MissionItemEditor.qml +++ b/src/MissionEditor/MissionItemEditor.qml @@ -68,15 +68,21 @@ Rectangle { } - MouseArea { + QGCMouseArea { // The MouseArea for the hamburger is larger than the hamburger image itself in order to provide a larger // touch area on mobile - anchors.top: parent.top - anchors.bottom: editorLoader.top - anchors.leftMargin: -hamburger.anchors.rightMargin - anchors.left: hamburger.left - anchors.right: parent.right - onClicked: hamburgerMenu.popup() + anchors.leftMargin: -_touchMarginHorizontal + anchors.rightMargin: -_touchMarginHorizontal + anchors.topMargin: -_touchMarginVertical + anchors.bottomMargin: -_touchMarginVertical + anchors.fill: hamburger + visible: hamburger.visible + onClicked: hamburgerMenu.popup() + + property real _touchWidth: Math.max(hamburger.width, ScreenTools.minTouchPixels) + property real _touchHeight: Math.max(hamburger.height, ScreenTools.minTouchPixels) + property real _touchMarginHorizontal: ScreenTools.isMobile ? (_touchWidth - hamburger.width) / 2 : 0 + property real _touchMarginVertical: ScreenTools.isMobile ? (_touchHeight - hamburger.height) / 2 : 0 Menu { id: hamburgerMenu diff --git a/src/QmlControls/ToolStrip.qml b/src/QmlControls/ToolStrip.qml index 296dfc4a047584f26870b098349840a57cab7b84..6edd257900ab3830b922f2e65618388855ae19c6 100644 --- a/src/QmlControls/ToolStrip.qml +++ b/src/QmlControls/ToolStrip.qml @@ -16,7 +16,7 @@ import QGroundControl.Palette 1.0 Rectangle { id: _root color: qgcPal.window - width: ScreenTools.defaultFontPixelWidth * 6 + width: ScreenTools.isMobile ? ScreenTools.minTouchPixels : ScreenTools.defaultFontPixelWidth * 6 height: buttonStripColumn.height + (buttonStripColumn.anchors.margins * 2) radius: _radius @@ -172,10 +172,10 @@ Rectangle { } - MouseArea { + QGCMouseArea { // Size of mouse area is expanded to make touch easier - anchors.leftMargin: buttonStripColumn.margins - anchors.rightMargin: buttonStripColumn.margins + anchors.leftMargin: -buttonStripColumn.anchors.margins + anchors.rightMargin: -buttonStripColumn.anchors.margins anchors.left: parent.left anchors.right: parent.right anchors.top: parent.top