mirror of
https://github.com/emacs-exwm/exwm.git
synced 2024-11-27 06:48:00 +01:00
Abort recursive edit before switching workspaces
* exwm-workspace.el (exwm-workspace-switch): Abort recursive edit before switching to other workspace. This avoids the usual `set-window-configuration' calls (e.g., by `eval-expression') to switch *us back to the previous workspace.
This commit is contained in:
parent
95d6aa96cf
commit
cddb3429d2
1 changed files with 10 additions and 6 deletions
|
@ -587,6 +587,16 @@ for internal use only."
|
||||||
(when (or force (not (eq frame exwm-workspace--current)))
|
(when (or force (not (eq frame exwm-workspace--current)))
|
||||||
(unless (window-live-p window)
|
(unless (window-live-p window)
|
||||||
(setq window (frame-selected-window frame)))
|
(setq window (frame-selected-window frame)))
|
||||||
|
;; Close the (possible) active minibuffer. Aborting the recursive edit
|
||||||
|
;; level will abort the execution of this very command. Schedule it to
|
||||||
|
;; run immediately afterward. This must all be done before the new
|
||||||
|
;; workspace is selected in the new workspace, in order to avoid the focus
|
||||||
|
;; to go back to the previous frame due to resetting the window
|
||||||
|
;; configuration (e.g. `eval-expression').
|
||||||
|
(when (active-minibuffer-window)
|
||||||
|
(exwm--defer 0 (lambda ()
|
||||||
|
(exwm-workspace-switch frame-or-index force)))
|
||||||
|
(abort-recursive-edit))
|
||||||
;; Raise this frame.
|
;; Raise this frame.
|
||||||
(xcb:+request exwm--connection
|
(xcb:+request exwm--connection
|
||||||
(make-instance 'xcb:ConfigureWindow
|
(make-instance 'xcb:ConfigureWindow
|
||||||
|
@ -635,12 +645,6 @@ for internal use only."
|
||||||
(select-window window)
|
(select-window window)
|
||||||
(x-focus-frame (window-frame window)) ;The real input focus.
|
(x-focus-frame (window-frame window)) ;The real input focus.
|
||||||
(set-frame-parameter frame 'exwm-selected-window nil)
|
(set-frame-parameter frame 'exwm-selected-window nil)
|
||||||
;; Close the (possible) active minibuffer
|
|
||||||
(when (active-minibuffer-window)
|
|
||||||
(exwm--defer 0 (lambda ()
|
|
||||||
;; Might be aborted by then.
|
|
||||||
(when (active-minibuffer-window)
|
|
||||||
(abort-recursive-edit)))))
|
|
||||||
(if (exwm-workspace--minibuffer-own-frame-p)
|
(if (exwm-workspace--minibuffer-own-frame-p)
|
||||||
;; Resize the minibuffer frame.
|
;; Resize the minibuffer frame.
|
||||||
(exwm-workspace--resize-minibuffer-frame)
|
(exwm-workspace--resize-minibuffer-frame)
|
||||||
|
|
Loading…
Reference in a new issue