From 0981d741d03119904cb3bfad18c7a4b931b7c654 Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Mon, 3 May 2010 22:20:51 -0700 Subject: Added minimize all option to the File menu, works on everything but the snapshot window (decided that was a feature) --- linden/indra/llui/llfloater.cpp | 31 ++++++++++++++++++++++ linden/indra/llui/llfloater.h | 1 + linden/indra/newview/llviewermenufile.cpp | 10 +++++++ .../skins/default/xui/en-us/menu_viewer.xml | 5 ++++ 4 files changed, 47 insertions(+) diff --git a/linden/indra/llui/llfloater.cpp b/linden/indra/llui/llfloater.cpp index 5c46d54..f6451a1 100644 --- a/linden/indra/llui/llfloater.cpp +++ b/linden/indra/llui/llfloater.cpp @@ -2171,6 +2171,37 @@ void LLFloaterView::destroyAllChildren() LLView::deleteAllChildren(); } +void LLFloaterView::minimizeAllChildren() +{ + // iterate over a copy of the list, because closing windows will destroy + // some windows on the list. + child_list_t child_list = *(getChildList()); + + for (child_list_const_iter_t it = child_list.begin(); it != child_list.end(); ++it) + { + LLView* viewp = *it; + child_list_const_iter_t exists = std::find(getChildList()->begin(), getChildList()->end(), viewp); + if (exists == getChildList()->end()) + { + // this floater has already been removed + continue; + } + + LLFloater* floaterp = (LLFloater*)viewp; + + if (floaterp) + { + if (!floaterp->isDead() + && floaterp->getVisible() + && floaterp->isMinimizeable() + && !floaterp->isMinimized()) + { + floaterp->setMinimized(TRUE); + } + } + } +} + void LLFloaterView::closeAllChildren(bool app_quitting) { // iterate over a copy of the list, because closing windows will destroy diff --git a/linden/indra/llui/llfloater.h b/linden/indra/llui/llfloater.h index fa69258..f4c62f0 100644 --- a/linden/indra/llui/llfloater.h +++ b/linden/indra/llui/llfloater.h @@ -366,6 +366,7 @@ public: // attempt to close all floaters void closeAllChildren(bool app_quitting); BOOL allChildrenClosed(); + void minimizeAllChildren(); LLFloater* getFrontmost(); LLFloater* getBackmost(); diff --git a/linden/indra/newview/llviewermenufile.cpp b/linden/indra/newview/llviewermenufile.cpp index 8f47e0b..e3b9769 100644 --- a/linden/indra/newview/llviewermenufile.cpp +++ b/linden/indra/newview/llviewermenufile.cpp @@ -399,6 +399,15 @@ class LLFileCloseAllWindows : public view_listener_t } }; +class LLFileMinimizeAllWindows : public view_listener_t +{ + bool handleEvent(LLPointer event, const LLSD& userdata) + { + gFloaterView->minimizeAllChildren(); + return true; + } +}; + class LLFileSaveTexture : public view_listener_t { bool handleEvent(LLPointer event, const LLSD& userdata) @@ -1135,6 +1144,7 @@ void init_menu_file() (new LLFileCloseAllWindows())->registerListener(gMenuHolder, "File.CloseAllWindows"); (new LLFileEnableCloseWindow())->registerListener(gMenuHolder, "File.EnableCloseWindow"); (new LLFileEnableCloseAllWindows())->registerListener(gMenuHolder, "File.EnableCloseAllWindows"); + (new LLFileMinimizeAllWindows())->registerListener(gMenuHolder, "File.MinimizeAllWindows"); (new LLFileSaveTexture())->registerListener(gMenuHolder, "File.SaveTexture"); (new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot"); (new LLFileTakeSnapshotToDisk())->registerListener(gMenuHolder, "File.TakeSnapshotToDisk"); diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml index 28a08e5..425e2d4 100644 --- a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml +++ b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml @@ -52,6 +52,11 @@ + + + -- cgit v1.1