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:
parent
4ad76b879d
commit
f685de12d4
1 changed files with 15 additions and 1 deletions
|
@ -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))))
|
||||
|
|
Loading…
Reference in a new issue