diff options
author | Chris Feng <chris.w.feng@gmail.com> | 2015-08-08T00·29+0800 |
---|---|---|
committer | Chris Feng <chris.w.feng@gmail.com> | 2015-08-08T00·29+0800 |
commit | 3b9d0dd9217add078415ecda644b5cd19632f1fc (patch) | |
tree | 90e78b9f3bebf3365d4f46776b28ef491295cedc | |
parent | 14628a940c12051f2538556b97a2ef4531c75201 (diff) |
Fixes for manage/unmanage window
* Make sure `exwm-manage--manage-window-queue` is cleaned * Improve input focus handling after unmanaging a window * Remove a redundant call to `exwm-layout--show`
-rw-r--r-- | exwm-floating.el | 1 | ||||
-rw-r--r-- | exwm-manage.el | 16 |
2 files changed, 13 insertions, 4 deletions
diff --git a/exwm-floating.el b/exwm-floating.el index f302bc076f4c..3e9cade15a9f 100644 --- a/exwm-floating.el +++ b/exwm-floating.el @@ -199,7 +199,6 @@ exwm--frame exwm-workspace--current)) (select-frame exwm-workspace--current t) (set-window-buffer nil buffer) - (exwm-layout--show id) (exwm-input--set-focus id)) (setq exwm-input--focus-lock nil)) diff --git a/exwm-manage.el b/exwm-manage.el index 8594066a71fa..8bf118e2f0ee 100644 --- a/exwm-manage.el +++ b/exwm-manage.el @@ -61,9 +61,11 @@ corresponding buffer.") (make-instance 'xcb:ChangeWindowAttributes :window id :value-mask xcb:CW:EventMask :event-mask exwm--client-event-mask)) - (delq id exwm-manage--manage-window-queue) ;cleanup + (setq exwm-manage--manage-window-queue + (delq id exwm-manage--manage-window-queue)) ;cleanup (throw 'return 'dead)) - (delq id exwm-manage--manage-window-queue) ;cleanup (late enough) + (setq exwm-manage--manage-window-queue + (delq id exwm-manage--manage-window-queue)) ;cleanup (late enough) (with-current-buffer (generate-new-buffer "*EXWM*") (push `(,id . ,(current-buffer)) exwm--id-buffer-alist) (exwm-mode) @@ -193,7 +195,15 @@ corresponding buffer.") (let ((floating exwm--floating-frame)) (kill-buffer) (when floating - (select-frame-set-input-focus exwm-workspace--current))))))) + (if (eq 'exwm-mode + (with-current-buffer + (window-buffer + (frame-first-window exwm-workspace--current)) + major-mode)) + ;; Input focus is to be set on a window + (x-focus-frame exwm-workspace--current) + ;; Set input focus on a frame + (select-frame-set-input-focus exwm-workspace--current)))))))) (defun exwm-manage--scan () "Search for existing windows and try to manage them." |