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-11T07·06+0800
committerChris Feng <chris.w.feng@gmail.com>2015-08-11T07·06+0800
commit1ce18afd0559bacc3a7c43f5a73342814a5b176f (patch)
tree92e4d2dc95b96761f76b0944bd9cdc378fe0b2b4 /exwm-manage.el
parent801185c7cc2c257ac2e8ed9a3aa8e8119c56ad1f (diff)
Center floating windows by default
This commit makes a floating window centered to its leading window if it has
a valid WM_TRANSIENT_FOR property set. Other it's placed at the center of the
screen.
Diffstat (limited to 'exwm-manage.el')
-rw-r--r--exwm-manage.el7
1 files changed, 7 insertions, 0 deletions
diff --git a/exwm-manage.el b/exwm-manage.el
index 79cff221e0bf..fc61e5074478 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -276,6 +276,8 @@ corresponding buffer.")
         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)
       (if (setq buffer (exwm--id->buffer window))
           ;; Send client message for managed windows
           (with-current-buffer buffer
@@ -286,6 +288,7 @@ corresponding buffer.")
                     (or exwm--floating-edges
                         (window-inside-absolute-pixel-edges
                          (get-buffer-window)))))
+            (exwm--log "Reply with ConfigureNotify (edges): %s" edges)
             (xcb:+request exwm--connection
                 (make-instance 'xcb:SendEvent
                                :propagate 0 :destination window
@@ -300,6 +303,7 @@ corresponding buffer.")
                                         :height (- (elt edges 3) (elt edges 1))
                                         :border-width 0 :override-redirect 0)
                                        exwm--connection))))
+        (exwm--log "ConfigureWindow (preserve geometry)")
         ;; Configure unmanaged windows
         (xcb:+request exwm--connection
             (make-instance 'xcb:ConfigureWindow
@@ -317,6 +321,7 @@ corresponding buffer.")
   "Handle MapRequest event."
   (let ((obj (make-instance 'xcb:MapRequest)))
     (xcb:unmarshal obj data)
+    (exwm--log "MapRequest from #x%x" (slot-value obj 'window))
     (exwm-manage--manage-window (slot-value obj 'window))))
 
 (defun exwm-manage--on-UnmapNotify (data synthetic)
@@ -324,6 +329,7 @@ corresponding buffer.")
   (unless synthetic
     (let ((obj (make-instance 'xcb:UnmapNotify)))
       (xcb:unmarshal obj data)
+      (exwm--log "UnmapNotify from #x%x" (slot-value obj 'window))
       (exwm-manage--unmanage-window (slot-value obj 'window) t))))
 
 (defun exwm-manage--on-DestroyNotify (data synthetic)
@@ -331,6 +337,7 @@ corresponding buffer.")
   (unless synthetic
     (let ((obj (make-instance 'xcb:DestroyNotify)))
       (xcb:unmarshal obj data)
+      (exwm--log "DestroyNotify from #x%x" (slot-value obj 'window))
       (exwm-manage--unmanage-window (slot-value obj 'window)))))
 
 (defun exwm-manage--init ()