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

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

[elpa] externals/exwm f0a5425 2/2: Allow floating X windows to resize th


From: Chris Feng
Subject: [elpa] externals/exwm f0a5425 2/2: Allow floating X windows to resize themselves
Date: Sun, 06 Mar 2016 06:31:21 +0000

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

    Allow floating X windows to resize themselves
    
    * exwm-manage.el (exwm-manage--on-ConfigureRequest):
    Allow (non-fullscreen) floating X windows to resize themselves.
---
 exwm-manage.el |   37 ++++++++++++++++++++++++++-----------
 1 files changed, 26 insertions(+), 11 deletions(-)

diff --git a/exwm-manage.el b/exwm-manage.el
index adc8519..bb6d5ff 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -419,7 +419,9 @@ Would you like to kill it? "
 border-width: %d; sibling: #x%x; stack-mode: %d"
                  window value-mask width height x y
                  border-width sibling stack-mode)
-      (if (setq buffer (exwm--id->buffer window))
+      (if (and (setq buffer (exwm--id->buffer window))
+               (with-current-buffer buffer
+                 (or exwm--fullscreen (not exwm--floating-frame))))
           ;; Send client message for managed windows
           (with-current-buffer buffer
             (setq edges
@@ -444,16 +446,29 @@ border-width: %d; sibling: #x%x; stack-mode: %d"
                                         :height (- (elt edges 3) (elt edges 1))
                                         :border-width 0 :override-redirect 0)
                                        exwm--connection))))
-        (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)))))
+        (if buffer
+            (with-current-buffer buffer
+              (exwm--log "ConfigureWindow (resize floating X window)")
+              (setq edges
+                    (window-inside-pixel-edges (get-buffer-window buffer t)))
+              (set-frame-size exwm--floating-frame
+                              (+ width
+                                 (- (frame-pixel-width exwm--floating-frame)
+                                    (- (elt edges 2) (elt edges 0))))
+                              (+ height
+                                 (- (frame-pixel-height exwm--floating-frame)
+                                    (- (elt edges 3) (elt edges 1))))
+                              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))))))
   (xcb:flush exwm--connection))
 
 (defun exwm-manage--on-MapRequest (data _synthetic)



reply via email to

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