From 332d6c9782eb190779958d89d528b54c4b28fceb Mon Sep 17 00:00:00 2001 From: Tobias Fella Date: Wed, 15 Dec 2021 00:53:43 +0100 Subject: [PATCH] Minor improvements - Rename TextDelegate to RichLabel since it's not actually a delegate - Allow web search for whole messages --- .../Component/Timeline/MessageDelegate.qml | 13 +++++++++++-- .../Component/Timeline/ReplyComponent.qml | 3 +-- .../Timeline/{TextDelegate.qml => RichLabel.qml} | 16 ---------------- imports/NeoChat/Component/Timeline/qmldir | 2 +- .../Menu/Timeline/MessageDelegateContextMenu.qml | 8 +++++--- res.qrc | 2 +- 6 files changed, 19 insertions(+), 25 deletions(-) rename imports/NeoChat/Component/Timeline/{TextDelegate.qml => RichLabel.qml} (86%) diff --git a/imports/NeoChat/Component/Timeline/MessageDelegate.qml b/imports/NeoChat/Component/Timeline/MessageDelegate.qml index 1d338efae..94ce1e5d8 100644 --- a/imports/NeoChat/Component/Timeline/MessageDelegate.qml +++ b/imports/NeoChat/Component/Timeline/MessageDelegate.qml @@ -19,9 +19,18 @@ TimelineContainer { onReplyClicked: ListView.view.goToEvent(eventID) hoverComponent: hoverActions - innerObject: TextDelegate { + innerObject: RichLabel { isEmote: messageDelegate.isEmote Layout.maximumWidth: messageDelegate.bubbleMaxWidth - onRequestOpenMessageContext: openMessageContext(model, parent.selectedText) + + TapHandler { + acceptedButtons: Qt.RightButton + onTapped: openMessageContext(model, parent.selectedText) + } + + TapHandler { + acceptedButtons: Qt.LeftButton + onLongPressed: openMessageContext(model, parent.selectedText) + } } } diff --git a/imports/NeoChat/Component/Timeline/ReplyComponent.qml b/imports/NeoChat/Component/Timeline/ReplyComponent.qml index a4cdc7c50..fee7d1a9c 100644 --- a/imports/NeoChat/Component/Timeline/ReplyComponent.qml +++ b/imports/NeoChat/Component/Timeline/ReplyComponent.qml @@ -75,11 +75,10 @@ MouseArea { Component { id: textComponent - TextDelegate { + RichLabel { id: replyText textMessage: reply.display textFormat: Text.RichText - hasContextMenu: false width: Math.min(implicitWidth, bubbleMaxWidth - Kirigami.Units.largeSpacing * 3) x: Kirigami.Units.smallSpacing * 3 + replyAvatar.width } diff --git a/imports/NeoChat/Component/Timeline/TextDelegate.qml b/imports/NeoChat/Component/Timeline/RichLabel.qml similarity index 86% rename from imports/NeoChat/Component/Timeline/TextDelegate.qml rename to imports/NeoChat/Component/Timeline/RichLabel.qml index f365ede6a..5c21d41a5 100644 --- a/imports/NeoChat/Component/Timeline/TextDelegate.qml +++ b/imports/NeoChat/Component/Timeline/RichLabel.qml @@ -18,10 +18,6 @@ TextEdit { property string textMessage: model.display property bool spoilerRevealed: !hasSpoiler.test(textMessage) - property bool hasContextMenu: true - - signal requestOpenMessageContext() - ListView.onReused: Qt.binding(() => !hasSpoiler.test(textMessage)) Layout.fillWidth: Config.compactLayout @@ -77,16 +73,4 @@ a{ enabled: !parent.hoveredLink && !spoilerRevealed onTapped: spoilerRevealed = true } - - TapHandler { - acceptedButtons: Qt.RightButton - onTapped: openMessageContext(model, parent.selectedText) - enabled: hasContextMenu - } - - TapHandler { - acceptedButtons: Qt.LeftButton - onLongPressed: requestOpenMessageContext() - enabled: hasContextMenu - } } diff --git a/imports/NeoChat/Component/Timeline/qmldir b/imports/NeoChat/Component/Timeline/qmldir index afec3670d..e1691676e 100644 --- a/imports/NeoChat/Component/Timeline/qmldir +++ b/imports/NeoChat/Component/Timeline/qmldir @@ -1,6 +1,6 @@ module NeoChat.Component.Timeline +RichLabel 1.0 RichLabel.qml TimelineContainer 1.0 TimelineContainer.qml -TextDelegate 1.0 TextDelegate.qml StateDelegate 1.0 StateDelegate.qml SectionDelegate 1.0 SectionDelegate.qml ImageDelegate 1.0 ImageDelegate.qml diff --git a/imports/NeoChat/Menu/Timeline/MessageDelegateContextMenu.qml b/imports/NeoChat/Menu/Timeline/MessageDelegateContextMenu.qml index 3cd6bc4be..2516b4a70 100644 --- a/imports/NeoChat/Menu/Timeline/MessageDelegateContextMenu.qml +++ b/imports/NeoChat/Menu/Timeline/MessageDelegateContextMenu.qml @@ -74,13 +74,15 @@ Loader { QQC2.Menu { id: webshortcutmenu title: i18n("Search for '%1'", webshortcutmodel.trunkatedSearchText) - property bool isVisible: selectedText && selectedText.length > 0 && webshortcutmodel.enabled - Component.onCompleted: webshortcutmenu.parent.visible = isVisible + property bool isVisible: webshortcutmodel.enabled + Component.onCompleted: { + webshortcutmenu.parent.visible = isVisible + } onIsVisibleChanged: webshortcutmenu.parent.visible = isVisible Instantiator { model: WebShortcutModel { id: webshortcutmodel - selectedText: loadRoot.selectedText + selectedText: loadRoot.selectedText ? loadRoot.selectedText : loadRoot.message onOpenUrl: RoomManager.visitNonMatrix(url) } delegate: QQC2.MenuItem { diff --git a/res.qrc b/res.qrc index 2fd04b91a..c9052658f 100644 --- a/res.qrc +++ b/res.qrc @@ -33,7 +33,7 @@ imports/NeoChat/Component/Timeline/qmldir imports/NeoChat/Component/Timeline/ReplyComponent.qml imports/NeoChat/Component/Timeline/StateDelegate.qml - imports/NeoChat/Component/Timeline/TextDelegate.qml + imports/NeoChat/Component/Timeline/RichLabel.qml imports/NeoChat/Component/Timeline/TimelineContainer.qml imports/NeoChat/Component/Timeline/SectionDelegate.qml imports/NeoChat/Component/Timeline/VideoDelegate.qml