[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm ddbbeda: Fix 2 multi-monitor issues
From: |
Chris Feng |
Subject: |
[elpa] externals/exwm ddbbeda: Fix 2 multi-monitor issues |
Date: |
Thu, 07 Apr 2016 13:05:02 +0000 |
branch: externals/exwm
commit ddbbeda285b3b671ace99f1688e6bd3c3f84c742
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>
Fix 2 multi-monitor issues
* exwm-workspace.el (exwm-workspace--on-focus-in, exwm-workspace--init):
Handle unexpected frame switch in `focus-in-hook'.
* exwm-floating.el (exwm-floating--set-floating): If the absolute position
is (0, 0) then the relative position is also the same.
---
exwm-floating.el | 4 +++-
exwm-workspace.el | 12 ++++++++++++
2 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/exwm-floating.el b/exwm-floating.el
index a67bc19..770976d 100644
--- a/exwm-floating.el
+++ b/exwm-floating.el
@@ -91,7 +91,9 @@
(frame-geometry (frame-parameter original-frame 'exwm-geometry)))
(exwm--log "Floating geometry (original, absolute): %dx%d%+d%+d"
width height x y)
- (when frame-geometry
+ (when (and frame-geometry
+ (/= x 0)
+ (/= y 0))
(setq x (- x (slot-value frame-geometry 'x))
y (- y (slot-value frame-geometry 'y))))
(exwm--log "Floating geometry (original, relative): %dx%d%+d%+d"
diff --git a/exwm-workspace.el b/exwm-workspace.el
index 8dd6284..60cf9dd 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -229,6 +229,16 @@ The optional FORCE option is for internal use only."
(xcb:flush exwm--connection))
(run-hooks 'exwm-workspace-switch-hook))))
+(defun exwm-workspace--on-focus-in ()
+ "Handle unexpected frame switch."
+ ;; `focus-in-hook' is run by `handle-switch-frame'.
+ (unless (eq this-command #'handle-switch-frame)
+ (let ((index (cl-position (selected-frame) exwm-workspace--list)))
+ (exwm--log "Focus on workspace %s" index)
+ (when (and index (/= index exwm-workspace-current-index))
+ (exwm--log "Workspace was switched unexpectedly")
+ (exwm-workspace-switch index)))))
+
(defvar exwm-floating-border-width)
(defvar exwm-floating-border-color)
@@ -679,6 +689,8 @@ The optional FORCE option is for internal use only."
(add-hook 'minibuffer-exit-hook #'exwm-workspace--on-minibuffer-exit)
(run-with-idle-timer 0 t #'exwm-workspace--on-echo-area-dirty)
(add-hook 'echo-area-clear-hook #'exwm-workspace--on-echo-area-clear)
+ ;; Handle unexpected frame switch.
+ (add-hook 'focus-in-hook #'exwm-workspace--on-focus-in)
;; Create workspace frames.
(dotimes (_ exwm-workspace-number)
(push (make-frame `((window-system . x)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/exwm ddbbeda: Fix 2 multi-monitor issues,
Chris Feng <=