explicitly set the focused window instead of waiting for the x server when changing workspaces, otherwise, if you move througha workspace before the xserver distributes your focus, you end up losing which window had the focus

This commit is contained in:
Dana Jansens 2002-08-25 08:11:43 +00:00
parent 2c1ce30804
commit 3ee18e2f5f

View 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);