diff --git a/resources/qml/MessageInput.qml b/resources/qml/MessageInput.qml index d665566c..1b40931f 100644 --- a/resources/qml/MessageInput.qml +++ b/resources/qml/MessageInput.qml @@ -139,6 +139,7 @@ Rectangle { if (TimelineManager.timeline) TimelineManager.timeline.input.updateState(selectionStart, selectionEnd, cursorPosition, text); + forceActiveFocus(); } onCursorRectangleChanged: textInput.ensureVisible(cursorRectangle) onCursorPositionChanged: { @@ -260,7 +261,9 @@ Rectangle { Connections { ignoreUnknownSignals: true - onInsertText: messageInput.insert(messageInput.cursorPosition, text) + onInsertText: { + messageInput.insert(messageInput.cursorPosition, text); + } onTextChanged: { messageInput.text = newText; messageInput.cursorPosition = newText.length; @@ -271,6 +274,7 @@ Rectangle { Connections { ignoreUnknownSignals: true onReplyChanged: messageInput.forceActiveFocus() + onEditChanged: messageInput.forceActiveFocus() target: TimelineManager.timeline } diff --git a/resources/qml/MessageView.qml b/resources/qml/MessageView.qml index dafca0f6..0f058830 100644 --- a/resources/qml/MessageView.qml +++ b/resources/qml/MessageView.qml @@ -50,7 +50,12 @@ ListView { Shortcut { sequence: StandardKey.Cancel - onActivated: chat.model.reply = undefined + onActivated: { + if (chat.model.edit) + chat.model.edit = undefined; + else + chat.model.reply = undefined; + } } Shortcut { @@ -66,6 +71,11 @@ ListView { } } + Shortcut { + sequence: "Ctrl+E" + onActivated: chat.model.edit = chat.model.reply + } + Component { id: sectionHeader diff --git a/resources/qml/ReplyPopup.qml b/resources/qml/ReplyPopup.qml index 85b64114..9e97d7aa 100644 --- a/resources/qml/ReplyPopup.qml +++ b/resources/qml/ReplyPopup.qml @@ -18,8 +18,8 @@ Rectangle { Reply { id: replyPreview - visible: room && room.reply + visible: room && room.reply anchors.left: parent.left anchors.leftMargin: 2 * 22 + 3 * 16 anchors.right: closeReplyButton.left @@ -32,8 +32,8 @@ Rectangle { ImageButton { id: closeReplyButton - visible: room && room.reply + visible: room && room.reply anchors.right: parent.right anchors.rightMargin: 16 anchors.top: replyPreview.top @@ -48,8 +48,8 @@ Rectangle { Button { id: closeEditButton - visible: room && room.edit + visible: room && room.edit anchors.left: parent.left anchors.rightMargin: 16 anchors.topMargin: 10 diff --git a/resources/qml/TimelineRow.qml b/resources/qml/TimelineRow.qml index d4f058e5..9f054b9b 100644 --- a/resources/qml/TimelineRow.qml +++ b/resources/qml/TimelineRow.qml @@ -88,7 +88,7 @@ Item { ImageButton { id: editButton - visible: (Settings.buttonsInTimeline && model.isEditable) || model.isEdited + visible: (Settings.buttonsInTimeline && model.isEditable) || model.isEdited buttonTextColor: chat.model.edit == model.id ? colors.highlight : colors.buttonText Layout.alignment: Qt.AlignRight | Qt.AlignTop Layout.preferredHeight: 16 @@ -97,7 +97,11 @@ Item { image: ":/icons/icons/ui/edit.png" ToolTip.visible: hovered ToolTip.text: model.isEditable ? qsTr("Edit") : qsTr("Edited") - onClicked: if (model.isEditable) chat.model.editAction(model.id) + onClicked: { + if (model.isEditable) + chat.model.editAction(model.id); + + } } EmojiButton { diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml index c03e8d31..4b3c006a 100644 --- a/resources/qml/TimelineView.qml +++ b/resources/qml/TimelineView.qml @@ -91,6 +91,11 @@ Page { onClicked: TimelineManager.timeline.replyAction(messageContextMenu.eventId) } + MenuItem { + text: qsTr("Edit") + onClicked: TimelineManager.timeline.editAction(messageContextMenu.eventId) + } + MenuItem { text: qsTr("Read receipts") onTriggered: TimelineManager.timeline.readReceiptsAction(messageContextMenu.eventId)