summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llui/llnotifications.cpp3
-rw-r--r--indra/llui/llnotifications.h5
-rw-r--r--indra/newview/llfloaterimcontainer.cpp8
-rw-r--r--indra/newview/llfloaterimcontainer.h1
-rw-r--r--indra/newview/llfloaterimsession.cpp4
-rw-r--r--indra/newview/llfloaterimsession.h2
6 files changed, 18 insertions, 5 deletions
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index a5492b46f7..ea52bee184 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -1852,6 +1852,7 @@ void LLPostponedNotification::fetchAvatarName(const LLUUID& id)
{
mAvatarNameCacheConnection.disconnect();
}
+
mAvatarNameCacheConnection = LLAvatarNameCache::get(id, boost::bind(&LLPostponedNotification::onAvatarNameCache, this, _1, _2));
}
}
@@ -1860,7 +1861,7 @@ void LLPostponedNotification::onAvatarNameCache(const LLUUID& agent_id,
const LLAvatarName& av_name)
{
mAvatarNameCacheConnection.disconnect();
-
+
std::string name = av_name.getCompleteName();
// from PE merge - we should figure out if this is the right thing to do
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index 236c2a42d1..e02c58de44 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -92,6 +92,7 @@
#include "llevents.h"
#include "llfunctorregistry.h"
#include "llinitparam.h"
+#include "llmortician.h"
#include "llnotificationptr.h"
#include "llpointer.h"
#include "llrefcount.h"
@@ -981,7 +982,7 @@ private:
* 1 create class derived from LLPostponedNotification;
* 2 call LLPostponedNotification::add method;
*/
-class LLPostponedNotification
+class LLPostponedNotification : public LLMortician
{
public:
/**
@@ -1014,7 +1015,7 @@ private:
void cleanup()
{
- delete this;
+ die();
}
protected:
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index dd7e28dc71..cc23449449 100644
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -239,6 +239,9 @@ BOOL LLFloaterIMContainer::postBuild()
// Init the sort order now that the root had been created
setSortOrder(LLConversationSort(gSavedSettings.getU32("ConversationSortOrder")));
+ // Keep the xml set title around for when we have to overwrite it
+ mGeneralTitle = getTitle();
+
mInitialized = true;
// Add callbacks:
@@ -503,10 +506,10 @@ void LLFloaterIMContainer::draw()
collapseMessagesPane(true);
}
- //Update moderator options visibility
const LLConversationItem *current_session = getCurSelectedViewModelItem();
if (current_session)
{
+ // Update moderator options visibility
LLFolderViewModelItemCommon::child_list_t::const_iterator current_participant_model = current_session->getChildrenBegin();
LLFolderViewModelItemCommon::child_list_t::const_iterator end_participant_model = current_session->getChildrenEnd();
while (current_participant_model != end_participant_model)
@@ -516,6 +519,9 @@ void LLFloaterIMContainer::draw()
current_participant_model++;
}
+ // Update floater's title as required by the currently selected session or use the default title
+ LLFloaterIMSession * conversation_floaterp = LLFloaterIMSession::findInstance(current_session->getUUID());
+ setTitle(conversation_floaterp && conversation_floaterp->needsTitleOverwrite() ? conversation_floaterp->getTitle() : mGeneralTitle);
}
LLFloater::draw();
diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h
index 85d950c58b..06af6c7b51 100644
--- a/indra/newview/llfloaterimcontainer.h
+++ b/indra/newview/llfloaterimcontainer.h
@@ -169,6 +169,7 @@ private:
bool mInitialized;
LLUUID mSelectedSession;
+ std::string mGeneralTitle;
// Conversation list implementation
public:
diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp
index d36b138c21..a09dc1914f 100644
--- a/indra/newview/llfloaterimsession.cpp
+++ b/indra/newview/llfloaterimsession.cpp
@@ -70,6 +70,7 @@ LLFloaterIMSession::LLFloaterIMSession(const LLUUID& session_id)
mShouldSendTypingState(false),
mMeTyping(false),
mOtherTyping(false),
+ mSessionNameUpdatedForTyping(false),
mTypingTimer(),
mTypingTimeoutTimer(),
mPositioned(false),
@@ -556,6 +557,7 @@ void LLFloaterIMSession::updateSessionName(const std::string& name)
LLFloaterIMSessionTab::updateSessionName(name);
mTypingStart.setArg("[NAME]", name);
setTitle (mOtherTyping ? mTypingStart.getString() : name);
+ mSessionNameUpdatedForTyping = mOtherTyping;
}
}
@@ -705,7 +707,7 @@ BOOL LLFloaterIMSession::getVisible()
// getVisible() returns TRUE when Tabbed IM window is minimized.
visible = is_active && !im_container->isMinimized()
&& im_container->getVisible();
- }
+ }
}
else
{
diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h
index 6a2f4b29eb..2049cedfd7 100644
--- a/indra/newview/llfloaterimsession.h
+++ b/indra/newview/llfloaterimsession.h
@@ -132,6 +132,7 @@ public:
static boost::signals2::connection setIMFloaterShowedCallback(const floater_showed_signal_t::slot_type& cb);
static floater_showed_signal_t sIMFloaterShowedSignal;
+ bool needsTitleOverwrite() { return mSessionNameUpdatedForTyping && mOtherTyping; }
private:
/*virtual*/ void refresh();
@@ -182,6 +183,7 @@ private:
bool mShouldSendTypingState;
LLFrameTimer mTypingTimer;
LLFrameTimer mTypingTimeoutTimer;
+ bool mSessionNameUpdatedForTyping;
bool mSessionInitialized;
LLSD mQueuedMsgsForInit;