[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm c22f356: Fix 2 dock-related issues
From: |
Chris Feng |
Subject: |
[elpa] externals/exwm c22f356: Fix 2 dock-related issues |
Date: |
Mon, 18 Jul 2016 04:59:28 +0000 (UTC) |
branch: externals/exwm
commit c22f35620f0db3e86f4b0678a29dc3eee48df4d9
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>
Fix 2 dock-related issues
* exwm-floating.el (exwm-floating--set-floating): Add a workaround to
prevent accidental move of Emacs frame when struts are set.
* exwm-workspace.el (exwm-workspace--update-workareas): Make legacy
docks working.
---
exwm-floating.el | 14 +++++++++++++-
exwm-workspace.el | 28 ++++++++++++++++------------
2 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/exwm-floating.el b/exwm-floating.el
index 9d4d948..20b3fc4 100644
--- a/exwm-floating.el
+++ b/exwm-floating.el
@@ -70,6 +70,7 @@
(defvar exwm-workspace--list)
(defvar exwm-workspace-current-index)
(defvar exwm-workspace--switch-history-outdated)
+(defvar exwm-workspace--struts)
(declare-function exwm-layout--refresh "exwm-layout.el" ())
(declare-function exwm-layout--show "exwm-layout.el" (id &optional window))
@@ -242,7 +243,18 @@
(exwm-floating-hide))
(with-selected-frame exwm-workspace--current
(exwm-layout--refresh))
- (select-frame-set-input-focus frame)))
+ (select-frame-set-input-focus frame))
+ ;; FIXME: Strangely, the Emacs frame can move itself at this point
+ ;; when there are left/top struts set. Force resetting its
+ ;; position seems working, but it'd better to figure out why.
+ (when exwm-workspace--struts
+ (xcb:+request exwm--connection
+ (make-instance 'xcb:ConfigureWindow
+ :window outer-id
+ :value-mask (logior xcb:ConfigWindow:X
+ xcb:ConfigWindow:Y)
+ :x 0 :y 0))
+ (xcb:flush exwm--connection)))
(run-hooks 'exwm-floating-setup-hook)
;; Redraw the frame.
(redisplay))
diff --git a/exwm-workspace.el b/exwm-workspace.el
index a7e6681..5c8279e 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -191,32 +191,36 @@ Value nil means to use the default position which is
fixed at bottom, while
(`left
(setq delta (- (aref w 0) width))
(when (and (< delta 0)
- (< (max (aref position 0) (aref w 1))
- (min (aref position 1)
- (+ (aref w 1) (aref w 3)))))
+ (or (not position)
+ (< (max (aref position 0) (aref w 1))
+ (min (aref position 1)
+ (+ (aref w 1) (aref w 3))))))
(cl-incf (aref w 2) delta)
(setf (aref w 0) width)))
(`right
(setq delta (- root-width (aref w 0) (aref w 2) width))
(when (and (< delta 0)
- (< (max (aref position 0) (aref w 1))
- (min (aref position 1)
- (+ (aref w 1) (aref w 3)))))
+ (or (not position)
+ (< (max (aref position 0) (aref w 1))
+ (min (aref position 1)
+ (+ (aref w 1) (aref w 3))))))
(cl-incf (aref w 2) delta)))
(`top
(setq delta (- (aref w 1) width))
(when (and (< delta 0)
- (< (max (aref position 0) (aref w 0))
- (min (aref position 1)
- (+ (aref w 0) (aref w 2)))))
+ (or (not position)
+ (< (max (aref position 0) (aref w 0))
+ (min (aref position 1)
+ (+ (aref w 0) (aref w 2))))))
(cl-incf (aref w 3) delta)
(setf (aref w 1) width)))
(`bottom
(setq delta (- root-height (aref w 1) (aref w 3) width))
(when (and (< delta 0)
- (< (max (aref position 0) (aref w 0))
- (min (aref position 1)
- (+ (aref w 0) (aref w 2)))))
+ (or (not position)
+ (< (max (aref position 0) (aref w 0))
+ (min (aref position 1)
+ (+ (aref w 0) (aref w 2))))))
(cl-incf (aref w 3) delta))))))
;; Save the result.
(setq exwm-workspace--workareas workareas)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/exwm c22f356: Fix 2 dock-related issues,
Chris Feng <=