about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--exwm-input.el2
-rw-r--r--exwm-layout.el7
-rw-r--r--exwm-randr.el5
-rw-r--r--exwm-workspace.el13
4 files changed, 17 insertions, 10 deletions
diff --git a/exwm-input.el b/exwm-input.el
index 757efb756641..85be1efb2023 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -111,7 +111,7 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.")
             (exwm-input--set-focus exwm--id)
             ;; Adjust stacking orders
             (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.
                   (xcb:+request exwm--connection
                       (make-instance 'xcb:ConfigureWindow
diff --git a/exwm-layout.el b/exwm-layout.el
index 0dc5e1ac0285..871438f9f6e0 100644
--- a/exwm-layout.el
+++ b/exwm-layout.el
@@ -203,8 +203,9 @@
         (id (frame-parameter frame 'exwm-outer-id))
         (workspace (frame-parameter frame 'exwm-workspace)))
     (with-slots (x y width height) geometry
-      (when (eq frame exwm-workspace--current)
-        (exwm-workspace--resize-minibuffer width height))
+      (when (and (eq frame exwm-workspace--current)
+                 (exwm-workspace--minibuffer-own-frame-p))
+        (exwm-workspace--resize-minibuffer-frame width height))
       (exwm-layout--resize-container id workspace x y width height)
       (xcb:flush exwm--connection))))
 
@@ -395,7 +396,7 @@ See also `exwm-layout-enlarge-window'."
   "Initialize layout module."
   ;; Auto refresh layout
   (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
     (add-hook 'minibuffer-setup-hook #'exwm-layout--on-minibuffer-setup t)
     (run-with-idle-timer 0 t #'exwm-layout--on-echo-area-change t)
diff --git a/exwm-randr.el b/exwm-randr.el
index 7e0d9bab64fe..51161a455d87 100644
--- a/exwm-randr.el
+++ b/exwm-randr.el
@@ -103,8 +103,9 @@
                                          (frame-parameter frame
                                                           'exwm-workspace)
                                          x y width height)
-          (when (eq frame exwm-workspace--current)
-            (exwm-workspace--resize-minibuffer width height))
+          (when (and (eq frame exwm-workspace--current)
+                     (exwm-workspace--minibuffer-own-frame-p))
+            (exwm-workspace--resize-minibuffer-frame width height))
           (setq workareas
                 (nconc workareas (list x y width (- height
                                                     workarea-offset)))
diff --git a/exwm-workspace.el b/exwm-workspace.el
index 1c23ca0229da..b166733ac64c 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -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
   "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.
 
 If WIDTH and HEIGHT of the workspace is not specified, they're get from the
 workspace frame."
+  (cl-assert (exwm-workspace--minibuffer-own-frame-p))
   (let ((y (if (eq exwm-workspace-minibuffer-position 'top)
                0
              (- (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
         (when (active-minibuffer-window)
           (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)
           ;; Resize/reposition the minibuffer frame
           (xcb:+request exwm--connection
@@ -178,7 +183,7 @@ The optional FORCE option is for internal use only."
                                               'exwm-container)
                              :parent (frame-parameter frame 'exwm-workspace)
                              :x 0 :y 0))
-          (exwm-workspace--resize-minibuffer))
+          (exwm-workspace--resize-minibuffer-frame))
         ;; Hide windows in other workspaces by preprending a space
         (unless exwm-workspace-show-all-buffers
           (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))
             (x (yes-or-no-p (format "[EXWM] %d window%s currently alive. %s"
                                     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.
       (progn
         (setq exwm-workspace--list (frame-list))