branch: externals/exwm
commit 90185457261eb77ac80609d5d219e0837e81af82
Author: Adrián Medraño Calvo <[email protected]>
Commit: Adrián Medraño Calvo <[email protected]>
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.
---
exwm-input.el | 3 ++-
exwm-layout.el | 5 +++--
exwm-workspace.el | 6 +++++-
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/exwm-input.el b/exwm-input.el
index d581e7e..22c7a36 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 db1aa0d..4d85390 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 a3f4c2e..e2df37e 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)