all repos — openbox @ 3ee18e2f5f1477b70538fe9250ee498f6f583122

openbox fork - make it a bit more like ryudo

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
Dana Jansens danakj@orodu.net
commit

3ee18e2f5f1477b70538fe9250ee498f6f583122

parent

2c1ce30804957b4bb683109e009dc896e6ecc09c

1 files changed, 9 insertions(+), 4 deletions(-)

jump to
M src/Screen.ccsrc/Screen.cc

@@ -1264,13 +1264,18 @@ if (resource.sloppy_focus &&

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