diff --git a/imports/NeoChat/Component/Timeline/MessageDelegate.qml b/imports/NeoChat/Component/Timeline/MessageDelegate.qml index f6b7db25a..58e3abf0a 100644 --- a/imports/NeoChat/Component/Timeline/MessageDelegate.qml +++ b/imports/NeoChat/Component/Timeline/MessageDelegate.qml @@ -30,6 +30,7 @@ RowLayout { signal saveFileAs() signal openExternally() + signal replyClicked(string eventID) id: root @@ -90,9 +91,14 @@ RowLayout { wrapMode: Text.Wrap } Loader { + id: replyLoader source: 'qrc:imports/NeoChat/Component/Timeline/ReplyComponent.qml' active: replyVisible } + Connections { + target: replyLoader.item + onClicked: replyClicked(reply.eventId) + } } } } diff --git a/imports/NeoChat/Component/Timeline/ReplyComponent.qml b/imports/NeoChat/Component/Timeline/ReplyComponent.qml index 829e3180e..5ecdaa3b7 100644 --- a/imports/NeoChat/Component/Timeline/ReplyComponent.qml +++ b/imports/NeoChat/Component/Timeline/ReplyComponent.qml @@ -9,48 +9,48 @@ import QtQuick.Controls 2.12 as QQC2 import QtQuick.Layouts 1.12 import org.kde.kirigami 2.13 as Kirigami -RowLayout { - Layout.fillWidth: true - +QQC2.AbstractButton { visible: replyVisible - Component.onCompleted: parent.Layout.fillWidth = true - Rectangle { - Layout.preferredWidth: Kirigami.Units.smallSpacing - Layout.fillHeight: true - - color: Kirigami.Theme.highlightColor - } - - Kirigami.Avatar { - Layout.preferredWidth: Kirigami.Units.gridUnit - Layout.preferredHeight: Kirigami.Units.gridUnit - Layout.alignment: Qt.AlignTop - - source: replyVisible && reply.author.avatarMediaId ? "image://mxc/" + reply.author.avatarMediaId : "" - name: replyVisible ? reply.author.displayName : "H" - color: replyVisible ? reply.author.color : Kirigami.Theme.highlightColor - } - - ColumnLayout { - id: replyLayout + contentItem: RowLayout { Layout.fillWidth: true - QQC2.Label { - Layout.fillWidth: true - text: replyVisible ? reply.author.displayName : "" - color: replyVisible ? reply.author.color: null - elide: Text.ElideRight + Rectangle { + Layout.preferredWidth: Kirigami.Units.smallSpacing + Layout.fillHeight: true + + color: Kirigami.Theme.highlightColor } - QQC2.Label { + Kirigami.Avatar { + Layout.preferredWidth: Kirigami.Units.gridUnit + Layout.preferredHeight: Kirigami.Units.gridUnit + Layout.alignment: Qt.AlignTop + + source: replyVisible && reply.author.avatarMediaId ? "image://mxc/" + reply.author.avatarMediaId : "" + name: replyVisible ? reply.author.displayName : "H" + color: replyVisible ? reply.author.color : Kirigami.Theme.highlightColor + } + + ColumnLayout { + id: replyLayout Layout.fillWidth: true - text: replyVisible ? reply.display : "" - textFormat: Text.RichText - elide: Text.ElideRight - wrapMode: Text.WordWrap + + QQC2.Label { + Layout.fillWidth: true + text: replyVisible ? reply.author.displayName : "" + color: replyVisible ? reply.author.color: null + elide: Text.ElideRight + } + + QQC2.Label { + Layout.fillWidth: true + text: replyVisible ? reply.display : "" + textFormat: Text.RichText + elide: Text.ElideRight + wrapMode: Text.WordWrap + } } } } - diff --git a/imports/NeoChat/Page/RoomPage.qml b/imports/NeoChat/Page/RoomPage.qml index 987a2b2aa..465448f9c 100644 --- a/imports/NeoChat/Page/RoomPage.qml +++ b/imports/NeoChat/Page/RoomPage.qml @@ -203,6 +203,7 @@ Kirigami.ScrollablePage { anchors.fill: parent onClicked: openMessageContext(author, display, eventId, toolTip); } + onReplyClicked: goToEvent(eventID) innerObject: [ TextDelegate { Layout.fillWidth: true @@ -225,6 +226,7 @@ Kirigami.ScrollablePage { innerObject: MessageDelegate { Layout.fillWidth: true + onReplyClicked: goToEvent(eventID) innerObject: TextDelegate { Layout.fillWidth: true @@ -240,6 +242,7 @@ Kirigami.ScrollablePage { innerObject: MessageDelegate { Layout.fillWidth: true + onReplyClicked: goToEvent(eventID) innerObject: [ ImageDelegate { @@ -264,6 +267,7 @@ Kirigami.ScrollablePage { innerObject: MessageDelegate { Layout.fillWidth: true + onReplyClicked: goToEvent(eventID) innerObject: AudioDelegate { Layout.fillWidth: true @@ -279,6 +283,7 @@ Kirigami.ScrollablePage { innerObject: MessageDelegate { Layout.fillWidth: true + onReplyClicked: goToEvent(eventID) innerObject: AudioDelegate { Layout.fillWidth: true