diff options
-rw-r--r-- | linden/indra/llui/llfloater.cpp | 31 | ||||
-rw-r--r-- | linden/indra/llui/llfloater.h | 1 | ||||
-rw-r--r-- | linden/indra/newview/llviewermenufile.cpp | 10 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml | 5 |
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 | ||
2174 | void 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 | |||
2174 | void LLFloaterView::closeAllChildren(bool app_quitting) | 2205 | void 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 | ||
402 | class 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 | |||
402 | class LLFileSaveTexture : public view_listener_t | 411 | class 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"> |