aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonb <simonb>2006-04-16 11:29:38 (GMT)
committersimonb <simonb>2006-04-16 11:29:38 (GMT)
commit4d0a0c9e114cbadf3d06f4a71d5043bda847c844 (patch)
treec4cfc295858dcb23cc9637a413e7a75f4be6c14e
parent553104ee1d53104fa0790a9793a7047c61dd073f (diff)
downloadfluxbox_pavel-4d0a0c9e114cbadf3d06f4a71d5043bda847c844.zip
fluxbox_pavel-4d0a0c9e114cbadf3d06f4a71d5043bda847c844.tar.bz2
add CloseAllWindows key action
thanks Adriano Dal Bosco - adbosco at users.sourceforge.net
-rw-r--r--ChangeLog5
-rw-r--r--src/FbCommandFactory.cc3
-rw-r--r--src/WorkspaceCmd.cc21
-rw-r--r--src/WorkspaceCmd.hh6
4 files changed, 35 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 5d736a2..9bcaf85 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,11 @@
1(Format: Year/Month/Day) 1(Format: Year/Month/Day)
2Changes for 0.9.16: 2Changes for 0.9.16:
3*06/04/16: 3*06/04/16:
4 * Add "CloseAllWindows" key binding
5 (thanks Adriano Dal Bosco - adbosco at users.sourceforge.net)
6 - Useful to trigger all "close" actions before flux exit (or other)
7 to catch any pending file saves etc...
8 WorkspaceCmd.hh/cc FbCommandFactory.cc
4 * Fix all warnings with (gcc 3.4.6) -Wall, mainly sign comparisons (Simon) 9 * Fix all warnings with (gcc 3.4.6) -Wall, mainly sign comparisons (Simon)
5 ClientPattern.cc Container.cc FbWinFrame.cc IconButton.cc IconbarTool.cc 10 ClientPattern.cc Container.cc FbWinFrame.cc IconButton.cc IconbarTool.cc
6 ScreenPlacement.hh ScreenResources.cc ToolFactory.cc Toolbar.cc 11 ScreenPlacement.hh ScreenResources.cc ToolFactory.cc Toolbar.cc
diff --git a/src/FbCommandFactory.cc b/src/FbCommandFactory.cc
index 4bf1dd5..a749684 100644
--- a/src/FbCommandFactory.cc
+++ b/src/FbCommandFactory.cc
@@ -51,6 +51,7 @@ FbCommandFactory::FbCommandFactory() {
51 "arrangewindows", 51 "arrangewindows",
52 "bindkey", 52 "bindkey",
53 "close", 53 "close",
54 "closeallwindows",
54 "commanddialog", 55 "commanddialog",
55 "deiconify", 56 "deiconify",
56 "detachclient", 57 "detachclient",
@@ -310,6 +311,8 @@ FbTk::Command *FbCommandFactory::stringToCommand(const std::string &command,
310 return new CurrentWindowCmd(&FluxboxWindow::lowerLayer); 311 return new CurrentWindowCmd(&FluxboxWindow::lowerLayer);
311 else if (command == "close") 312 else if (command == "close")
312 return new CurrentWindowCmd(&FluxboxWindow::close); 313 return new CurrentWindowCmd(&FluxboxWindow::close);
314 else if (command == "closeallwindows")
315 return new CloseAllWindowsCmd();
313 else if (command == "shade" || command == "shadewindow") 316 else if (command == "shade" || command == "shadewindow")
314 return new CurrentWindowCmd(&FluxboxWindow::shade); 317 return new CurrentWindowCmd(&FluxboxWindow::shade);
315 else if (command == "stick" || command == "stickwindow") 318 else if (command == "stick" || command == "stickwindow")
diff --git a/src/WorkspaceCmd.cc b/src/WorkspaceCmd.cc
index 3673e17..9951e0e 100644
--- a/src/WorkspaceCmd.cc
+++ b/src/WorkspaceCmd.cc
@@ -238,3 +238,24 @@ void ShowDesktopCmd::execute() {
238 windows.end(), 238 windows.end(),
239 std::mem_fun(&FluxboxWindow::iconify)); 239 std::mem_fun(&FluxboxWindow::iconify));
240} 240}
241
242void CloseAllWindowsCmd::execute() {
243 BScreen *screen = Fluxbox::instance()->mouseScreen();
244 if (screen == 0)
245 return;
246
247 BScreen::Workspaces::iterator workspace_it = screen->getWorkspacesList().begin();
248 BScreen::Workspaces::iterator workspace_it_end = screen->getWorkspacesList().end();
249 for (; workspace_it != workspace_it_end; ++workspace_it) {
250 Workspace::Windows windows((*workspace_it)->windowList());
251 std::for_each(windows.begin(),
252 windows.end(),
253 std::mem_fun(&FluxboxWindow::close));
254 }
255 BScreen::Icons::iterator icon_it = screen->iconList().begin();
256 BScreen::Icons::iterator icon_it_end = screen->iconList().end();
257 for (; icon_it != icon_it_end; ++icon_it ) {
258 (*icon_it)->close();
259 }
260
261}
diff --git a/src/WorkspaceCmd.hh b/src/WorkspaceCmd.hh
index 786492d..1e5b04d 100644
--- a/src/WorkspaceCmd.hh
+++ b/src/WorkspaceCmd.hh
@@ -104,4 +104,10 @@ public:
104 void execute(); 104 void execute();
105}; 105};
106 106
107
108class CloseAllWindowsCmd: public FbTk::Command {
109public:
110 void execute();
111};
112
107#endif // WORKSPACECMD_HH 113#endif // WORKSPACECMD_HH