mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 11:00:48 +03:00
right-click tap handler for replies
This commit is contained in:
parent
8e5060b25e
commit
3f8bb19ba1
3 changed files with 62 additions and 7 deletions
|
@ -648,4 +648,38 @@ ScrollView {
|
|||
|
||||
}
|
||||
|
||||
Platform.Menu {
|
||||
id: replyContextMenu
|
||||
|
||||
property string text
|
||||
property string link
|
||||
|
||||
function show(text_, link_) {
|
||||
text = text_;
|
||||
link = link_;
|
||||
open();
|
||||
}
|
||||
|
||||
Platform.MenuItem {
|
||||
visible: replyContextMenu.text
|
||||
enabled: visible
|
||||
text: qsTr("&Copy")
|
||||
onTriggered: Clipboard.text = replyContextMenu.text
|
||||
}
|
||||
|
||||
Platform.MenuItem {
|
||||
visible: replyContextMenu.link
|
||||
enabled: visible
|
||||
text: qsTr("Copy &link location")
|
||||
onTriggered: Clipboard.text = replyContextMenu.link
|
||||
}
|
||||
|
||||
Platform.MenuItem {
|
||||
visible: true
|
||||
enabled: visible
|
||||
text: qsTr("&Go to reply")
|
||||
onTriggered: chat.model.showEvent(eventId)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import QtQuick.Controls 2.3
|
|||
import QtQuick.Layouts 1.2
|
||||
import QtQuick.Window 2.13
|
||||
import im.nheko 1.0
|
||||
import Qt.labs.platform 1.1 as Platform
|
||||
|
||||
Item {
|
||||
id: r
|
||||
|
@ -36,11 +37,6 @@ Item {
|
|||
width: parent.width
|
||||
height: replyContainer.height
|
||||
|
||||
TapHandler {
|
||||
onSingleTapped: chat.model.showEvent(eventId)
|
||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||
}
|
||||
|
||||
CursorShape {
|
||||
anchors.fill: parent
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
|
@ -62,6 +58,25 @@ Item {
|
|||
anchors.leftMargin: 4
|
||||
width: parent.width - 8
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.LeftButton
|
||||
onSingleTapped: chat.model.showEvent(r.eventId)
|
||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.RightButton
|
||||
onLongPressed: replyContextMenu.show(
|
||||
reply.child.copyText,
|
||||
reply.child.linkAt(eventPoint.position.x, eventPoint.position.y - userName_.implicitHeight)
|
||||
)
|
||||
onSingleTapped: replyContextMenu.show(
|
||||
reply.child.copyText,
|
||||
reply.child.linkAt(eventPoint.position.x, eventPoint.position.y - userName_.implicitHeight)
|
||||
)
|
||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||
}
|
||||
|
||||
Text {
|
||||
id: userName_
|
||||
|
||||
|
@ -73,7 +88,6 @@ Item {
|
|||
onSingleTapped: chat.model.openUserProfile(userId)
|
||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
MessageDelegate {
|
||||
|
@ -99,11 +113,11 @@ Item {
|
|||
callType: r.callType
|
||||
relatedEventCacheBuster: r.relatedEventCacheBuster
|
||||
encryptionError: r.encryptionError
|
||||
// This is disabled so that left clicking the reply goes to its location
|
||||
enabled: false
|
||||
width: parent.width
|
||||
isReply: true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import ".."
|
||||
import QtQuick.Controls 2.3
|
||||
import im.nheko 1.0
|
||||
|
||||
MatrixText {
|
||||
|
@ -35,4 +36,10 @@ MatrixText {
|
|||
clip: isReply
|
||||
selectByMouse: !Settings.mobileMode && !isReply
|
||||
font.pointSize: (Settings.enlargeEmojiOnlyMessages && isOnlyEmoji > 0 && isOnlyEmoji < 4) ? Settings.fontSize * 3 : Settings.fontSize
|
||||
|
||||
CursorShape {
|
||||
enabled: isReply
|
||||
anchors.fill: parent
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue