all repos — fluxbox @ 4d0a0c9e114cbadf3d06f4a71d5043bda847c844

custom fork of the fluxbox windowmanager

add CloseAllWindows key action
thanks Adriano Dal Bosco - adbosco at users.sourceforge.net
simonb simonb
commit

4d0a0c9e114cbadf3d06f4a71d5043bda847c844

parent

553104ee1d53104fa0790a9793a7047c61dd073f

4 files changed, 35 insertions(+), 0 deletions(-)

jump to
M ChangeLogChangeLog

@@ -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.ccsrc/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.ccsrc/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.hhsrc/WorkspaceCmd.hh

@@ -104,4 +104,10 @@ public:

void execute(); }; + +class CloseAllWindowsCmd: public FbTk::Command { +public: + void execute(); +}; + #endif // WORKSPACECMD_HH