summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorMaximB ProductEngine <mberezhnoy@productengine.com>2012-11-06 22:44:22 +0200
committerMaximB ProductEngine <mberezhnoy@productengine.com>2012-11-06 22:44:22 +0200
commit990a8c6085b43cb0290a631b664b3160938b0536 (patch)
treea971290f947f1a0133bf909f1614b7263ae3e292 /indra
parent6220ce33700d011be5831b1bb480c81dec98665e (diff)
CHUI-462 (Torn-off Nearby Chat can't be closed)
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llimconversation.cpp4
-rw-r--r--indra/newview/llimfloatercontainer.cpp7
-rw-r--r--indra/newview/llimfloatercontainer.h2
-rw-r--r--indra/newview/llnearbychat.cpp22
-rw-r--r--indra/newview/llnearbychat.h2
5 files changed, 32 insertions, 5 deletions
diff --git a/indra/newview/llimconversation.cpp b/indra/newview/llimconversation.cpp
index b687e18cae..44cf300930 100644
--- a/indra/newview/llimconversation.cpp
+++ b/indra/newview/llimconversation.cpp
@@ -202,10 +202,6 @@ BOOL LLIMConversation::postBuild()
if (isChatMultiTab())
{
- if (mIsNearbyChat)
- {
- setCanClose(FALSE);
- }
result = LLFloater::postBuild();
}
else
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index f85aa9a353..c9cd013317 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -1475,4 +1475,11 @@ void LLIMFloaterContainer::openNearbyChat()
}
}
+void LLIMFloaterContainer::onNearbyChatClosed()
+{
+ // If nearby chat is the only remaining conversation and it is closed, close whole conversation floater as well
+ if (mConversationsItems.size() == 1)
+ closeFloater();
+}
+
// EOF
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index 05ea94019b..16218fc287 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -92,6 +92,8 @@ public:
LLUUID getSelectedSession() { return mSelectedSession; }
void setSelectedSession(LLUUID sessionID) { mSelectedSession = sessionID; }
+ void onNearbyChatClosed();
+
private:
typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t;
avatarID_panel_map_t mSessions;
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index d1c7c6bfd7..cf42fcb91a 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -293,7 +293,7 @@ void LLNearbyChat::setVisible(BOOL visible)
setFocus(visible);
}
-
+// virtual
void LLNearbyChat::onTearOffClicked()
{
LLIMConversation::onTearOffClicked();
@@ -311,6 +311,26 @@ void LLNearbyChat::onOpen(const LLSD& key)
showTranslationCheckbox(LLTranslate::isTranslationConfigured());
}
+// virtual
+void LLNearbyChat::onClose(bool app_quitting)
+{
+ // Override LLIMConversation::onClose() so that Nearby Chat is not removed from the conversation floater
+}
+
+// virtual
+void LLNearbyChat::onClickCloseBtn()
+{
+ if (!isTornOff())
+ return;
+ onTearOffClicked();
+
+ LLIMFloaterContainer *im_box = LLIMFloaterContainer::findInstance();
+ if (im_box)
+ {
+ im_box->onNearbyChatClosed();
+ }
+}
+
void LLNearbyChat::onChatFontChange(LLFontGL* fontp)
{
// Update things with the new font whohoo
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index b155fd3c26..a6c4439b1d 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -52,6 +52,7 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void onOpen(const LLSD& key);
+ /*virtual*/ void onClose(bool app_quitting);
/*virtual*/ void setFocus(BOOL focusFlag);
/*virtual*/ void setVisible(BOOL visible);
@@ -96,6 +97,7 @@ protected:
void onChatFontChange(LLFontGL* fontp);
/*virtual*/ void onTearOffClicked();
+ /*virtual*/ void onClickCloseBtn();
static LLWString stripChannelNumber(const LLWString &mesg, S32* channel);
EChatType processChatTypeTriggers(EChatType type, std::string &str);