diff --git a/ui/app/AppLayouts/Chat/ChatColumn.qml b/ui/app/AppLayouts/Chat/ChatColumn.qml index 249f53a21b..29bdaffce0 100644 --- a/ui/app/AppLayouts/Chat/ChatColumn.qml +++ b/ui/app/AppLayouts/Chat/ChatColumn.qml @@ -112,8 +112,8 @@ Item { applicationWindow.requestActivate() } - function positionAtMessage(messageId) { - stackLayoutChatMessages.children[stackLayoutChatMessages.currentIndex].message.scrollToMessage(messageId) + function positionAtMessage(messageId, isSearch = false) { + stackLayoutChatMessages.children[stackLayoutChatMessages.currentIndex].message.scrollToMessage(messageId, isSearch); } Timer { @@ -574,7 +574,7 @@ Item { target: chatsModel.messageView onSearchedMessageLoaded: { - positionAtMessage(messageId) + positionAtMessage(messageId, true); } onMessageNotificationPushed: function(messageId, communityId, chatId, msg, contentType, chatType, timestamp, identicon, username, hasMention, isAddedContact, channelName) { diff --git a/ui/app/AppLayouts/Chat/ChatColumn/ChatMessages.qml b/ui/app/AppLayouts/Chat/ChatColumn/ChatMessages.qml index 48855894a0..bc9f82115f 100644 --- a/ui/app/AppLayouts/Chat/ChatColumn/ChatMessages.qml +++ b/ui/app/AppLayouts/Chat/ChatColumn/ChatMessages.qml @@ -57,17 +57,30 @@ Item { } } - property var scrollToMessage: function (messageId) { - let item - for (let i = 0; i < messageListDelegate.count; i++) { - item = messageListDelegate.items.get(i) - if (item.model.messageId === messageId) { - chatLogView.positionViewAtIndex(i, ListView.Center); - if (appSettings.useCompactMode) { - chatLogView.itemAtIndex(i).startMessageFoundAnimation(); + property var scrollToMessage: function (messageId, isSearch = false) { + delayPositioningViewTimer.msgId = messageId; + delayPositioningViewTimer.isSearch = isSearch; + delayPositioningViewTimer.restart(); + } + + Timer { + id: delayPositioningViewTimer + interval: 1000 + property string msgId + property bool isSearch + onTriggered: { + let item + for (let i = 0; i < messages.rowCount(); i++) { + item = messageListDelegate.items.get(i); + if (item.model.messageId === msgId) { + chatLogView.positionViewAtIndex(i, ListView.Beginning); + if (appSettings.useCompactMode && isSearch) { + chatLogView.itemAtIndex(i).startMessageFoundAnimation(); + } } - return } + msgId = ""; + isSearch = false; } }