55 lines
1.6 KiB
QML
55 lines
1.6 KiB
QML
// 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()
|
|
}
|
|
}
|