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

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

[elpa] externals/exwm 767abdf 2/3: Fix coordinates calculations concerni


From: Chris Feng
Subject: [elpa] externals/exwm 767abdf 2/3: Fix coordinates calculations concerning workspaces
Date: Tue, 9 Aug 2016 05:49:18 +0000 (UTC)

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

    Fix coordinates calculations concerning workspaces
    
    * exwm-floating.el (exwm-floating--set-floating)
    (exwm-floating--do-moveresize):
    * exwm-manage.el (exwm-manage--manage-window):
    Use the computed workareas rather than RandR output geometries.
---
 exwm-floating.el |   26 ++++++++++++--------------
 exwm-manage.el   |   16 ++++++++--------
 2 files changed, 20 insertions(+), 22 deletions(-)

diff --git a/exwm-floating.el b/exwm-floating.el
index 464dd20..56d2932 100644
--- a/exwm-floating.el
+++ b/exwm-floating.el
@@ -105,15 +105,15 @@ context of the corresponding buffer.")
          (x (slot-value exwm--geometry 'x))
          (y (slot-value exwm--geometry 'y))
          (width (slot-value exwm--geometry 'width))
-         (height (slot-value exwm--geometry 'height))
-         (frame-geometry (frame-parameter original-frame 'exwm-geometry)))
+         (height (slot-value exwm--geometry 'height)))
     (exwm--log "Floating geometry (original, absolute): %dx%d%+d%+d"
                width height x y)
-    (when (and frame-geometry
-               (/= x 0)
+    (when (and (/= x 0)
                (/= y 0))
-      (setq x (- x (slot-value frame-geometry 'x))
-            y (- y (slot-value frame-geometry 'y))))
+      (let ((workarea (elt exwm-workspace--workareas
+                           (exwm-workspace--position original-frame))))
+        (setq x (- x (aref workarea 0))
+              y (- y (aref workarea 1)))))
     (exwm--log "Floating geometry (original, relative): %dx%d%+d%+d"
                width height x y)
     ;; Save frame parameters.
@@ -561,14 +561,12 @@ context of the corresponding buffer.")
 (defun exwm-floating--do-moveresize (data _synthetic)
   "Perform move/resize."
   (when exwm-floating--moveresize-calculate
-    (let ((obj (make-instance 'xcb:MotionNotify))
-          (geometry (frame-parameter exwm-workspace--current 'exwm-geometry))
-          (frame-x 0)
-          (frame-y 0)
-          result value-mask width height buffer-or-id container-or-id)
-      (when geometry
-        (setq frame-x (slot-value geometry 'x)
-              frame-y (slot-value geometry 'y)))
+    (let* ((obj (make-instance 'xcb:MotionNotify))
+           (workarea (elt exwm-workspace--workareas
+                          exwm-workspace-current-index))
+           (frame-x (aref workarea 0))
+           (frame-y (aref workarea 1))
+           result value-mask width height buffer-or-id container-or-id)
       (xcb:unmarshal obj data)
       (setq result (funcall exwm-floating--moveresize-calculate
                             (slot-value obj 'root-x) (slot-value obj 'root-y))
diff --git a/exwm-manage.el b/exwm-manage.el
index 0b7b475..b883124 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -170,15 +170,15 @@ corresponding buffer.")
                             exwm-window-type)
                       (memq xcb:Atom:_NET_WM_WINDOW_TYPE_DOCK
                             exwm-window-type))
-            (let ((frame-geometry (frame-parameter exwm-workspace--current
-                                                   'exwm-geometry))
-                  (workspace (frame-parameter exwm-workspace--current
-                                              'exwm-workspace)))
-              (when (and frame-geometry
-                         (/= x 0)
+            (let ((workspace (frame-parameter exwm-workspace--current
+                                              'exwm-workspace))
+                  workarea)
+              (when (and (/= x 0)
                          (/= y 0))
-                (setq x (- x (slot-value frame-geometry 'x))
-                      y (- y (slot-value frame-geometry 'y))))
+                (setq workarea (elt exwm-workspace--workareas
+                                    exwm-workspace-current-index)
+                      x (- x (aref workarea 0))
+                      y (- y (aref workarea 1))))
               (xcb:+request exwm--connection
                   (make-instance 'xcb:ReparentWindow
                                  :window id



reply via email to

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