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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls
Item {
id: root
signal toggleRequested()
signal selectRequested()
signal contextMenuRequested()
// handler for mouse device
TapHandler {
acceptedDevices: PointerDevice.Mouse
acceptedButtons: Qt.LeftButton | Qt.RightButton
longPressThreshold: 0
onTapped: function(event, button) {
const no_modifier = (point.modifiers === Qt.NoModifier)
const control_modifier = (point.modifiers === Qt.ControlModifier)
if (!no_modifier && !control_modifier) {
// reject event with other modifiers
event.accepted = false
return
}
switch (button) {
case Qt.LeftButton:
if (control_modifier)
root.toggleRequested()
else if (no_modifier)
root.selectRequested()
break
case Qt.RightButton:
if (!no_modifier) {
// reject event if there is a modifier
event.accepted = false
return
}
root.contextMenuRequested()
break
}
}
}
// handler for touch device
TapHandler {
acceptedDevices: PointerDevice.TouchScreen
acceptedModifiers: Qt.NoModifier
dragThreshold: 0
onTapped: (event, button) => root.toggleRequested()
onLongPressed: () => root.contextMenuRequested()
}
}
|