Fix focus jumps with minibuffer-only frames

* exwm-input.el (exwm-input--update-focus): Focus the minibuffer's
frame, which is different than that of the
`minibuffer-selected-window' on minibuffer-only frames.
(exwm-input--on-minibuffer-setup, exwm-input--init)
(exwm-input-exit): Remove unneeded function.
This commit is contained in:
Adrián Medraño Calvo 2018-10-08 12:00:00 +00:00
parent 472f7cb82b
commit c9984ca216

View file

@ -351,17 +351,10 @@ ARGS are additional arguments to CALLBACK."
(x-focus-frame (window-frame window))
;; X input focus should be set on the previously selected
;; frame.
(x-focus-frame (window-frame (minibuffer-selected-window))))
(x-focus-frame (window-frame (minibuffer-window))))
(exwm-input--set-active-window)
(xcb:flush exwm--connection)))))))
(defun exwm-input--on-minibuffer-setup ()
"Run in `minibuffer-setup-hook' to set input focus."
(exwm--log)
(unless (exwm-workspace--client-p)
;; 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."
(exwm--log)
@ -1004,8 +997,6 @@ where both ORIGINAL-KEY and SIMULATED-KEY are key sequences."
(when mouse-autoselect-window
(xcb:+event exwm--connection 'xcb:EnterNotify
#'exwm-input--on-EnterNotify))
;; The input focus should be set on the frame when minibuffer is active.
(add-hook 'minibuffer-setup-hook #'exwm-input--on-minibuffer-setup)
;; Control `exwm-input--during-command'
(add-hook 'pre-command-hook #'exwm-input--on-pre-command)
(add-hook 'post-command-hook #'exwm-input--on-post-command)
@ -1019,7 +1010,6 @@ where both ORIGINAL-KEY and SIMULATED-KEY are key sequences."
(defun exwm-input--exit ()
"Exit the input module."
(exwm-input--unset-simulation-keys)
(remove-hook 'minibuffer-setup-hook #'exwm-input--on-minibuffer-setup)
(remove-hook 'pre-command-hook #'exwm-input--on-pre-command)
(remove-hook 'post-command-hook #'exwm-input--on-post-command)
(remove-hook 'buffer-list-update-hook #'exwm-input--on-buffer-list-update)