aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--linden/indra/llui/llfloater.cpp31
-rw-r--r--linden/indra/llui/llfloater.h1
-rw-r--r--linden/indra/newview/llviewermenufile.cpp10
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml5
4 files changed, 47 insertions, 0 deletions
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()
2171 LLView::deleteAllChildren(); 2171 LLView::deleteAllChildren();
2172} 2172}
2173 2173
2174void LLFloaterView::minimizeAllChildren()
2175{
2176 // iterate over a copy of the list, because closing windows will destroy
2177 // some windows on the list.
2178 child_list_t child_list = *(getChildList());
2179
2180 for (child_list_const_iter_t it = child_list.begin(); it != child_list.end(); ++it)
2181 {
2182 LLView* viewp = *it;
2183 child_list_const_iter_t exists = std::find(getChildList()->begin(), getChildList()->end(), viewp);
2184 if (exists == getChildList()->end())
2185 {
2186 // this floater has already been removed
2187 continue;
2188 }
2189
2190 LLFloater* floaterp = (LLFloater*)viewp;
2191
2192 if (floaterp)
2193 {
2194 if (!floaterp->isDead()
2195 && floaterp->getVisible()
2196 && floaterp->isMinimizeable()
2197 && !floaterp->isMinimized())
2198 {
2199 floaterp->setMinimized(TRUE);
2200 }
2201 }
2202 }
2203}
2204
2174void LLFloaterView::closeAllChildren(bool app_quitting) 2205void LLFloaterView::closeAllChildren(bool app_quitting)
2175{ 2206{
2176 // iterate over a copy of the list, because closing windows will destroy 2207 // 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:
366 // attempt to close all floaters 366 // attempt to close all floaters
367 void closeAllChildren(bool app_quitting); 367 void closeAllChildren(bool app_quitting);
368 BOOL allChildrenClosed(); 368 BOOL allChildrenClosed();
369 void minimizeAllChildren();
369 370
370 LLFloater* getFrontmost(); 371 LLFloater* getFrontmost();
371 LLFloater* getBackmost(); 372 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
399 } 399 }
400}; 400};
401 401
402class LLFileMinimizeAllWindows : public view_listener_t
403{
404 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
405 {
406 gFloaterView->minimizeAllChildren();
407 return true;
408 }
409};
410
402class LLFileSaveTexture : public view_listener_t 411class LLFileSaveTexture : public view_listener_t
403{ 412{
404 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata) 413 bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
@@ -1135,6 +1144,7 @@ void init_menu_file()
1135 (new LLFileCloseAllWindows())->registerListener(gMenuHolder, "File.CloseAllWindows"); 1144 (new LLFileCloseAllWindows())->registerListener(gMenuHolder, "File.CloseAllWindows");
1136 (new LLFileEnableCloseWindow())->registerListener(gMenuHolder, "File.EnableCloseWindow"); 1145 (new LLFileEnableCloseWindow())->registerListener(gMenuHolder, "File.EnableCloseWindow");
1137 (new LLFileEnableCloseAllWindows())->registerListener(gMenuHolder, "File.EnableCloseAllWindows"); 1146 (new LLFileEnableCloseAllWindows())->registerListener(gMenuHolder, "File.EnableCloseAllWindows");
1147 (new LLFileMinimizeAllWindows())->registerListener(gMenuHolder, "File.MinimizeAllWindows");
1138 (new LLFileSaveTexture())->registerListener(gMenuHolder, "File.SaveTexture"); 1148 (new LLFileSaveTexture())->registerListener(gMenuHolder, "File.SaveTexture");
1139 (new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot"); 1149 (new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot");
1140 (new LLFileTakeSnapshotToDisk())->registerListener(gMenuHolder, "File.TakeSnapshotToDisk"); 1150 (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 @@
52 <on_enable function="Object.EnableExport" /> 52 <on_enable function="Object.EnableExport" />
53 </menu_item_call> 53 </menu_item_call>
54 <menu_item_separator /> 54 <menu_item_separator />
55 <menu_item_call name="Minimize All Windows"
56 label="Minimize All Windows">
57 <on_click function="File.MinimizeAllWindows"
58 userdata="" />
59 </menu_item_call>
55 <menu_item_call name="Close Window" 60 <menu_item_call name="Close Window"
56 label="Close Window" 61 label="Close Window"
57 shortcut="control|W"> 62 shortcut="control|W">