Make long press menu actually work

This commit is contained in:
Nicolas Werner 2020-07-26 02:06:38 +02:00
parent 6f557c19a1
commit 8bf26917ad
3 changed files with 22 additions and 14 deletions

View file

@ -5,7 +5,7 @@ TextEdit {
textFormat: TextEdit.RichText
readOnly: true
wrapMode: Text.Wrap
selectByMouse: true
selectByMouse: ma.containsMouse // try to make scrollable by finger but selectable by mouse
color: colors.text
onLinkActivated: {
@ -23,6 +23,7 @@ TextEdit {
id: ma
anchors.fill: parent
propagateComposedEvents: true
hoverEnabled: true
acceptedButtons: Qt.NoButton
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
}

View file

@ -8,22 +8,25 @@ import im.nheko 1.0
import "./delegates"
import "./emoji"
MouseArea {
Item {
anchors.left: parent.left
anchors.right: parent.right
height: row.height
MouseArea {
anchors.fill: parent
propagateComposedEvents: true
preventStealing: true
hoverEnabled: true
acceptedButtons: Qt.LeftButton | Qt.RightButton
acceptedButtons: Qt.AllButtons
onClicked: {
if (mouse.button === Qt.RightButton)
messageContextMenu.show(model.id, model.type, model.isEncrypted, row)
}
onPressAndHold: {
if (mouse.source === Qt.MouseEventNotSynthesized)
messageContextMenu.show(model.id, model.type, model.isEncrypted, row)
messageContextMenu.show(model.id, model.type, model.isEncrypted, row, mapToItem(timelineRoot, mouse.x, mouse.y))
}
}
Rectangle {
color: (settings.messageHoverHighlight && parent.containsMouse) ? colors.base : "transparent"

View file

@ -42,10 +42,14 @@ Page {
id: messageContextMenu
modal: true
function show(eventId_, eventType_, isEncrypted_, showAt_) {
function show(eventId_, eventType_, isEncrypted_, showAt_, position) {
eventId = eventId_
eventType = eventType_
isEncrypted = isEncrypted_
if (position)
popup(position, showAt_)
else
popup(showAt_)
}