Fix problems with active minibuffer

* exwm-floating.el (exwm-floating--unset-floating): Never use the
minibuffer window to display an `exwm-mode' buffer.

* exwm-input.el (exwm-input--on-buffer-list-update)
(exwm-input--update-focus): Allow updating input focus when the
minibuffer is active.
(exwm-input--update-focus): Handle the case when an auto-hiding
minibuffer is active.
(exwm-input--during-key-sequence): Renamed to
`exwm-input--line-mode-passthrough'.
(exwm-input--line-mode-passthrough): New variable for forcing all events
to be passed to Emacs in line-mode.
(exwm-input--on-KeyPress-line-mode, exwm-input-send-next-key): Use it.
(exwm-input--finish-key-sequence, exwm-input--init, exwm-input--exit):
Drop `exwm-input--finish-key-sequence'.
(exwm-input--line-mode-cache): New variable for caching incomplete key
sequences.
(exwm-input--cache-event): New function for handling new key events.
(exwm-input--on-KeyPress-line-mode, exwm-input--on-KeyPress-char-mode):
Use it.
This commit is contained in:
Chris Feng 2016-10-06 12:47:56 +08:00
parent 575162b6b6
commit 089afdc8cc
2 changed files with 47 additions and 42 deletions

View file

@ -337,9 +337,11 @@ context of the corresponding buffer.")
(setq window-size-fixed nil
exwm--floating-frame nil
exwm--frame exwm-workspace--current))
;; Only show X windows in normal state.
(unless (exwm-layout--iconic-state-p)
;; Only show X windows in normal state.
(let ((window (frame-selected-window exwm-workspace--current)))
;; Show it in the selected Emacs window but skip the mini-window.
(let ((window (or (minibuffer-selected-window)
(frame-selected-window exwm-workspace--current))))
(set-window-buffer window buffer)
(select-window window))))
(with-current-buffer (exwm--id->buffer id)