summaryrefslogtreecommitdiff
path: root/indra/llui/lldockablefloater.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llui/lldockablefloater.cpp')
-rw-r--r--indra/llui/lldockablefloater.cpp46
1 files changed, 26 insertions, 20 deletions
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp
index f56cb2eee7..3d8670fef2 100644
--- a/indra/llui/lldockablefloater.cpp
+++ b/indra/llui/lldockablefloater.cpp
@@ -54,8 +54,10 @@ void LLDockableFloater::init(LLDockableFloater* thiz)
LLDockableFloater::LLDockableFloater(LLDockControl* dockControl,
const LLSD& key, const Params& params) :
LLFloater(key, params), mDockControl(dockControl), mUniqueDocking(true)
+ , mOverlapsScreenChannel(false)
{
init(this);
+ mUseTongue = true;
}
LLDockableFloater::LLDockableFloater(LLDockControl* dockControl, bool uniqueDocking,
@@ -63,6 +65,14 @@ LLDockableFloater::LLDockableFloater(LLDockControl* dockControl, bool uniqueDock
LLFloater(key, params), mDockControl(dockControl), mUniqueDocking(uniqueDocking)
{
init(this);
+ mUseTongue = true;
+}
+
+LLDockableFloater::LLDockableFloater(LLDockControl* dockControl, bool uniqueDocking,
+ bool useTongue, const LLSD& key, const Params& params) :
+ LLFloater(key, params), mDockControl(dockControl), mUseTongue(useTongue), mUniqueDocking(uniqueDocking)
+{
+ init(this);
}
LLDockableFloater::~LLDockableFloater()
@@ -85,7 +95,7 @@ void LLDockableFloater::toggleInstance(const LLSD& sdname)
LLDockableFloater* instance =
dynamic_cast<LLDockableFloater*> (LLFloaterReg::findInstance(name));
// if floater closed or docked
- if (instance == NULL || instance != NULL && instance->isDocked())
+ if (instance == NULL || (instance && instance->isDocked()))
{
LLFloaterReg::toggleInstance(name, key);
// restore button toggle state
@@ -98,8 +108,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);
+ }
}
}
@@ -127,26 +144,19 @@ void LLDockableFloater::setVisible(BOOL visible)
mDockControl.get()->repositionDockable();
}
+ if (visible)
+ {
+ LLFloater::setFrontmost(getAutoFocus());
+ }
LLFloater::setVisible(visible);
}
void LLDockableFloater::setMinimized(BOOL minimize)
{
- if(minimize && isDocked())
+ if(minimize)
{
setVisible(FALSE);
}
-
- if (minimize)
- {
- setCanDock(false);
- }
- else if (!minimize && mDockControl.get() != NULL && mDockControl.get()->isDockVisible())
- {
- setCanDock(true);
- }
-
- LLFloater::setMinimized(minimize);
}
LLView * LLDockableFloater::getDockWidget()
@@ -192,10 +202,6 @@ void LLDockableFloater::setDocked(bool docked, bool pop_on_undock)
translate(0, UNDOCK_LEAP_HEIGHT);
}
}
- else
- {
- docked = false;
- }
LLFloater::setDocked(docked, pop_on_undock);
}
@@ -216,7 +222,7 @@ void LLDockableFloater::draw()
void LLDockableFloater::setDockControl(LLDockControl* dockControl)
{
mDockControl.reset(dockControl);
- setDocked(mDockControl.get() != NULL && mDockControl.get()->isDockVisible());
+ setDocked(isDocked());
}
const LLUIImagePtr& LLDockableFloater::getDockTongue()