diff --git a/src/Screen.cc b/src/Screen.cc index 1c9c347b..5c1134ff 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -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);