[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm 048994c 24/64: Remove redundant code caused by the
From: |
Chris Feng |
Subject: |
[elpa] externals/exwm 048994c 24/64: Remove redundant code caused by the concurrency of events (continued) |
Date: |
Thu, 17 Sep 2015 23:17:58 +0000 |
branch: externals/exwm
commit 048994c7948528630b5c13f56dd22a9b2972e09c
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>
Remove redundant code caused by the concurrency of events (continued)
Remove `exwm--with-current-id`, which was introduced to as a wrapper to
`with-current-buffer` to do extra checks. Note that in functions run as
hooks,
the validation of window ID is still required as they are not synchronized
with
events.
---
exwm-input.el | 37 ++++++++++++++++++++-----------------
exwm-layout.el | 4 +++-
exwm-manage.el | 4 ++--
exwm.el | 26 +++++++++-----------------
4 files changed, 34 insertions(+), 37 deletions(-)
diff --git a/exwm-input.el b/exwm-input.el
index 97dfd53..24aa94a 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -56,7 +56,7 @@ It's updated in several occasions, and only used by
`exwm-input--set-focus'.")
(defun exwm-input--set-focus (id)
"Set input focus to window ID in a proper way."
- (exwm--with-current-id id
+ (with-current-buffer (exwm--id->buffer id)
(exwm--log "Set focus ID to #x%x" id)
(setq exwm-input--focus-id id)
(if (and (not exwm--hints-input)
@@ -105,21 +105,24 @@ It's updated in several occasions, and only used by
`exwm-input--set-focus'.")
exwm--floating-frame)
(x-focus-frame exwm--floating-frame)))
;; Finally focus the window
- (exwm-input--set-focus exwm-input--focus-id))
- (exwm--with-current-id exwm-input--focus-id
- (exwm--log "Set focus ID to #x%x" xcb:Window:None)
- (setq exwm-input--focus-id xcb:Window:None)
- (let ((frame (selected-frame)))
- (if exwm--floating-frame
- (unless (or (eq frame exwm--floating-frame)
- (active-minibuffer-window))
- ;; Redirect input focus to the workspace frame
- (exwm--log "Redirect input focus (%s => %s)"
- exwm--floating-frame frame)
- (redirect-frame-focus exwm--floating-frame frame))
- ;; Focus the workspace frame
- (exwm--log "Focus on workspace %s" frame)
- (x-focus-frame frame))))))
+ (when (exwm--id->buffer exwm-input--focus-id)
+ (exwm-input--set-focus exwm-input--focus-id)))
+ (let ((buffer (exwm--id->buffer exwm-input--focus-id)))
+ (when buffer
+ (with-current-buffer buffer
+ (exwm--log "Set focus ID to #x%x" xcb:Window:None)
+ (setq exwm-input--focus-id xcb:Window:None)
+ (let ((frame (selected-frame)))
+ (if exwm--floating-frame
+ (unless (or (eq frame exwm--floating-frame)
+ (active-minibuffer-window))
+ ;; Redirect input focus to the workspace frame
+ (exwm--log "Redirect input focus (%s => %s)"
+ exwm--floating-frame frame)
+ (redirect-frame-focus exwm--floating-frame frame))
+ ;; Focus the workspace frame
+ (exwm--log "Focus on workspace %s" frame)
+ (x-focus-frame frame))))))))
(setq exwm-input--focus-lock nil)))
(defun exwm-input--finish-key-sequence ()
@@ -163,7 +166,7 @@ It's updated in several occasions, and only used by
`exwm-input--set-focus'.")
(t
;; Click to focus
(unless (and (boundp 'exwm--id) (= event exwm--id))
- (exwm--with-current-id event
+ (with-current-buffer (exwm--id->buffer event)
(select-frame-set-input-focus (or exwm--floating-frame
exwm--frame))
(select-window (get-buffer-window nil 'visible))))
diff --git a/exwm-layout.el b/exwm-layout.el
index 4ae4859..5d056af 100644
--- a/exwm-layout.el
+++ b/exwm-layout.el
@@ -34,7 +34,9 @@
(make-instance 'xcb:icccm:set-WM_STATE
:window id :state xcb:icccm:WM_STATE:NormalState
:icon xcb:Window:None))
- (let* ((edges (or (exwm--with-current-id id exwm--floating-edges)
+ (let* ((buffer (exwm--id->buffer id))
+ (edges (or (and buffer
+ (with-current-buffer buffer exwm--floating-edges))
(window-inside-pixel-edges window)))
(x (elt edges 0))
(y (elt edges 1))
diff --git a/exwm-manage.el b/exwm-manage.el
index 6c22948..9d98607 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -35,7 +35,7 @@ corresponding buffer.")
(defun exwm-manage--update-geometry (id &optional force)
"Update window geometry."
- (exwm--with-current-id id
+ (with-current-buffer (exwm--id->buffer id)
(unless (and exwm--geometry (not force))
(let ((reply (xcb:+request-unchecked+reply exwm--connection
(make-instance 'xcb:GetGeometry :drawable id))))
@@ -137,7 +137,7 @@ corresponding buffer.")
(exwm-input-grab-keyboard id)
(exwm-workspace--update-switch-history)
(setq exwm-input--focus-lock nil) ;unlocked in advance
- (exwm--with-current-id id
+ (with-current-buffer (exwm--id->buffer id)
(run-hooks 'exwm-manage-finish-hook))))
(setq exwm-input--focus-lock nil))
diff --git a/exwm.el b/exwm.el
index 4c4d4af..95b6742 100644
--- a/exwm.el
+++ b/exwm.el
@@ -208,17 +208,9 @@
(exwm-layout--refresh)
(exwm-input-grab-keyboard))))
-(defmacro exwm--with-current-id (id &rest body)
- "Evaluate BODY in the context of the buffer corresponding to window ID."
- (declare (indent 1))
- `(when ,id
- (let ((buffer (exwm--id->buffer ,id)))
- (when buffer
- (with-current-buffer buffer ,@body)))))
-
(defun exwm--update-window-type (id &optional force)
"Update _NET_WM_WINDOW_TYPE."
- (exwm--with-current-id id
+ (with-current-buffer (exwm--id->buffer id)
(unless (and exwm-window-type (not force))
(let ((reply (xcb:+request-unchecked+reply exwm--connection
(make-instance 'xcb:ewmh:get-_NET_WM_WINDOW_TYPE
@@ -231,7 +223,7 @@
(defun exwm--update-class (id &optional force)
"Update WM_CLASS."
- (exwm--with-current-id id
+ (with-current-buffer (exwm--id->buffer id)
(unless (and exwm-instance-name exwm-class-name (not force))
(let ((reply (xcb:+request-unchecked+reply exwm--connection
(make-instance 'xcb:icccm:get-WM_CLASS :window id))))
@@ -246,7 +238,7 @@
(defun exwm--update-utf8-title (id &optional force)
"Update _NET_WM_NAME."
- (exwm--with-current-id id
+ (with-current-buffer (exwm--id->buffer id)
(when (or force (not exwm-title))
(let ((reply (xcb:+request-unchecked+reply exwm--connection
(make-instance 'xcb:ewmh:get-_NET_WM_NAME :window id))))
@@ -258,7 +250,7 @@
(defun exwm--update-ctext-title (id &optional force)
"Update WM_NAME."
- (exwm--with-current-id id
+ (with-current-buffer (exwm--id->buffer id)
(unless (or exwm--title-is-utf8
(and exwm-title (not force)))
(let ((reply (xcb:+request-unchecked+reply exwm--connection
@@ -275,7 +267,7 @@
(defun exwm--update-transient-for (id &optional force)
"Update WM_TRANSIENT_FOR."
- (exwm--with-current-id id
+ (with-current-buffer (exwm--id->buffer id)
(unless (and exwm-transient-for (not force))
(let ((reply (xcb:+request-unchecked+reply exwm--connection
(make-instance 'xcb:icccm:get-WM_TRANSIENT_FOR
@@ -285,7 +277,7 @@
(defun exwm--update-normal-hints (id &optional force)
"Update WM_NORMAL_HINTS."
- (exwm--with-current-id id
+ (with-current-buffer (exwm--id->buffer id)
(unless (and (not force)
(or exwm--normal-hints-x exwm--normal-hints-y
exwm--normal-hints-width exwm--normal-hints-height
@@ -332,7 +324,7 @@
(defun exwm--update-hints (id &optional force)
"Update WM_HINTS."
- (exwm--with-current-id id
+ (with-current-buffer (exwm--id->buffer id)
(unless (and (not force) exwm--hints-input exwm--hints-urgency)
(let ((reply (xcb:+request-unchecked+reply exwm--connection
(make-instance 'xcb:icccm:get-WM_HINTS :window id))))
@@ -351,7 +343,7 @@
(defun exwm--update-protocols (id &optional force)
"Update WM_PROTOCOLS."
- (exwm--with-current-id id
+ (with-current-buffer (exwm--id->buffer id)
(unless (and exwm--protocols (not force))
(let ((reply (xcb:+request-unchecked+reply exwm--connection
(make-instance 'xcb:icccm:get-WM_PROTOCOLS
@@ -361,7 +353,7 @@
(defun exwm--update-state (id &optional force)
"Update WM_STATE."
- (exwm--with-current-id id
+ (with-current-buffer (exwm--id->buffer id)
(unless (and exwm-state (not force))
(let ((reply (xcb:+request-unchecked+reply exwm--connection
(make-instance 'xcb:icccm:get-WM_STATE :window id))))
- [elpa] externals/exwm 42f4ec6 20/64: Show moved window by default, (continued)
- [elpa] externals/exwm 42f4ec6 20/64: Show moved window by default, Chris Feng, 2015/09/17
- [elpa] externals/exwm 36bb579 21/64: Refresh when minibuffer grows (fix #10), Chris Feng, 2015/09/17
- [elpa] externals/exwm 2ad1a89 14/64: Various input fixes, Chris Feng, 2015/09/17
- [elpa] externals/exwm 84f0f03 15/64: Fix input focus lost after closing window, Chris Feng, 2015/09/17
- [elpa] externals/exwm 63402b0 19/64: Correct layout refresh problems, Chris Feng, 2015/09/17
- [elpa] externals/exwm edc70eb 22/64: Remove redundant code caused by the concurrency of events, Chris Feng, 2015/09/17
- [elpa] externals/exwm 2d4104a 23/64: Fix emacsclient bugs, Chris Feng, 2015/09/17
- [elpa] externals/exwm 24b964b 25/64: Ignore repeated `MappingNotify` events, Chris Feng, 2015/09/17
- [elpa] externals/exwm 801185c 27/64: Fix buffer switch problems, Chris Feng, 2015/09/17
- [elpa] externals/exwm 1ce18af 28/64: Center floating windows by default, Chris Feng, 2015/09/17
- [elpa] externals/exwm 048994c 24/64: Remove redundant code caused by the concurrency of events (continued),
Chris Feng <=
- [elpa] externals/exwm 35560a4 30/64: Minor fixes for emacsclient, Chris Feng, 2015/09/17
- [elpa] externals/exwm b755296 26/64: Remove redundant code caused by the concurrency of events (contd, 2), Chris Feng, 2015/09/17
- [elpa] externals/exwm 7bfd429 33/64: Honor `value-mask` field in ConfigureRequest event, Chris Feng, 2015/09/17
- [elpa] externals/exwm dba43b0 32/64: Fix input focus stealing, Chris Feng, 2015/09/17
- [elpa] externals/exwm d998b42 34/64: Provide hooks run when the floating state of a window changes (close #28), Chris Feng, 2015/09/17
- [elpa] externals/exwm 15ad591 35/64: Fix bug when moving a window to the current workspace, Chris Feng, 2015/09/17
- [elpa] externals/exwm 43b00d2 36/64: fix buffer renaming, Chris Feng, 2015/09/17
- [elpa] externals/exwm 2d07429 39/64: Merge branch 'move-window-fix' of https://github.com/pipcet/exwm into pipcet-move-window-fix, Chris Feng, 2015/09/17
- [elpa] externals/exwm 5882015 40/64: Merge branch 'pipcet-move-window-fix', Chris Feng, 2015/09/17
- [elpa] externals/exwm 04e4269 29/64: Improve input focus switch mechanism, Chris Feng, 2015/09/17