summaryrefslogtreecommitdiff
path: root/indra/llui/lldockablefloater.cpp
diff options
context:
space:
mode:
authorRunitai <>2009-12-15 16:53:29 -0600
committerRunitai <>2009-12-15 16:53:29 -0600
commit1f8ad2651d82b81fc85d91f3d48663430427537e (patch)
treec4ed86401b803aefdbfaa9eef6f87ecd5567c58d /indra/llui/lldockablefloater.cpp
parenta81a2f19b21134fb52df1e1a735988a04aa0688a (diff)
parent88a146e0bb95476792d0fabedab6d7a41c350949 (diff)
Merge
Diffstat (limited to 'indra/llui/lldockablefloater.cpp')
-rw-r--r--indra/llui/lldockablefloater.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp
index 9c69e4f2b6..9dc7861992 100644
--- a/indra/llui/lldockablefloater.cpp
+++ b/indra/llui/lldockablefloater.cpp
@@ -38,6 +38,8 @@
//static
LLHandle<LLFloater> LLDockableFloater::sInstanceHandle;
+static const std::string VOICE_FLOATER("floater_voice_controls"), IM_FLOATER("panel_im");
+
//static
void LLDockableFloater::init(LLDockableFloater* thiz)
{
@@ -98,8 +100,15 @@ void LLDockableFloater::toggleInstance(const LLSD& sdname)
else if (instance != NULL)
{
instance->setMinimized(FALSE);
- instance->setVisible(TRUE);
- gFloaterView->bringToFront(instance);
+ if (instance->getVisible())
+ {
+ instance->setVisible(FALSE);
+ }
+ else
+ {
+ instance->setVisible(TRUE);
+ gFloaterView->bringToFront(instance);
+ }
}
}
@@ -107,9 +116,11 @@ void LLDockableFloater::resetInstance()
{
if (mUniqueDocking && sInstanceHandle.get() != this)
{
- if (sInstanceHandle.get() != NULL && sInstanceHandle.get()->isDocked())
+ if (sInstanceHandle.get() != NULL && sInstanceHandle.get()->isDocked()
+ && (getName() != VOICE_FLOATER || sInstanceHandle.get()->getName() != IM_FLOATER)
+ && (getName() != IM_FLOATER || sInstanceHandle.get()->getName() != VOICE_FLOATER))
{
- sInstanceHandle.get()->setVisible(FALSE);
+ sInstanceHandle.get()->setVisible(FALSE);
}
sInstanceHandle = getHandle();
}