branch: externals/exwm
commit 7bfd429d5252e8df43d1b19b836a6c4970290fa0
Author: Chris Feng <chris.w.f...@gmail.com>
Commit: Chris Feng <chris.w.f...@gmail.com>

    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.
---
 exwm-manage.el |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/exwm-manage.el b/exwm-manage.el
index 4f11874..ffe21e2 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)

Reply via email to