Make long press menu actually work

master
Nicolas Werner 4 years ago
parent 6f557c19a1
commit 8bf26917ad
  1. 3
      resources/qml/MatrixText.qml
  2. 29
      resources/qml/TimelineRow.qml
  3. 6
      resources/qml/TimelineView.qml

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

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

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

Loading…
Cancel
Save