mirror of
https://github.com/ch11ng/exwm.git
synced 2024-11-30 14:38:00 +01:00
Merge branch 'fjl-fix-resize-minibuffer'
This commit is contained in:
commit
e9e476c4de
4 changed files with 17 additions and 10 deletions
|
@ -111,7 +111,7 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.")
|
||||||
(exwm-input--set-focus exwm--id)
|
(exwm-input--set-focus exwm--id)
|
||||||
;; Adjust stacking orders
|
;; Adjust stacking orders
|
||||||
(when exwm--floating-frame
|
(when exwm--floating-frame
|
||||||
(if (memq exwm-workspace-minibuffer-position '(top bottom))
|
(if (exwm-workspace--minibuffer-own-frame-p)
|
||||||
;; Put this floating X window just below the minibuffer.
|
;; Put this floating X window just below the minibuffer.
|
||||||
(xcb:+request exwm--connection
|
(xcb:+request exwm--connection
|
||||||
(make-instance 'xcb:ConfigureWindow
|
(make-instance 'xcb:ConfigureWindow
|
||||||
|
|
|
@ -203,8 +203,9 @@
|
||||||
(id (frame-parameter frame 'exwm-outer-id))
|
(id (frame-parameter frame 'exwm-outer-id))
|
||||||
(workspace (frame-parameter frame 'exwm-workspace)))
|
(workspace (frame-parameter frame 'exwm-workspace)))
|
||||||
(with-slots (x y width height) geometry
|
(with-slots (x y width height) geometry
|
||||||
(when (eq frame exwm-workspace--current)
|
(when (and (eq frame exwm-workspace--current)
|
||||||
(exwm-workspace--resize-minibuffer width height))
|
(exwm-workspace--minibuffer-own-frame-p))
|
||||||
|
(exwm-workspace--resize-minibuffer-frame width height))
|
||||||
(exwm-layout--resize-container id workspace x y width height)
|
(exwm-layout--resize-container id workspace x y width height)
|
||||||
(xcb:flush exwm--connection))))
|
(xcb:flush exwm--connection))))
|
||||||
|
|
||||||
|
@ -395,7 +396,7 @@ See also `exwm-layout-enlarge-window'."
|
||||||
"Initialize layout module."
|
"Initialize layout module."
|
||||||
;; Auto refresh layout
|
;; Auto refresh layout
|
||||||
(add-hook 'window-configuration-change-hook #'exwm-layout--refresh)
|
(add-hook 'window-configuration-change-hook #'exwm-layout--refresh)
|
||||||
(unless (memq exwm-workspace-minibuffer-position '(top bottom))
|
(unless (exwm-workspace--minibuffer-own-frame-p)
|
||||||
;; Refresh when minibuffer grows
|
;; Refresh when minibuffer grows
|
||||||
(add-hook 'minibuffer-setup-hook #'exwm-layout--on-minibuffer-setup t)
|
(add-hook 'minibuffer-setup-hook #'exwm-layout--on-minibuffer-setup t)
|
||||||
(run-with-idle-timer 0 t #'exwm-layout--on-echo-area-change t)
|
(run-with-idle-timer 0 t #'exwm-layout--on-echo-area-change t)
|
||||||
|
|
|
@ -103,8 +103,9 @@
|
||||||
(frame-parameter frame
|
(frame-parameter frame
|
||||||
'exwm-workspace)
|
'exwm-workspace)
|
||||||
x y width height)
|
x y width height)
|
||||||
(when (eq frame exwm-workspace--current)
|
(when (and (eq frame exwm-workspace--current)
|
||||||
(exwm-workspace--resize-minibuffer width height))
|
(exwm-workspace--minibuffer-own-frame-p))
|
||||||
|
(exwm-workspace--resize-minibuffer-frame width height))
|
||||||
(setq workareas
|
(setq workareas
|
||||||
(nconc workareas (list x y width (- height
|
(nconc workareas (list x y width (- height
|
||||||
workarea-offset)))
|
workarea-offset)))
|
||||||
|
|
|
@ -111,11 +111,16 @@ Value nil means to use the default position which is fixed at bottom, while
|
||||||
(defvar exwm-workspace--display-echo-area-timer nil
|
(defvar exwm-workspace--display-echo-area-timer nil
|
||||||
"Timer for auto-hiding echo area.")
|
"Timer for auto-hiding echo area.")
|
||||||
|
|
||||||
(defun exwm-workspace--resize-minibuffer (&optional width height)
|
(defun exwm-workspace--minibuffer-own-frame-p ()
|
||||||
|
"Reports whether the minibuffer is displayed in its own frame."
|
||||||
|
(memq exwm-workspace-minibuffer-position '(top bottom)))
|
||||||
|
|
||||||
|
(defun exwm-workspace--resize-minibuffer-frame (&optional width height)
|
||||||
"Resize minibuffer (and its container) to fit the size of workspace.
|
"Resize minibuffer (and its container) to fit the size of workspace.
|
||||||
|
|
||||||
If WIDTH and HEIGHT of the workspace is not specified, they're get from the
|
If WIDTH and HEIGHT of the workspace is not specified, they're get from the
|
||||||
workspace frame."
|
workspace frame."
|
||||||
|
(cl-assert (exwm-workspace--minibuffer-own-frame-p))
|
||||||
(let ((y (if (eq exwm-workspace-minibuffer-position 'top)
|
(let ((y (if (eq exwm-workspace-minibuffer-position 'top)
|
||||||
0
|
0
|
||||||
(- (or height (frame-pixel-height exwm-workspace--current))
|
(- (or height (frame-pixel-height exwm-workspace--current))
|
||||||
|
@ -168,7 +173,7 @@ The optional FORCE option is for internal use only."
|
||||||
;; Close the (possible) active minibuffer
|
;; Close the (possible) active minibuffer
|
||||||
(when (active-minibuffer-window)
|
(when (active-minibuffer-window)
|
||||||
(run-with-idle-timer 0 nil (lambda () (abort-recursive-edit))))
|
(run-with-idle-timer 0 nil (lambda () (abort-recursive-edit))))
|
||||||
(if (not (memq exwm-workspace-minibuffer-position '(top bottom)))
|
(if (not (exwm-workspace--minibuffer-own-frame-p))
|
||||||
(setq default-minibuffer-frame frame)
|
(setq default-minibuffer-frame frame)
|
||||||
;; Resize/reposition the minibuffer frame
|
;; Resize/reposition the minibuffer frame
|
||||||
(xcb:+request exwm--connection
|
(xcb:+request exwm--connection
|
||||||
|
@ -178,7 +183,7 @@ The optional FORCE option is for internal use only."
|
||||||
'exwm-container)
|
'exwm-container)
|
||||||
:parent (frame-parameter frame 'exwm-workspace)
|
:parent (frame-parameter frame 'exwm-workspace)
|
||||||
:x 0 :y 0))
|
:x 0 :y 0))
|
||||||
(exwm-workspace--resize-minibuffer))
|
(exwm-workspace--resize-minibuffer-frame))
|
||||||
;; Hide windows in other workspaces by preprending a space
|
;; Hide windows in other workspaces by preprending a space
|
||||||
(unless exwm-workspace-show-all-buffers
|
(unless exwm-workspace-show-all-buffers
|
||||||
(dolist (i exwm--id-buffer-alist)
|
(dolist (i exwm--id-buffer-alist)
|
||||||
|
@ -459,7 +464,7 @@ This functions is modified from `display-buffer-reuse-window' and
|
||||||
(0 (y-or-n-p prompt))
|
(0 (y-or-n-p prompt))
|
||||||
(x (yes-or-no-p (format "[EXWM] %d window%s currently alive. %s"
|
(x (yes-or-no-p (format "[EXWM] %d window%s currently alive. %s"
|
||||||
x (if (= x 1) "" "s") prompt))))))
|
x (if (= x 1) "" "s") prompt))))))
|
||||||
(if (not (memq exwm-workspace-minibuffer-position '(top bottom)))
|
(if (not (exwm-workspace--minibuffer-own-frame-p))
|
||||||
;; Initialize workspaces with minibuffers.
|
;; Initialize workspaces with minibuffers.
|
||||||
(progn
|
(progn
|
||||||
(setq exwm-workspace--list (frame-list))
|
(setq exwm-workspace--list (frame-list))
|
||||||
|
|
Loading…
Reference in a new issue