summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2024-03-10 22:21:40 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2024-03-10 22:21:40 +0100
commitf25a1b5c36967f1138f6dfb45a0e69ee52769d78 (patch)
treed326a1e7d2ca7c565347190dc8dfb6fc3897e19d
parenteaf9ae315c3ee9fd05cc84c4419bad2bc3681e5d (diff)
Work around the duplicate right click menus on KDE
-rw-r--r--resources/qml/TimelineBubbleMessageStyle.qml17
-rw-r--r--resources/qml/TimelineDefaultMessageStyle.qml25
2 files changed, 40 insertions, 2 deletions
diff --git a/resources/qml/TimelineBubbleMessageStyle.qml b/resources/qml/TimelineBubbleMessageStyle.qml
index 2e038131..3b0f2d94 100644
--- a/resources/qml/TimelineBubbleMessageStyle.qml
+++ b/resources/qml/TimelineBubbleMessageStyle.qml
@@ -317,6 +317,23 @@ TimelineEvent {
}
},
+ Item {
+ // We need this item to grab events, that otherwise would go to the TextArea in the main item. If we don't have this, it would trigger a right click menu on KDE...
+ // https://invent.kde.org/frameworks/qqc2-desktop-style/-/blob/9d71fe874186009f76d392e203d9fa25a49f8be7/org.kde.desktop/TextArea.qml#L55
+
+ anchors.fill: gridContainer
+ anchors.topMargin: replyRow.height
+ TapHandler {
+
+ acceptedButtons: Qt.RightButton
+ acceptedDevices: PointerDevice.Mouse | PointerDevice.Stylus | PointerDevice.TouchPad
+ gesturePolicy: TapHandler.ReleaseWithinBounds
+
+ onSingleTapped: (event) => {
+ messageContextMenu.show(wrapper.eventId, wrapper.threadId, wrapper.type, wrapper.isSender, wrapper.isEncrypted, wrapper.isEditable, wrapper.main.hoveredLink, wrapper.main.copyText);
+ }
+ }
+ },
Reactions {
id: reactionRow
diff --git a/resources/qml/TimelineDefaultMessageStyle.qml b/resources/qml/TimelineDefaultMessageStyle.qml
index 34808323..331a5dfe 100644
--- a/resources/qml/TimelineDefaultMessageStyle.qml
+++ b/resources/qml/TimelineDefaultMessageStyle.qml
@@ -75,16 +75,20 @@ TimelineEvent {
z: 4
},
Rectangle {
+ // this looks better without margins
anchors.fill: gridContainer
color: (Settings.messageHoverHighlight && messageHover.hovered) ? palette.alternateBase : "transparent"
- // this looks better without margins
+ // This is partially duplicated by a later handler, however we need this to handle the remaining events around the reply.
TapHandler {
acceptedButtons: Qt.RightButton
acceptedDevices: PointerDevice.Mouse | PointerDevice.Stylus | PointerDevice.TouchPad
gesturePolicy: TapHandler.ReleaseWithinBounds
- onSingleTapped: messageContextMenu.show(wrapper.eventId, wrapper.threadId, wrapper.type, wrapper.isSender, wrapper.isEncrypted, wrapper.isEditable, wrapper.main.hoveredLink, wrapper.main.copyText)
+ onSingleTapped: (event) => {
+ messageContextMenu.show(wrapper.eventId, wrapper.threadId, wrapper.type, wrapper.isSender, wrapper.isEncrypted, wrapper.isEditable, wrapper.main.hoveredLink, wrapper.main.copyText);
+ event.accepted = true;
+ }
}
},
Rectangle {
@@ -312,6 +316,23 @@ TimelineEvent {
timestamp: wrapper.timestamp
room: wrapper.room
},
+ Item {
+ // We need this item to grab events, that otherwise would go to the TextArea in the main item. If we don't have this, it would trigger a right click menu on KDE...
+ // https://invent.kde.org/frameworks/qqc2-desktop-style/-/blob/9d71fe874186009f76d392e203d9fa25a49f8be7/org.kde.desktop/TextArea.qml#L55
+
+ anchors.fill: gridContainer
+ anchors.topMargin: replyRow.height
+ TapHandler {
+
+ acceptedButtons: Qt.RightButton
+ acceptedDevices: PointerDevice.Mouse | PointerDevice.Stylus | PointerDevice.TouchPad
+ gesturePolicy: TapHandler.ReleaseWithinBounds
+
+ onSingleTapped: (event) => {
+ messageContextMenu.show(wrapper.eventId, wrapper.threadId, wrapper.type, wrapper.isSender, wrapper.isEncrypted, wrapper.isEditable, wrapper.main.hoveredLink, wrapper.main.copyText);
+ }
+ }
+ },
Reactions {
id: reactionRow