explicitly set the focused window instead of waiting for the x server when changing...
authorDana Jansens <danakj@orodu.net>
Sun, 25 Aug 2002 08:11:43 +0000 (08:11 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 25 Aug 2002 08:11:43 +0000 (08:11 +0000)
src/Screen.cc

index 1c9c347..5c1134f 100644 (file)
@@ -1264,13 +1264,18 @@ void BScreen::changeWorkspaceID(unsigned int id) {
       XQueryPointer(blackbox->getXDisplay(), getRootWindow(), &r, &c,
                     &rx, &ry, &x, &y, &m) &&
       c != None) {
-    if ( (win = blackbox->searchWindow(c)) )
+    if ( (win = blackbox->searchWindow(c)) ) {
       f = win->setInputFocus();
+      blackbox->setFocusedWindow(win);
+    }        
   }
 
-  // If that fails, and we're doing focus_last, try to focus the last window.  
-  if (! f && resource.focus_last && current_workspace->getLastFocusedWindow())
-    f = current_workspace->getLastFocusedWindow()->setInputFocus();
+  // If that fails, and we're doing focus_last, try to focus the last window.
+  if (! f && resource.focus_last &&
+      (win = current_workspace->getLastFocusedWindow())) {
+    f = win->setInputFocus();
+    blackbox->setFocusedWindow(win);
+  }
 
   // If that fails, then set focus to nothing.
   if (! f) blackbox->setFocusedWindow((BlackboxWindow *) 0);