about summary refs log tree commit diff
path: root/exwm-manage.el
diff options
context:
space:
mode:
authorChris Feng <chris.w.feng@gmail.com>2015-08-14T09·46+0800
committerChris Feng <chris.w.feng@gmail.com>2015-08-14T09·46+0800
commit7bfd429d5252e8df43d1b19b836a6c4970290fa0 (patch)
tree32c343fba39cf8dae6621f2c459eb33516373a25 /exwm-manage.el
parentdba43b018d791f59f0462b56a46a4eced2d8a3c1 (diff)
Honor `value-mask` field in ConfigureRequest event
Some applications (e.g. JNLP) don't set correct values for fields not mentioned
in `value-mask`. This commit corrects this bug together with another Java AWT
specific problem.
Diffstat (limited to 'exwm-manage.el')
-rw-r--r--exwm-manage.el20
1 files changed, 10 insertions, 10 deletions
diff --git a/exwm-manage.el b/exwm-manage.el
index 4f11874d3a3e..ffe21e23e7ad 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -71,7 +71,8 @@ corresponding buffer.")
                   (memq xcb:Atom:_NET_WM_WINDOW_TYPE_DIALOG exwm-window-type)
                   (memq xcb:Atom:_NET_WM_WINDOW_TYPE_NORMAL exwm-window-type)))
              ;; For Java applications
-             (and exwm-instance-name
+             (and (memq xcb:Atom:_NET_WM_WINDOW_TYPE_NORMAL exwm-window-type)
+                  exwm-instance-name
                   (string-prefix-p "sun-awt-X11-" exwm-instance-name)
                   (not (string-suffix-p "XFramePeer" exwm-instance-name))))
         (exwm--log "No need to manage #x%x" id)
@@ -274,9 +275,11 @@ corresponding buffer.")
   (let ((obj (make-instance 'xcb:ConfigureRequest))
         buffer edges)
     (xcb:unmarshal obj data)
-    (with-slots (window x y width height border-width) obj
-      (exwm--log "ConfigureRequest from #x%x @%dx%d%+d%+d, border: %d"
-                 window width height x y border-width)
+    (with-slots (stack-mode window sibling x y width height border-width
+                            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)
       (if (setq buffer (exwm--id->buffer window))
           ;; Send client message for managed windows
           (with-current-buffer buffer
@@ -308,13 +311,10 @@ corresponding buffer.")
         (xcb:+request exwm--connection
             (make-instance 'xcb:ConfigureWindow
                            :window window
-                           :value-mask (logior xcb:ConfigWindow:X
-                                               xcb:ConfigWindow:Y
-                                               xcb:ConfigWindow:Width
-                                               xcb:ConfigWindow:Height
-                                               xcb:ConfigWindow:BorderWidth)
+                           :value-mask value-mask
                            :x x :y y :width width :height height
-                           :border-width border-width)))))
+                           :border-width border-width
+                           :sibling sibling :stack-mode stack-mode)))))
   (xcb:flush exwm--connection))
 
 (defun exwm-manage--on-MapRequest (data synthetic)