QGCMouseArea.qml 1.57 KB
import QtQuick 2.3

import QGroundControl               1.0
import QGroundControl.ScreenTools   1.0

/// Works just like a regular MouseArea except:
///     1) It supports the ability to show touch extents based on QGroundControl.showTouchAreas
///     2) You can specify fillItem and it will automatically fill to the size and adjust touch areas on mobile
MouseArea {
    anchors.leftMargin:     fillItem ? -_touchMarginHorizontal : 0
    anchors.rightMargin:    fillItem ? -_touchMarginHorizontal : 0
    anchors.topMargin:      fillItem ? -_touchMarginVertical : 0
    anchors.bottomMargin:   fillItem ? -_touchMarginVertical : 0
    anchors.fill:           fillItem ? fillItem : undefined

    property var    fillItem
    property bool   debugMobile:    false   ///< Allows you to debug mobile sizing on desktop builds

    property real _itemWidth:               fillItem ? fillItem.width : width
    property real _itemHeight:              fillItem ? fillItem.height : height
    property real _touchWidth:              Math.max(_itemWidth, ScreenTools.minTouchPixels)
    property real _touchHeight:             Math.max(_itemHeight, ScreenTools.minTouchPixels)
    property real _touchMarginHorizontal:   debugMobile || ScreenTools.isMobile ? (_touchWidth - _itemWidth) / 2 : 0
    property real _touchMarginVertical:     debugMobile || ScreenTools.isMobile ? (_touchHeight - _itemHeight) / 2 : 0

    Rectangle {
        anchors.fill:   parent
        border.color:   "red"
        border.width:   QGroundControl.corePlugin.showTouchAreas ? 1 : 0
        color:          "transparent"
    }
}