From 42f0bd41ae1f7e88b1588c3f57b8163a861da548 Mon Sep 17 00:00:00 2001 From: csoler Date: Tue, 26 Aug 2025 20:28:59 +0200 Subject: [PATCH] fixed missing update of own status --- retroshare-gui/src/gui/FriendsDialog.cpp | 25 ++++++++++++++++++++++-- retroshare-gui/src/gui/FriendsDialog.h | 3 ++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/retroshare-gui/src/gui/FriendsDialog.cpp b/retroshare-gui/src/gui/FriendsDialog.cpp index 770abb37a..effab40cf 100644 --- a/retroshare-gui/src/gui/FriendsDialog.cpp +++ b/retroshare-gui/src/gui/FriendsDialog.cpp @@ -81,7 +81,8 @@ FriendsDialog::FriendsDialog(QWidget *parent) : MainPage(parent) //connect(NotifyQt::getInstance(), SIGNAL(chatMessageReceived(ChatMessage)), this, SLOT(chatMessageReceived(ChatMessage))); //connect(NotifyQt::getInstance(), SIGNAL(chatStatusChanged(ChatId,QString)), this, SLOT(chatStatusReceived(ChatId,QString))); - mEventHandlerId = 0; + mEventHandlerId_friends = 0; + mEventHandlerId_chat = 0; rsEvents->registerEventsHandler( [this](std::shared_ptr e) { @@ -99,7 +100,25 @@ FriendsDialog::FriendsDialog(QWidget *parent) : MainPage(parent) } , this ); - }, mEventHandlerId, RsEventType::CHAT_SERVICE ); + }, mEventHandlerId_chat, RsEventType::CHAT_SERVICE ); + + rsEvents->registerEventsHandler( [this](std::shared_ptr e) + { + RsQThreadUtils::postToObject([=]() + { + auto fe = dynamic_cast(e.get()); if(!fe) return; + + switch(fe->mEventCode) + { + case RsFriendListEventCode::OWN_STATUS_CHANGED: loadmypersonalstatus(); + break; + default: // OWN_AVATAR_CHANGED is handled in AvatarWidget + break; + } + + } + , this ); + }, mEventHandlerId_friends, RsEventType::FRIEND_LIST ); #else // def RS_DIRECT_CHAT ui.tabWidget->removeTab(ui.tabWidget->indexOf(ui.groupChatTab)); @@ -175,6 +194,8 @@ FriendsDialog::~FriendsDialog () if (this == instance) { instance = NULL; } + rsEvents->unregisterEventsHandler(mEventHandlerId_friends); + rsEvents->unregisterEventsHandler(mEventHandlerId_chat); } void FriendsDialog::activatePage(FriendsDialog::Page page) diff --git a/retroshare-gui/src/gui/FriendsDialog.h b/retroshare-gui/src/gui/FriendsDialog.h index af85b6f76..968bc57f9 100644 --- a/retroshare-gui/src/gui/FriendsDialog.h +++ b/retroshare-gui/src/gui/FriendsDialog.h @@ -94,7 +94,8 @@ private: /** Qt Designer generated object */ Ui::FriendsDialog ui; #ifdef RS_DIRECT_CHAT - RsEventsHandlerId_t mEventHandlerId ; + RsEventsHandlerId_t mEventHandlerId_friends ; + RsEventsHandlerId_t mEventHandlerId_chat ; #endif };