From 5210e13e7c95d0d8f94c657efa13e71fad4ef818 Mon Sep 17 00:00:00 2001 From: Chris Feng Date: Mon, 24 Aug 2015 19:01:14 +0800 Subject: [PATCH] Only manage windows mapped as the direct children of root window (close #38) Sometimes Emacs create child windows of virtual roots. This commit ensures EXWM will not manage them. --- exwm-manage.el | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/exwm-manage.el b/exwm-manage.el index 3274d65..0fde4d4 100644 --- a/exwm-manage.el +++ b/exwm-manage.el @@ -278,7 +278,7 @@ corresponding buffer.") value-mask) obj (exwm--log "ConfigureRequest from #x%x (#x%x) @%dx%d%+d%+d, border: %d" - value-mask window width height x y border-width) + window value-mask width height x y border-width) (if (setq buffer (exwm--id->buffer window)) ;; Send client message for managed windows (with-current-buffer buffer @@ -320,8 +320,13 @@ corresponding buffer.") "Handle MapRequest event." (let ((obj (make-instance 'xcb:MapRequest))) (xcb:unmarshal obj data) - (exwm--log "MapRequest from #x%x" (slot-value obj 'window)) - (exwm-manage--manage-window (slot-value obj 'window)))) + (with-slots (parent window) obj + (if (/= exwm--root parent) + (progn (xcb:+request exwm--connection + (make-instance xcb:MapWindow :window window)) + (xcb:flush exwm--connection)) + (exwm--log "MapRequest from #x%x" window) + (exwm-manage--manage-window window))))) (defun exwm-manage--on-UnmapNotify (data synthetic) "Handle UnmapNotify event."