From 55cec760ca3cee21e735bff9a9a5229b222b97ff Mon Sep 17 00:00:00 2001 From: Chris Feng Date: Sun, 21 Feb 2016 20:19:45 +0800 Subject: Fix emacsclient related issues * exwm-systemtray.el (exwm-systemtray-height): The value is not available when emacsclient has just loaded the library (and it crashes emacsclient). * exwm-workspace.el (exwm-workspace--init): Set `default-minibuffer-frame' later to prevent it from being modified when using emacsclient. * exwm-floating.el: * exwm-randr.el: * exwm-systemtray.el: * exwm-workspace.el: * exwm.el: Use `exwm-workspace--minibuffer-own-frame-p' instead of the raw variable. --- exwm-workspace.el | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'exwm-workspace.el') diff --git a/exwm-workspace.el b/exwm-workspace.el index 99bc605e5f20..07bfdd9d5e37 100644 --- a/exwm-workspace.el +++ b/exwm-workspace.el @@ -274,7 +274,7 @@ The optional FORCE option is for internal use only." (frame-parameter frame 'exwm-workspace) :x x :y y)) (xcb:flush exwm--connection) - (unless exwm-workspace-minibuffer-position + (unless (exwm-workspace--minibuffer-own-frame-p) ;; The frame needs to be recreated since it won't use the ;; minibuffer on the new workspace. (let* ((old-frame exwm--floating-frame) @@ -567,7 +567,7 @@ This functions is modified from `display-buffer-reuse-window' and (xcb:+request exwm--connection (make-instance 'xcb:MapWindow :window (car i)))) ;; Reparent out the minibuffer frame. - (when exwm-workspace-minibuffer-position + (when (exwm-workspace--minibuffer-own-frame-p) (xcb:+request exwm--connection (make-instance 'xcb:ReparentWindow :window (frame-parameter exwm-workspace--minibuffer @@ -614,13 +614,14 @@ This functions is modified from `display-buffer-reuse-window' and (setq exwm-workspace--minibuffer (make-frame '((window-system . x) (minibuffer . only) (left . 10000) (right . 10000) - (width . 0) (height . 0))) - default-minibuffer-frame exwm-workspace--minibuffer) + (width . 0) (height . 0)))) ;; Remove/hide existing frames. (dolist (f old-frames) (if (frame-parameter f 'client) (make-frame-invisible f) (delete-frame f)))) + ;; This is the only usable minibuffer frame. + (setq default-minibuffer-frame exwm-workspace--minibuffer) (let ((outer-id (string-to-number (frame-parameter exwm-workspace--minibuffer 'outer-window-id))) -- cgit 1.4.1