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.
This commit is contained in:
Chris Feng 2015-09-25 13:45:30 +08:00
parent 4ad76b879d
commit f685de12d4

View file

@ -187,8 +187,22 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.")
(exwm-floating--start-moveresize event)) (exwm-floating--start-moveresize event))
(t (t
;; Click to focus ;; 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)) (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))) (select-window window)))
;; The event should be replayed ;; The event should be replayed
(setq mode xcb:Allow:ReplayPointer)))) (setq mode xcb:Allow:ReplayPointer))))