summaryrefslogtreecommitdiff
path: root/src/Workspace.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-07-05 01:24:32 +0000
committerDana Jansens <danakj@orodu.net>2002-07-05 01:24:32 +0000
commite15e4a9e03dd7b64004b76ca84b07c12c251f67b (patch)
treed582a21b04ffdbac8935395da9f30c8230f5f1dd /src/Workspace.cc
parentbe2f47223c17c399e05436a34ba4140f2fc44fc9 (diff)
make iconified windows uniconify on an XMapRequestEvent.
sync with blackbox cvs.
Diffstat (limited to 'src/Workspace.cc')
-rw-r--r--src/Workspace.cc15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/Workspace.cc b/src/Workspace.cc
index 60efba1e..90a83b26 100644
--- a/src/Workspace.cc
+++ b/src/Workspace.cc
@@ -103,8 +103,13 @@ unsigned int Workspace::removeWindow(BlackboxWindow *w) {
if ((w->isFocused() || w == lastfocus) &&
! screen->getBlackbox()->doShutdown()) {
BlackboxWindow *newfocus = 0;
- if (w->isTransient())
+ if (w->isTransient()) {
newfocus = w->getTransientFor();
+ if (newfocus &&
+ (newfocus->isIconic() || // do not focus icons
+ newfocus->getWorkspaceNumber() != id)) // or other workspaces
+ newfocus = 0;
+ }
if (! newfocus && ! stackingList.empty())
newfocus = stackingList.front();
@@ -115,7 +120,7 @@ unsigned int Workspace::removeWindow(BlackboxWindow *w) {
if the window is on the visible workspace, then try focus it, and fall
back to the default focus target if the window won't focus.
*/
- if (! newfocus || ! newfocus->setInputFocus())
+ if (! (newfocus && newfocus->setInputFocus()))
screen->getBlackbox()->setFocusedWindow(0);
} else if (lastfocus == w) {
/*
@@ -320,12 +325,6 @@ void Workspace::reconfigure(void) {
}
-void Workspace::updateFocusModel(void) {
- std::for_each(windowList.begin(), windowList.end(),
- std::mem_fun(&BlackboxWindow::updateFocusModel));
-}
-
-
BlackboxWindow *Workspace::getWindow(unsigned int index) {
if (index < windowList.size()) {
BlackboxWindowList::iterator it = windowList.begin();