diff options
author | Chris Feng <chris.w.feng@gmail.com> | 2015-08-14T09·46+0800 |
---|---|---|
committer | Chris Feng <chris.w.feng@gmail.com> | 2015-08-14T09·46+0800 |
commit | 7bfd429d5252e8df43d1b19b836a6c4970290fa0 (patch) | |
tree | 32c343fba39cf8dae6621f2c459eb33516373a25 /exwm-manage.el | |
parent | dba43b018d791f59f0462b56a46a4eced2d8a3c1 (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.el | 20 |
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) |