[network/ruqola] src/core/model: Clean up mHighlightSearchStringIndexInMessage

Laurent Montel <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 1229bf8515b2dcc5e0571d596e2d08fa3d13434a by Laurent Montel.
Committed on 13/08/2026 at 18:31.
Pushed by mlaurent into branch 'master'.

Clean up mHighlightSearchStringIndexInMessage

M  +11   -7    src/core/model/messagesmodel.cpp

https://invent.kde.org/network/ruqola/-/commit/1229bf8515b2dcc5e0571d596e2d08fa3d13434a

diff --git a/src/core/model/messagesmodel.cpp b/src/core/model/messagesmodel.cpp
index f46548f6ad..68c380d60d 100644
--- a/src/core/model/messagesmodel.cpp
+++ b/src/core/model/messagesmodel.cpp
@@ -678,6 +678,7 @@ bool MessagesModel::isEmpty() const
 void MessagesModel::clear()
 {
     mSearchText.clear();
+    mHighlightSearchStringIndexInMessage.clear();
     if (rowCount() != 0) {
         beginResetModel();
         mAllMessages.clear();
@@ -822,10 +823,13 @@ MessagesModel::HighlightSearchStringIndexInMessage MessagesModel::highlightSearc
 void MessagesModel::setHighlightSearchStringIndexInMessage(const HighlightSearchStringIndexInMessage &newHighlightSearchStringIndexInMessage)
 {
     if (mHighlightSearchStringIndexInMessage != newHighlightSearchStringIndexInMessage) {
+        // The message losing the highlight has to be repainted too, its converted text changes as well.
+        const QModelIndex previousIndex = indexForMessage(mHighlightSearchStringIndexInMessage.messageId);
         mHighlightSearchStringIndexInMessage = newHighlightSearchStringIndexInMessage;
-        auto it = findMessage(mHighlightSearchStringIndexInMessage.messageId);
-        if (it != mAllMessages.cend()) {
-            const QModelIndex index = indexForMessage(mHighlightSearchStringIndexInMessage.messageId);
+        if (previousIndex.isValid()) {
+            Q_EMIT dataChanged(previousIndex, previousIndex);
+        }
+        if (const QModelIndex index = indexForMessage(mHighlightSearchStringIndexInMessage.messageId); index.isValid() && index != previousIndex) {
             Q_EMIT dataChanged(index, index);
         }
     }
@@ -833,12 +837,12 @@ void MessagesModel::setHighlightSearchStringIndexInMessage(const HighlightSearch
 
 void MessagesModel::clearHighlightSearchStringIndexInMessage()
 {
-    auto it = findMessage(mHighlightSearchStringIndexInMessage.messageId);
-    if (it != mAllMessages.cend()) {
-        const QModelIndex index = indexForMessage(mHighlightSearchStringIndexInMessage.messageId);
+    const QModelIndex index = indexForMessage(mHighlightSearchStringIndexInMessage.messageId);
+    // Clear before emitting, so that anything reacting to dataChanged converts the text without the highlight.
+    mHighlightSearchStringIndexInMessage.clear();
+    if (index.isValid()) {
         Q_EMIT dataChanged(index, index);
     }
-    mHighlightSearchStringIndexInMessage.clear();
 }
 
 void MessagesModel::updateTextToSpeech(const QByteArray &messageId, bool inProgress)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.