diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-08-25 08:11:43 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-08-25 08:11:43 +0000 |
| commit | 3ee18e2f5f1477b70538fe9250ee498f6f583122 (patch) | |
| tree | b8f136c993b45c417a4403fc3239be2dfe91d30b /src | |
| parent | 2c1ce30804957b4bb683109e009dc896e6ecc09c (diff) | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/Screen.cc | 13 |
1 files changed, 9 insertions, 4 deletions
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); |
