about summary refs log tree commit diff
path: root/exwm-input.el
diff options
context:
space:
mode:
authorChris Feng <chris.w.feng@gmail.com>2016-07-26T13·42+0800
committerChris Feng <chris.w.feng@gmail.com>2016-07-26T13·42+0800
commite6bf1b45ad77328af2b0a9be680c46e268bb2571 (patch)
tree7e21bd9bc6e8d5179b551e3718a5b0f632497464 /exwm-input.el
parentfdeb39dc0831f589e4924e17dad43b31a96b8dfe (diff)
Always update input focus on entering minibuffer
* exwm-input.el (exwm-input--on-minibuffer-setup): New function for
setting input focus on the workspace frame.
(exwm-input--init): Add the function to `minibuffer-setup-hook'.
* exwm-workspace.el (exwm-workspace--on-minibuffer-setup): Avoid setting
input focus here.
Diffstat (limited to 'exwm-input.el')
-rw-r--r--exwm-input.el7
1 files changed, 7 insertions, 0 deletions
diff --git a/exwm-input.el b/exwm-input.el
index 62779c9e2be6..4a6d56e2fbfe 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -174,6 +174,11 @@ This value should always be overwritten.")
           (xcb:flush exwm--connection)))))
   (setq exwm-input--update-focus-lock nil))
 
+(defun exwm-input--on-minibuffer-setup ()
+  "Run in `minibuffer-setup-hook' to set input focus."
+  ;; Set input focus on the Emacs frame
+  (x-focus-frame (window-frame (minibuffer-selected-window))))
+
 (defun exwm-input--set-active-window (&optional id)
   "Set _NET_ACTIVE_WINDOW."
   (xcb:+request exwm--connection
@@ -604,6 +609,8 @@ Its usage is the same with `exwm-input-set-simulation-keys'."
               #'exwm-floating--stop-moveresize)
   (xcb:+event exwm--connection 'xcb:MotionNotify
               #'exwm-floating--do-moveresize)
+  ;; The input focus should be set on the frame when minibuffer is active.
+  (add-hook 'minibuffer-setup-hook #'exwm-input--on-minibuffer-setup)
   ;; `pre-command-hook' marks the end of a key sequence (existing or not)
   (add-hook 'pre-command-hook #'exwm-input--finish-key-sequence)
   ;; Control `exwm-input--during-command'