blob: b9ab1f350f61364076c17074434bb6ef0e47c87e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import QtQuick 2.0
Item {
id: behavior
signal clicked
property bool pressed: false // Can't be alias of mouseArea.pressed because the latter is read-only
property alias containsMouse: mouseArea.containsMouse
property bool checkable: false
property bool checked: false
property bool triState: false
signal mouseMoved
onCheckableChanged: { if(!checkable) checked = false }
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
onPositionChanged: behavior.mouseMoved()
onPressed: behavior.pressed = true // needed when hover is enabled
onEntered: if(pressed && enabled) behavior.pressed = true
onExited: behavior.pressed = false
onCanceled: behavior.pressed = false // mouse stolen e.g. by Flickable
onReleased: {
if(behavior.pressed && behavior.enabled) { // No click if release outside area
behavior.pressed = false
if(behavior.checkable)
behavior.checked = !behavior.checked;
behavior.clicked()
}
}
}
}
|