summaryrefslogtreecommitdiff
path: root/indra/llui/lldockablefloater.cpp
diff options
context:
space:
mode:
authorSamuel Kolb <skolb@lindenlab.com>2009-12-16 12:04:38 -0800
committerSamuel Kolb <skolb@lindenlab.com>2009-12-16 12:04:38 -0800
commitbedde40e9475f3772807b6fc48c3039d5993f578 (patch)
treeae615503b4c917667a5a0b752dd0a6eca2927e9b /indra/llui/lldockablefloater.cpp
parentd7533a2c0646826088d5c1f58c84604c0607b8aa (diff)
parent0c0cb6fd79d12016b32bb74ce0e9d2c656143902 (diff)
local 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();
}