about summary refs log tree commit diff
path: root/exwm-manage.el
diff options
context:
space:
mode:
Diffstat (limited to 'exwm-manage.el')
-rw-r--r--exwm-manage.el12
1 files changed, 9 insertions, 3 deletions
diff --git a/exwm-manage.el b/exwm-manage.el
index b2eda4b8fc6f..e7682cda88e1 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -79,6 +79,8 @@ corresponding buffer.")
       (setq exwm--id id)
       (exwm--update-window-type id)
       (exwm--update-class id)
+      (exwm--update-transient-for id)
+      (exwm--update-normal-hints id)
       (exwm-manage--update-geometry id)
       (exwm-manage--update-mwm-hints id)
       ;; No need to manage (please check OverrideRedirect outside)
@@ -93,7 +95,13 @@ corresponding buffer.")
              (and exwm--mwm-hints
                   (/= 0 (logand (elt exwm--mwm-hints 0) ;MotifWmHints.flags
                                 2))     ;MWM_HINTS_DECORATIONS
-                  (= 0 (elt exwm--mwm-hints 2)))) ;MotifWmHints.decorations
+                  (= 0 (elt exwm--mwm-hints 2)) ;MotifWmHints.decorations
+                  ;; Floating windows only
+                  (or exwm-transient-for exwm--fixed-size
+                      (memq xcb:Atom:_NET_WM_WINDOW_TYPE_UTILITY
+                            exwm-window-type)
+                      (memq xcb:Atom:_NET_WM_WINDOW_TYPE_DIALOG
+                            exwm-window-type))))
         (exwm--log "No need to manage #x%x" id)
         ;; Remove all events
         (xcb:+request-checked+request-check exwm--connection
@@ -153,8 +161,6 @@ corresponding buffer.")
                          :data (vconcat (mapcar #'car exwm--id-buffer-alist))))
       (xcb:flush exwm--connection)
       (exwm--update-title id)
-      (exwm--update-transient-for id)
-      (exwm--update-normal-hints id)
       (exwm--update-hints id)
       (exwm--update-protocols id)
       (exwm--update-state id)