diff options
author | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2016-07-17T12·00+0000 |
---|---|---|
committer | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2016-07-17T12·00+0000 |
commit | 90185457261eb77ac80609d5d219e0837e81af82 (patch) | |
tree | ad36307ae0ba561a01d20b5ec12a37ef9ff07c4f | |
parent | 8e2da00b6e7e530a53b584184dc94b9366ae7c69 (diff) |
New function exwm-workspace--workspace-p
* exwm-workspace.el (exwm-workspace--workspace-p): New function. * exwm-input.el (exwm-input--on-ButtonPress): * exwm-workspace.el (exwm-workspace-switch): * exwm-layout.el (exwm-layout--refresh): Use it.
-rw-r--r-- | exwm-input.el | 3 | ||||
-rw-r--r-- | exwm-layout.el | 5 | ||||
-rw-r--r-- | exwm-workspace.el | 6 |
3 files changed, 10 insertions, 4 deletions
diff --git a/exwm-input.el b/exwm-input.el index d581e7e85785..22c7a3606b52 100644 --- a/exwm-input.el +++ b/exwm-input.el @@ -180,6 +180,7 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.") (declare-function exwm-floating--start-moveresize "exwm-floating.el" (id &optional type)) (declare-function exwm-workspace--position "exwm-workspace.el" (frame)) +(declare-function exwm-workspace--workspace-p "exwm-workspace.el" (workspace)) (defvar exwm-workspace--list) @@ -206,7 +207,7 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.") (unless (eq window (selected-window)) (setq frame (window-frame window)) (unless (eq frame exwm-workspace--current) - (if (memq frame exwm-workspace--list) + (if (exwm-workspace--workspace-p frame) ;; The X window is on another workspace (exwm-workspace-switch (exwm-workspace--position frame)) diff --git a/exwm-layout.el b/exwm-layout.el index db1aa0d5fdfa..4d8539004792 100644 --- a/exwm-layout.el +++ b/exwm-layout.el @@ -153,7 +153,6 @@ (xcb:flush exwm--connection)))) (defvar exwm-workspace--current) -(defvar exwm-workspace--list) (declare-function exwm-input-grab-keyboard "exwm-input.el") (declare-function exwm-input-release-keyboard "exwm-input.el") @@ -282,6 +281,8 @@ selected by `other-buffer'." (defvar exwm-layout-show-all-buffers nil "Non-nil to allow switching to buffers on other workspaces.") +(declare-function exwm-workspace--workspace-p "exwm-workspace.el" + (workspace)) (defun exwm-layout--set-client-list-stacking () "Set _NET_CLIENT_LIST_STACKING." @@ -312,7 +313,7 @@ selected by `other-buffer'." covered-buffers ;EXWM-buffers covered by a new X window. vacated-windows ;Windows previously displaying EXWM-buffers. windows) - (if (not (memq frame exwm-workspace--list)) + (if (not (exwm-workspace--workspace-p frame)) (if (frame-parameter frame 'exwm-outer-id) ;; Refresh a floating frame (let ((window (frame-first-window frame))) diff --git a/exwm-workspace.el b/exwm-workspace.el index a3f4c2e75b0b..e2df37ede98e 100644 --- a/exwm-workspace.el +++ b/exwm-workspace.el @@ -40,6 +40,10 @@ NIL if FRAME is not a workspace" "Retrieve total number of workspaces." (length exwm-workspace--list)) +(defsubst exwm-workspace--workspace-p (frame) + "Return t if FRAME is a workspace." + (memq frame exwm-workspace--list)) + (defvar exwm-workspace--switch-map (let ((map (make-sparse-keymap))) (define-key map [t] (lambda () (interactive))) @@ -334,7 +338,7 @@ The optional FORCE option is for internal use only." :stack-mode xcb:StackMode:Above)))) (setq exwm-workspace--current frame exwm-workspace-current-index index) - (unless (memq (selected-frame) exwm-workspace--list) + (unless (exwm-workspace--workspace-p (selected-frame)) ;; Save the floating frame window selected on the previous workspace. (set-frame-parameter (with-current-buffer (window-buffer) exwm--frame) |