summary refs log tree commit diff
path: root/resources
diff options
context:
space:
mode:
Diffstat (limited to 'resources')
-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