summaryrefslogtreecommitdiff
path: root/indra/llui
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llui')
-rw-r--r--indra/llui/lldockablefloater.cpp25
-rw-r--r--indra/llui/lldockablefloater.h1
2 files changed, 20 insertions, 6 deletions
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp
index d0789d6502..5243f67a76 100644
--- a/indra/llui/lldockablefloater.cpp
+++ b/indra/llui/lldockablefloater.cpp
@@ -53,21 +53,34 @@ BOOL LLDockableFloater::postBuild()
void LLDockableFloater::setDocked(bool docked, bool pop_on_undock)
{
- if (docked)
+ if (mDockControl.get() != NULL)
{
- mDockControl.get()->on();
+ if (docked)
+ {
+ mDockControl.get()->on();
+ }
+ else
+ {
+ mDockControl.get()->off();
+ }
}
- else
+
+ if (!docked && pop_on_undock)
{
- mDockControl.get()->off();
+ // visually pop up a little bit to emphasize the undocking
+ translate(0, UNDOCK_LEAP_HEIGHT);
}
+
LLFloater::setDocked(docked, pop_on_undock);
}
void LLDockableFloater::draw()
{
- mDockControl.get()->repositionDockable();
- mDockControl.get()->drawToungue();
+ if (mDockControl.get() != NULL)
+ {
+ mDockControl.get()->repositionDockable();
+ mDockControl.get()->drawToungue();
+ }
LLFloater::draw();
}
diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h
index 5ece78a925..da86889c33 100644
--- a/indra/llui/lldockablefloater.h
+++ b/indra/llui/lldockablefloater.h
@@ -43,6 +43,7 @@
*/
class LLDockableFloater : public LLFloater
{
+ static const U32 UNDOCK_LEAP_HEIGHT = 12;
public:
LOG_CLASS(LLDockableFloater);
LLDockableFloater(LLDockControl* dockControl, const LLSD& key, const Params& params = getDefaultParams());