From 3b9d0dd9217add078415ecda644b5cd19632f1fc Mon Sep 17 00:00:00 2001 From: Chris Feng Date: Sat, 8 Aug 2015 08:29:57 +0800 Subject: [PATCH] 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` --- exwm-floating.el | 1 - exwm-manage.el | 16 +++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/exwm-floating.el b/exwm-floating.el index f302bc0..3e9cade 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 8594066..8bf118e 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."