add CloseAllWindows key action thanks Adriano Dal Bosco - adbosco at users.sourceforge.net
simonb simonb
4 files changed,
35 insertions(+),
0 deletions(-)
M
ChangeLog
→
ChangeLog
@@ -1,6 +1,11 @@
(Format: Year/Month/Day) Changes for 0.9.16: *06/04/16: + * Add "CloseAllWindows" key binding + (thanks Adriano Dal Bosco - adbosco at users.sourceforge.net) + - Useful to trigger all "close" actions before flux exit (or other) + to catch any pending file saves etc... + WorkspaceCmd.hh/cc FbCommandFactory.cc * Fix all warnings with (gcc 3.4.6) -Wall, mainly sign comparisons (Simon) ClientPattern.cc Container.cc FbWinFrame.cc IconButton.cc IconbarTool.cc ScreenPlacement.hh ScreenResources.cc ToolFactory.cc Toolbar.cc
M
src/FbCommandFactory.cc
→
src/FbCommandFactory.cc
@@ -51,6 +51,7 @@ const char* commands[] = {
"arrangewindows", "bindkey", "close", + "closeallwindows", "commanddialog", "deiconify", "detachclient",@@ -310,6 +311,8 @@ else if (command == "lowerlayer")
return new CurrentWindowCmd(&FluxboxWindow::lowerLayer); else if (command == "close") return new CurrentWindowCmd(&FluxboxWindow::close); + else if (command == "closeallwindows") + return new CloseAllWindowsCmd(); else if (command == "shade" || command == "shadewindow") return new CurrentWindowCmd(&FluxboxWindow::shade); else if (command == "stick" || command == "stickwindow")
M
src/WorkspaceCmd.cc
→
src/WorkspaceCmd.cc
@@ -238,3 +238,24 @@ std::for_each(windows.begin(),
windows.end(), std::mem_fun(&FluxboxWindow::iconify)); } + +void CloseAllWindowsCmd::execute() { + BScreen *screen = Fluxbox::instance()->mouseScreen(); + if (screen == 0) + return; + + BScreen::Workspaces::iterator workspace_it = screen->getWorkspacesList().begin(); + BScreen::Workspaces::iterator workspace_it_end = screen->getWorkspacesList().end(); + for (; workspace_it != workspace_it_end; ++workspace_it) { + Workspace::Windows windows((*workspace_it)->windowList()); + std::for_each(windows.begin(), + windows.end(), + std::mem_fun(&FluxboxWindow::close)); + } + BScreen::Icons::iterator icon_it = screen->iconList().begin(); + BScreen::Icons::iterator icon_it_end = screen->iconList().end(); + for (; icon_it != icon_it_end; ++icon_it ) { + (*icon_it)->close(); + } + +}
M
src/WorkspaceCmd.hh
→
src/WorkspaceCmd.hh
@@ -104,4 +104,10 @@ public:
void execute(); }; + +class CloseAllWindowsCmd: public FbTk::Command { +public: + void execute(); +}; + #endif // WORKSPACECMD_HH