From 35b6cc3260bd9a7b2811b2bb8847cd849a6c6077 Mon Sep 17 00:00:00 2001 From: jolavillette Date: Tue, 10 Mar 2026 06:17:28 +0100 Subject: [PATCH] gui: Fix GXS forum selection and display logic when filtering posts --- .../gui/gxsforums/GxsForumThreadWidget.cpp | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/retroshare-gui/src/gui/gxsforums/GxsForumThreadWidget.cpp b/retroshare-gui/src/gui/gxsforums/GxsForumThreadWidget.cpp index edd206f0c..578dc5146 100644 --- a/retroshare-gui/src/gui/gxsforums/GxsForumThreadWidget.cpp +++ b/retroshare-gui/src/gui/gxsforums/GxsForumThreadWidget.cpp @@ -1850,13 +1850,34 @@ void GxsForumThreadWidget::filterItems(const QString& text) QSortFilterProxyModel_setFilterRegularExpression(mThreadProxyModel, QString(RsGxsForumModel::FilterString)) ; if(!lst.empty()) + { ui->threadTreeWidget->expandAll(); + + if (!mThreadId.isNull()) + { + QModelIndex src_index = mThreadModel->getIndexOfMessage(mThreadId); + QModelIndex proxy_index = mThreadProxyModel->mapFromSource(src_index); + if (proxy_index.isValid()) + { + ui->threadTreeWidget->setCurrentIndex(proxy_index); + ui->threadTreeWidget->scrollTo(proxy_index); + } + else + { + blankPost(); + mThreadId.clear(); + mOrigThreadId.clear(); + } + } + } else { - // currentIndex() not on the clicked message, so not this way - // if (!mThreadId.isNull()) { - // an_index = mThreadProxyModel->mapToSource(ui->threadTreeWidget->currentIndex()); - // } ui->threadTreeWidget->collapseAll(); + + if (mThreadId.isNull()) + { + mThreadId = mOrigThreadId = mLastSelectedPosts[groupId()]; + } + if (!mThreadId.isNull()) { // ...but this one QModelIndex an_index = mThreadModel->getIndexOfMessage(mThreadId);