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:
parent
2c1ce30804
commit
3ee18e2f5f
1 changed files with 9 additions and 4 deletions
|
@ -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 (! 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);
|
||||
|
|
Loading…
Reference in a new issue