emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/exwm 1c8101a 2/2: Fix a frame resizing problem for Luci


From: Chris Feng
Subject: [elpa] externals/exwm 1c8101a 2/2: Fix a frame resizing problem for Lucid build
Date: Sun, 25 Sep 2016 12:03:17 +0000 (UTC)

branch: externals/exwm
commit 1c8101afbf8eda6f990cde6b551a6bd59e1f7dfd
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>

    Fix a frame resizing problem for Lucid build
    
    * exwm-manage.el (exwm-manage--frame-outer-id-list): New variable for
    storing frame window-outer-id's.
    (exwm-manage--add-frame, exwm-manage--remove-frame): New functions for
    adding/removing ids to/from the variable.
    (exwm-manage--init): Add the functions to the corresponding hooks.
    (exwm-manage--on-ConfigureRequest): Check for frames and avoid handling
    them.
---
 exwm-manage.el |   37 +++++++++++++++++++++++++++++--------
 1 file changed, 29 insertions(+), 8 deletions(-)

diff --git a/exwm-manage.el b/exwm-manage.el
index 42a4353..52c324d 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -560,6 +560,20 @@ Would you like to kill it? "
 (defconst exwm-manage--width-delta-min 5)
 (defconst exwm-manage--height-delta-min 5)
 
+(defvar exwm-manage--frame-outer-id-list nil
+  "List of window-outer-id's of all frames.")
+
+(defun exwm-manage--add-frame (frame)
+  "Run in `after-make-frame-functions'."
+  (push (string-to-number (frame-parameter frame 'outer-window-id))
+        exwm-manage--frame-outer-id-list))
+
+(defun exwm-manage--remove-frame (frame)
+  "Run in `delete-frame-functions'."
+  (setq exwm-manage--frame-outer-id-list
+        (delq (string-to-number (frame-parameter frame 'outer-window-id))
+              exwm-manage--frame-outer-id-list)))
+
 (defun exwm-manage--on-ConfigureRequest (data _synthetic)
   "Handle ConfigureRequest event."
   (let ((obj (make-instance 'xcb:ConfigureRequest))
@@ -638,14 +652,19 @@ border-width: %d; sibling: #x%x; stack-mode: %d"
                                   nil t)))
           (exwm--log "ConfigureWindow (preserve geometry)")
           ;; Configure the unmanaged window.
-          (xcb:+request exwm--connection
-              (make-instance 'xcb:ConfigureWindow
-                             :window window
-                             :value-mask value-mask
-                             :x x :y y :width width :height height
-                             :border-width border-width
-                             :sibling sibling
-                             :stack-mode stack-mode))))))
+          ;; But Emacs frames should be excluded.  Generally we don't
+          ;; receive ConfigureRequest events from Emacs frames since we
+          ;; have set OverrideRedirect on them, but this is not true for
+          ;; Lucid build (as of 25.1).
+          (unless (memq window exwm-manage--frame-outer-id-list)
+            (xcb:+request exwm--connection
+                (make-instance 'xcb:ConfigureWindow
+                               :window window
+                               :value-mask value-mask
+                               :x x :y y :width width :height height
+                               :border-width border-width
+                               :sibling sibling
+                               :stack-mode stack-mode)))))))
   (xcb:flush exwm--connection))
 
 (declare-function exwm-layout--iconic-state-p "exwm-layout.el" (&optional id))
@@ -698,6 +717,8 @@ border-width: %d; sibling: #x%x; stack-mode: %d"
                                          :name-len (length atom-name)
                                          :name atom-name))
                       'atom)))
+  (add-hook 'after-make-frame-functions #'exwm-manage--add-frame)
+  (add-hook 'delete-frame-functions #'exwm-manage--remove-frame)
   (xcb:+event exwm--connection 'xcb:ConfigureRequest
               #'exwm-manage--on-ConfigureRequest)
   (xcb:+event exwm--connection 'xcb:MapRequest #'exwm-manage--on-MapRequest)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]