diff options
author | Steve Bennetts <steve@lindenlab.com> | 2009-11-17 12:37:00 -0800 |
---|---|---|
committer | Steve Bennetts <steve@lindenlab.com> | 2009-11-17 12:37:00 -0800 |
commit | 3b3fa1c0ab74546538a02a69098afc99eddd49f5 (patch) | |
tree | eb9f5c03f4e925aabe0e37b5d5d34e215a6daaba /indra/llui | |
parent | 2365dbcd459b37942ddacbcb7010232113a126c1 (diff) | |
parent | c76ab6c4b7384e34a4f32f2fa820b46f6373cdc3 (diff) |
Merge from product-engine
Diffstat (limited to 'indra/llui')
-rw-r--r-- | indra/llui/lldockablefloater.cpp | 23 | ||||
-rw-r--r-- | indra/llui/lldockablefloater.h | 1 | ||||
-rw-r--r-- | indra/llui/lldockcontrol.cpp | 5 | ||||
-rw-r--r-- | indra/llui/lldockcontrol.h | 1 | ||||
-rw-r--r-- | indra/llui/lllayoutstack.cpp | 13 | ||||
-rw-r--r-- | indra/llui/lllayoutstack.h | 8 |
6 files changed, 39 insertions, 12 deletions
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp index c3dd4ae647..9a2f2ab4d3 100644 --- a/indra/llui/lldockablefloater.cpp +++ b/indra/llui/lldockablefloater.cpp @@ -136,21 +136,10 @@ void LLDockableFloater::setVisible(BOOL 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() @@ -217,6 +206,16 @@ void LLDockableFloater::draw() LLFloater::draw(); } +void LLDockableFloater::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + if (isDocked()) + { + setDocked(false); + } + + LLFloater::reshape(width, height, called_from_parent); +} + void LLDockableFloater::setDockControl(LLDockControl* dockControl) { mDockControl.reset(dockControl); diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h index 46491d8a29..e5f94dca91 100644 --- a/indra/llui/lldockablefloater.h +++ b/indra/llui/lldockablefloater.h @@ -65,6 +65,7 @@ public: /* virtula */BOOL postBuild(); /* virtual */void setDocked(bool docked, bool pop_on_undock = true); /* virtual */void draw(); + /* virtual */void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); /** * If descendant class overrides setVisible() then it must still invoke its diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index 045505af5b..456a2925a3 100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp @@ -266,6 +266,11 @@ void LLDockControl::off() mEnabled = false; } +void LLDockControl::forceRecalculatePosition() +{ + mRecalculateDocablePosition = true; +} + void LLDockControl::drawToungue() { if (mEnabled) diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h index eaedb4c307..30a45bedc7 100644 --- a/indra/llui/lldockcontrol.h +++ b/indra/llui/lldockcontrol.h @@ -63,6 +63,7 @@ public: public: void on(); void off(); + void forceRecalculatePosition(); void setDock(LLView* dockWidget); LLView* getDock() { diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 14a6ddb7e0..1fb618adee 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -413,6 +413,19 @@ void LLLayoutStack::updatePanelAutoResize(const std::string& panel_name, BOOL au } } +bool LLLayoutStack::getPanelMinSize(const std::string& panel_name, S32* min_widthp, S32* min_heightp) +{ + LayoutPanel* panel = findEmbeddedPanelByName(panel_name); + + if (panel) + { + if (min_widthp) *min_widthp = panel->mMinWidth; + if (min_heightp) *min_heightp = panel->mMinHeight; + } + + return NULL != panel; +} + static LLFastTimer::DeclareTimer FTM_UPDATE_LAYOUT("Update LayoutStacks"); void LLLayoutStack::updateLayout(BOOL force_resize) { diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index 9cbcb285dc..abd5436018 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -82,6 +82,14 @@ public: void updatePanelAutoResize(const std::string& panel_name, BOOL auto_resize); + /** + * Gets minimal width and/or height of the specified by name panel. + * + * If it is necessary to get only the one dimension pass NULL for another one. + * @returns true if specified by panel_name internal panel exists, false otherwise. + */ + bool getPanelMinSize(const std::string& panel_name, S32* min_widthp, S32* min_heightp); + void updateLayout(BOOL force_resize = FALSE); static void updateClass(); |