]> Dogcows Code - chaz/openbox/blobdiff - src/Workspace.cc
when placing a window, dont use its strut while placing itself.
[chaz/openbox] / src / Workspace.cc
index 60efba1e3845badb92d84e937b1b09f8346ce3ac..90a83b2678a43a531dd78f214b668b2fb1055299 100644 (file)
@@ -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();
This page took 0.020307 seconds and 4 git commands to generate.