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

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

[elpa] externals/exwm f685de1 2/2: Fix click-to-focus on multi-monitor s


From: Chris Feng
Subject: [elpa] externals/exwm f685de1 2/2: Fix click-to-focus on multi-monitor settings
Date: Sat, 26 Sep 2015 01:52:21 +0000

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

    Fix click-to-focus on multi-monitor settings
    
    * exwm-input.el (exwm-input--on-ButtonPress): [click-to-focus] Switch to
      the corresponding workspace if necessary.
---
 exwm-input.el |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/exwm-input.el b/exwm-input.el
index 9645182..9def8ca 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -187,8 +187,22 @@ It's updated in several occasions, and only used by 
`exwm-input--set-focus'.")
              (exwm-floating--start-moveresize event))
             (t
              ;; Click to focus
-             (let ((window (get-buffer-window (exwm--id->buffer event) t)))
+             (let ((window (get-buffer-window (exwm--id->buffer event) t))
+                   frame)
                (unless (eq window (selected-window))
+                 (setq frame (window-frame window))
+                 (unless (eq frame exwm-workspace--current)
+                   (if (memq frame exwm-workspace--list)
+                       ;; The X window is on another workspace
+                       (exwm-workspace-switch
+                        (cl-position frame exwm-workspace--list))
+                     (with-current-buffer (window-buffer window)
+                       (when (and (eq major-mode 'exwm-mode)
+                                  (not (eq exwm--frame
+                                           exwm-workspace--current)))
+                         ;; The floating X window is on another workspace
+                         (exwm-workspace-switch
+                          (cl-position exwm--frame exwm-workspace--list))))))
                  (select-window window)))
              ;; The event should be replayed
              (setq mode xcb:Allow:ReplayPointer))))



reply via email to

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