diff options
author | Chris Feng <chris.w.feng@gmail.com> | 2015-08-08T03·16+0800 |
---|---|---|
committer | Chris Feng <chris.w.feng@gmail.com> | 2015-08-08T03·16+0800 |
commit | 52984898ec8d59fe42e86a311c7e7dbeec95c611 (patch) | |
tree | 85185f87b8e82844cd40f1590884e446ee0b26f9 | |
parent | 3b9d0dd9217add078415ecda644b5cd19632f1fc (diff) |
Fix some input focus issues
* Fix input focus lost after moving window to another workspace * Enhance `exwm-reset` to provide user a way to reset input focus when it's lost unexpectedly
-rw-r--r-- | exwm-workspace.el | 13 | ||||
-rw-r--r-- | exwm.el | 3 |
2 files changed, 11 insertions, 5 deletions
diff --git a/exwm-workspace.el b/exwm-workspace.el index da3f9ce4bce6..efecf571db85 100644 --- a/exwm-workspace.el +++ b/exwm-workspace.el @@ -181,14 +181,17 @@ The optional FORCE option is for internal use only." (if exwm--floating-frame ;; Move the floating frame is enough (xcb:+request exwm--connection - (make-instance 'xcb:ReparentWindow - :window (frame-parameter exwm--floating-frame - 'exwm-outer-id) - :parent (frame-parameter frame 'exwm-window-id) - :x 0 :y 0)) + (make-instance 'xcb:ReparentWindow + :window (frame-parameter exwm--floating-frame + 'exwm-outer-id) + :parent (frame-parameter frame 'exwm-window-id) + :x 0 :y 0)) ;; Move the window itself (bury-buffer) (exwm-layout--hide id) + ;; Force update input focus + (setq exwm-input--focus-id xcb:Window:None) + (exwm-input--update-focus) (xcb:+request exwm--connection (make-instance 'xcb:ReparentWindow :window id diff --git a/exwm.el b/exwm.el index 88d767469b03..984f8eee5ecf 100644 --- a/exwm.el +++ b/exwm.el @@ -198,6 +198,9 @@ (with-current-buffer (window-buffer) (when (eq major-mode 'exwm-mode) (when exwm--fullscreen (exwm-layout-unset-fullscreen)) + ;; Force update input focus + (setq exwm-input--focus-id xcb:Window:None) + (exwm-input--update-focus) (exwm-input-grab-keyboard)))) (defmacro exwm--with-current-id (id &rest body) |