diff --git a/src/WorkspaceCmd.cc b/src/WorkspaceCmd.cc index d72ef13f..62676716 100644 --- a/src/WorkspaceCmd.cc +++ b/src/WorkspaceCmd.cc @@ -523,19 +523,19 @@ void CloseAllWindowsCmd::execute() { BScreen *screen = Fluxbox::instance()->mouseScreen(); if (screen == 0) return; - + + Workspace::Windows windows; + 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(); - } - + for (; workspace_it != workspace_it_end; ++workspace_it) { + windows = (*workspace_it)->windowList(); + std::for_each(windows.begin(), windows.end(), + std::mem_fun(&FluxboxWindow::close)); + } + + windows = screen->iconList(); + std::for_each(windows.begin(), + windows.end(), std::mem_fun(&FluxboxWindow::close)); + }