diff options
author | Chris Feng <chris.w.feng@gmail.com> | 2018-02-20T14·21+0800 |
---|---|---|
committer | Chris Feng <chris.w.feng@gmail.com> | 2018-02-20T14·24+0800 |
commit | 86f2215be3db25a6b6aacd6f8b0cb132b049e034 (patch) | |
tree | f13e586d097a075b18c8ad5d9db1babe5c6f325a | |
parent | c821f76dfef9d7592b263f8fea789b6da7fbddf4 (diff) |
Fix unexpected focus change after a global key binding is activated
* exwm-core.el (exwm--unlock): Select FocusChange events on the root window. * exwm-input.el (exwm-input--on-FocusIn): Input focus should stay on the current workspace when the root window receives a FocusIn event.
-rw-r--r-- | exwm-core.el | 3 | ||||
-rw-r--r-- | exwm-input.el | 7 |
2 files changed, 5 insertions, 5 deletions
diff --git a/exwm-core.el b/exwm-core.el index 41c3b5772495..f64a7f25fa31 100644 --- a/exwm-core.el +++ b/exwm-core.el @@ -93,7 +93,8 @@ :window exwm--root :value-mask xcb:CW:EventMask :event-mask (eval-when-compile - (logior xcb:EventMask:SubstructureRedirect + (logior xcb:EventMask:FocusChange + xcb:EventMask:SubstructureRedirect xcb:EventMask:StructureNotify)))) (xcb:flush exwm--connection)) diff --git a/exwm-input.el b/exwm-input.el index 73a0dba6f22e..8102eb2ca79f 100644 --- a/exwm-input.el +++ b/exwm-input.el @@ -218,10 +218,9 @@ ARGS are additional arguments to CALLBACK." (xcb:unmarshal obj data) (with-slots (mode) obj ;; Revert input focus back to Emacs frame / X window when it's set on - ;; the root window or some workspace container. - (when (eq mode xcb:NotifyMode:Normal) - (x-focus-frame (selected-frame)) - (select-window (selected-window)))))) + ;; the root window. + (x-focus-frame exwm-workspace--current) + (select-window (frame-selected-window exwm-workspace--current))))) (defun exwm-input--on-EnterNotify (data _synthetic) "Handle EnterNotify events." |