summaryrefslogtreecommitdiff
path: root/indra/newview/llimfloater.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llimfloater.cpp')
-rw-r--r--indra/newview/llimfloater.cpp35
1 files changed, 33 insertions, 2 deletions
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 2bc07d0c27..7dc21e6e23 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -90,8 +90,20 @@ LLIMFloater::LLIMFloater(const LLUUID& session_id)
case IM_SESSION_CONFERENCE_START:
mFactoryMap["panel_im_control_panel"] = LLCallbackMap(createPanelAdHocControl, this);
break;
- default:
+ case IM_SESSION_GROUP_START:
mFactoryMap["panel_im_control_panel"] = LLCallbackMap(createPanelGroupControl, this);
+ break;
+ case IM_SESSION_INVITE:
+ if (gAgent.isInGroup(mSessionID))
+ {
+ mFactoryMap["panel_im_control_panel"] = LLCallbackMap(createPanelGroupControl, this);
+ }
+ else
+ {
+ mFactoryMap["panel_im_control_panel"] = LLCallbackMap(createPanelAdHocControl, this);
+ }
+ break;
+ default: break;
}
}
}
@@ -415,6 +427,7 @@ void LLIMFloater::setDocked(bool docked, bool pop_on_undock)
if(channel)
{
channel->updateShowToastsState();
+ channel->redrawToasts();
}
}
@@ -439,6 +452,7 @@ void LLIMFloater::setVisible(BOOL visible)
if(channel)
{
channel->updateShowToastsState();
+ channel->redrawToasts();
}
if (visible && mChatHistory && mInputEditor)
@@ -455,7 +469,7 @@ bool LLIMFloater::toggle(const LLUUID& session_id)
if(!isChatMultiTab())
{
LLIMFloater* floater = LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id);
- if (floater && floater->getVisible() && floater->isDocked())
+ if (floater && floater->getVisible())
{
// clicking on chiclet to close floater just hides it to maintain existing
// scroll/text entry state
@@ -933,3 +947,20 @@ void LLIMFloater::initIMFloater()
// init chat window type before user changed it in preferences
isChatMultiTab();
}
+
+//static
+void LLIMFloater::sRemoveTypingIndicator(const LLSD& data)
+{
+ LLUUID session_id = data["session_id"];
+ if (session_id.isNull()) return;
+
+ LLUUID from_id = data["from_id"];
+ if (gAgentID == from_id || LLUUID::null == from_id) return;
+
+ LLIMFloater* floater = LLIMFloater::findInstance(session_id);
+ if (!floater) return;
+
+ if (IM_NOTHING_SPECIAL != floater->mDialog) return;
+
+ floater->removeTypingIndicator();
+}