summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorAlexanderP ProductEngine <apaschenko@productengine.com>2012-09-24 18:57:04 +0300
committerAlexanderP ProductEngine <apaschenko@productengine.com>2012-09-24 18:57:04 +0300
commitf9e0831ba04f99335bfb494a22435446dc0852de (patch)
treef6a0bdcc4d76bab0e42f9dc6168d3f5447f58e1a /indra
parenta3b36bad821907f9b30891c45e7901b92366be52 (diff)
CHUI-355 FIXED Nearby chat entries do not appear in torn off nearby chat window when opening from a toast:
moved setIsSingleInstance() from constructor to postBuild() for prevent of a resetting it in buildFromXML(); implemented correct set of mReuseInstance; changed type of the key of LLIMConversation from LLUUID() to LLSD()
Diffstat (limited to 'indra')
-rw-r--r--indra/llui/llfloater.cpp5
-rw-r--r--indra/llui/llfloater.h7
-rw-r--r--indra/newview/llimconversation.cpp4
-rw-r--r--indra/newview/llimconversation.h2
-rw-r--r--indra/newview/llnearbychat.cpp7
-rw-r--r--indra/newview/llnearbychat.h4
6 files changed, 17 insertions, 12 deletions
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 029c47c726..58b17f74a8 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -240,6 +240,7 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p)
mTitle(p.title),
mShortTitle(p.short_title),
mSingleInstance(p.single_instance),
+ mIsReuseInitialized(p.reuse_instance.isProvided()),
mReuseInstance(p.reuse_instance.isProvided() ? p.reuse_instance : p.single_instance), // reuse single-instance floaters by default
mKey(key),
mCanTearOff(p.can_tear_off),
@@ -631,6 +632,10 @@ void LLFloater::setVisible( BOOL visible )
void LLFloater::setIsSingleInstance(BOOL is_single_instance)
{
mSingleInstance = is_single_instance;
+ if (!mIsReuseInitialized)
+ {
+ mReuseInstance = is_single_instance; // reuse single-instance floaters by default
+ }
}
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 4b738f88ea..07b79d5523 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -447,9 +447,10 @@ private:
LLUIString mTitle;
LLUIString mShortTitle;
- BOOL mSingleInstance; // TRUE if there is only ever one instance of the floater
- bool mReuseInstance; // true if we want to hide the floater when we close it instead of destroying it
- std::string mInstanceName; // Store the instance name so we can remove ourselves from the list
+ BOOL mSingleInstance; // TRUE if there is only ever one instance of the floater
+ bool mReuseInstance; // true if we want to hide the floater when we close it instead of destroying it
+ bool mIsReuseInitialized; // true if mReuseInstance already set from parameters
+ std::string mInstanceName; // Store the instance name so we can remove ourselves from the list
BOOL mCanTearOff;
BOOL mCanMinimize;
diff --git a/indra/newview/llimconversation.cpp b/indra/newview/llimconversation.cpp
index 3ca93b1b07..2ad7f9b193 100644
--- a/indra/newview/llimconversation.cpp
+++ b/indra/newview/llimconversation.cpp
@@ -42,13 +42,13 @@
const F32 REFRESH_INTERVAL = 0.2f;
-LLIMConversation::LLIMConversation(const LLUUID& session_id)
+LLIMConversation::LLIMConversation(const LLSD& session_id)
: LLTransientDockableFloater(NULL, true, session_id)
, mIsP2PChat(false)
, mExpandCollapseBtn(NULL)
, mTearOffBtn(NULL)
, mCloseBtn(NULL)
- , mSessionID(session_id)
+ , mSessionID(session_id.asUUID())
, mParticipantList(NULL)
, mChatHistory(NULL)
, mInputEditor(NULL)
diff --git a/indra/newview/llimconversation.h b/indra/newview/llimconversation.h
index bad5eaa99f..c54081d316 100644
--- a/indra/newview/llimconversation.h
+++ b/indra/newview/llimconversation.h
@@ -47,7 +47,7 @@ class LLIMConversation
public:
LOG_CLASS(LLIMConversation);
- LLIMConversation(const LLUUID& session_id);
+ LLIMConversation(const LLSD& session_id);
~LLIMConversation();
// reload all message with new settings of visual modes
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 76626bd5a6..71c4938ae9 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -88,7 +88,7 @@ static LLChatTypeTrigger sChatTypeTriggers[] = {
LLNearbyChat::LLNearbyChat(const LLSD& llsd)
-: LLIMConversation(llsd.asUUID()),
+: LLIMConversation(llsd),
//mOutputMonitor(NULL),
mSpeakerMgr(NULL),
mExpandedHeight(COLLAPSED_HEIGHT + EXPANDED_HEIGHT)
@@ -96,16 +96,15 @@ LLNearbyChat::LLNearbyChat(const LLSD& llsd)
mIsP2PChat = false;
mIsNearbyChat = true;
setIsChrome(TRUE);
- mKey = LLSD(LLUUID());
mSpeakerMgr = LLLocalSpeakerMgr::getInstance();
mSessionID = LLUUID();
- setName("nearby_chat");
- setIsSingleInstance(TRUE);
}
+
//virtual
BOOL LLNearbyChat::postBuild()
{
+ setIsSingleInstance(TRUE);
BOOL result = LLIMConversation::postBuild();
mInputEditor->setCommitCallback(boost::bind(&LLNearbyChat::onChatBoxCommit, this));
mInputEditor->setKeystrokeCallback(boost::bind(&onChatBoxKeystroke, _1, this));
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 648098113a..da1b58e326 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -45,8 +45,8 @@ class LLNearbyChat
{
public:
// constructor for inline chat-bars (e.g. hosted in chat history window)
- LLNearbyChat(const LLSD& key = LLSD());
- ~LLNearbyChat() {}
+ LLNearbyChat(const LLSD& key = LLSD(LLUUID()));
+ ~LLNearbyChat() {};
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);