diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-08-25 08:41:18 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-08-25 08:41:18 +0000 |
| commit | 45863e605c2dc7d605293331c26f688305c45fac (patch) | |
| tree | 2604b745728ea9330ba2cfc447ba048cb4b8e546 /src/Screen.cc | |
| parent | 3ee18e2f5f1477b70538fe9250ee498f6f583122 (diff) | |
clean up the new focusing code for workspace switching
Diffstat (limited to 'src/Screen.cc')
| -rw-r--r-- | src/Screen.cc | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/Screen.cc b/src/Screen.cc index 5c1134ff..a1cae41f 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -1264,21 +1264,28 @@ 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 && - (win = current_workspace->getLastFocusedWindow())) { + (win = current_workspace->getLastFocusedWindow())) f = win->setInputFocus(); - blackbox->setFocusedWindow(win); - } - // If that fails, then set focus to nothing. - if (! f) blackbox->setFocusedWindow((BlackboxWindow *) 0); + /* + if we found a focus target, then we set the focused window explicitly + because it is possible to switch off this workspace before the x server + generates the FocusIn event for the window. if that happens, openbox would + lose track of what window was the 'LastFocused' window on the workspace. + + if we did not find a focus target, then set the current focused window to + nothing. + */ + if (f) + blackbox->setFocusedWindow(win); + else + blackbox->setFocusedWindow((BlackboxWindow *) 0); updateNetizenCurrentWorkspace(); } |
