From 2e25bf4f8afcf04b122f2422f17bb08ef49ef13e Mon Sep 17 00:00:00 2001 From: Jonathan Rainville Date: Wed, 21 Apr 2021 11:22:49 -0400 Subject: [PATCH] fix(CompactMessage): fix message hover getting stuck Fixes #2226 and #2196 --- .../Chat/ChatColumn/ChatMessages.qml | 19 +++++++++++++++++++ .../MessageComponents/ChatButtons.qml | 2 +- .../MessageComponents/CompactMessage.qml | 14 ++++++-------- .../MessageComponents/EmojiReactions.qml | 2 +- .../MessageComponents/MessageMouseArea.qml | 2 +- 5 files changed, 28 insertions(+), 11 deletions(-) diff --git a/ui/app/AppLayouts/Chat/ChatColumn/ChatMessages.qml b/ui/app/AppLayouts/Chat/ChatColumn/ChatMessages.qml index 616c0f898b..d17a7c929d 100644 --- a/ui/app/AppLayouts/Chat/ChatColumn/ChatMessages.qml +++ b/ui/app/AppLayouts/Chat/ChatColumn/ChatMessages.qml @@ -22,6 +22,25 @@ ScrollView { property real scrollY: chatLogView.visibleArea.yPosition * chatLogView.contentHeight property int newMessages: 0 + property string hoveredMessage + property string activeMessage + + function setHovered(messageId, hovered) { + if (hovered) { + hoveredMessage = messageId + } else if (hoveredMessage === messageId) { + hoveredMessage = "" + } + } + + function setMessageActive(messageId, active) { + if (active) { + activeMessage = messageId + } else if (activeMessage === messageId) { + activeMessage = "" + } + } + contentItem: chatLogView Layout.fillWidth: true Layout.fillHeight: true diff --git a/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/ChatButtons.qml b/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/ChatButtons.qml index b738399ca3..7129f95f7b 100644 --- a/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/ChatButtons.qml +++ b/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/ChatButtons.qml @@ -59,7 +59,7 @@ Rectangle { width: 32 height: 32 onClicked: { - isMessageActive = true + setMessageActive(messageId, true) clickMessage(false, false, false, null, true) messageContextMenu.x = buttonsContainer.x + buttonsContainer.width - messageContextMenu.width diff --git a/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/CompactMessage.qml b/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/CompactMessage.qml index 2b5b03afae..bcecb73404 100644 --- a/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/CompactMessage.qml +++ b/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/CompactMessage.qml @@ -12,8 +12,8 @@ Item { property int contentType: 2 property var container property bool isCurrentUser: false - property bool isHovered: false - property bool isMessageActive: false + property bool isHovered: typeof hoveredMessage !== "undefined" && hoveredMessage === messageId + property bool isMessageActive: typeof activeMessage !== "undefined" && activeMessage === messageId property bool headerRepeatCondition: (authorCurrentMsg !== authorPrevMsg || shouldRepeatHeader || dateGroupLbl.visible) id: root @@ -32,7 +32,7 @@ Item { ChatButtons { contentType: root.contentType parentIsHovered: root.isHovered - onHoverChanged: root.isHovered = hovered + onHoverChanged: hovered && setHovered(messageId, hovered) anchors.right: parent.right anchors.rightMargin: 20 anchors.top: messageContainer.top @@ -46,7 +46,7 @@ Item { Connections { enabled: root.isMessageActive target: messageContextMenu - onClosed: root.isMessageActive = false + onClosed: setMessageActive(messageId, false) } } } @@ -243,9 +243,7 @@ Item { HoverHandler { enabled: typeof messageContextMenu !== "undefined" && typeof profilePopupOpened !== "undefined" && !messageContextMenu.opened && !profilePopupOpened && !popupOpened - onHoveredChanged: { - root.isHovered = hovered; - } + onHoveredChanged: setHovered(messageId, hovered) } Loader { @@ -258,7 +256,7 @@ Item { sourceComponent: Component { EmojiReactions { - onHoverChanged: root.isHovered = hovered + onHoverChanged: setHovered(messageId, hovered) } } } diff --git a/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/EmojiReactions.qml b/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/EmojiReactions.qml index 528cc8604f..9f961bdccf 100644 --- a/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/EmojiReactions.qml +++ b/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/EmojiReactions.qml @@ -213,7 +213,7 @@ Item { onExited: addEmojiBtn.isHovered = false onClicked: { if (typeof isMessageActive !== "undefined") { - isMessageActive = true + setMessageActive(messageId, true) } clickMessage(false, false, false, null, true) } diff --git a/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/MessageMouseArea.qml b/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/MessageMouseArea.qml index 6df4566ac0..8a2bdf7bed 100644 --- a/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/MessageMouseArea.qml +++ b/ui/app/AppLayouts/Chat/ChatColumn/MessageComponents/MessageMouseArea.qml @@ -11,7 +11,7 @@ MouseArea { if(mouse.button & Qt.RightButton) { clickMessage(false, isSticker, false); if (typeof isMessageActive !== "undefined") { - isMessageActive = true + setMessageActive(messageId, true) } return; }