diff --git a/retroshare-gui/src/gui/gxsforums/GxsForumThreadWidget.cpp b/retroshare-gui/src/gui/gxsforums/GxsForumThreadWidget.cpp index e37f783cb..e71a400b2 100644 --- a/retroshare-gui/src/gui/gxsforums/GxsForumThreadWidget.cpp +++ b/retroshare-gui/src/gui/gxsforums/GxsForumThreadWidget.cpp @@ -415,16 +415,12 @@ void GxsForumThreadWidget::handleEvent_main_thread(std::shared_ptrmForumGroupId == mForumGroup.mMeta.mGroupId) - { - // Toggle subscribe flag locally and refresh UI without GXS request - // to avoid concurrent request with parent dialog's tree rebuild - if(IS_GROUP_SUBSCRIBED(mForumGroup.mMeta.mSubscribeFlags)) - mForumGroup.mMeta.mSubscribeFlags &= ~GXS_SERV::GROUP_SUBSCRIBE_SUBSCRIBED; - else - mForumGroup.mMeta.mSubscribeFlags |= GXS_SERV::GROUP_SUBSCRIBE_SUBSCRIBED; - + // Re-read the group instead of guessing the new flag by flipping + // the current one: the event says the status changed, not that it + // was toggled, and a wrong guess makes the widget believe the + // forum is unsubscribed, which silently disables marking posts + // read or unread until the group data comes back. updateGroupData(); - } break; default: break;