summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Lihatskiy <alihatskiy@productengine.com>2026-07-31 19:04:00 +0300
committerAndrey Lihatskiy <118752495+marchcat@users.noreply.github.com>2026-07-31 19:27:23 +0300
commita8b866c34850469463313afbf4411339bb3c8749 (patch)
treef8f2871754669220849172ece2fe6d037b448d90
parentf93c8694e39c0ec12d43b74c1c37c0a14da19d67 (diff)
#6070 Highlight ad-hoc conversation on creating
-rw-r--r--indra/newview/llfloaterimcontainer.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index f4a22c6728..0da56a12a9 100644
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -155,6 +155,11 @@ void LLFloaterIMContainer::sessionIDUpdated(const LLUUID& old_session_id, const
{
// The general strategy when a session id is modified is to delete all related objects and create them anew.
+ // The conversation floater can be active while participant widgets are selected.
+ // Preserve that state separately so the new conversation widget can be selected
+ // after the server replaces an outgoing ad-hoc session id.
+ const bool was_active = old_session_id == getSelectedSession();
+
// Note however that the LLFloaterIMSession has its session id updated through a call to sessionInitReplyReceived()
// and do not need to be deleted and recreated (trying this creates loads of problems). We do need however to suppress
// its related mSessions record as it's indexed with the wrong id.
@@ -167,6 +172,11 @@ void LLFloaterIMContainer::sessionIDUpdated(const LLUUID& old_session_id, const
// Create a new conversation with the new id
addConversationListItem(new_session_id, change_focus);
LLFloaterIMSessionTab::addToHost(new_session_id);
+
+ if (was_active)
+ {
+ selectConversationPair(new_session_id, true, false, true);
+ }
}