emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/exwm fe653ba 1/2: Only check input focus for globally a


From: Chris Feng
Subject: [elpa] externals/exwm fe653ba 1/2: Only check input focus for globally active model
Date: Sun, 14 Aug 2016 04:28:15 +0000 (UTC)

branch: externals/exwm
commit fe653ba244758362ac83603a28389660834fcb5a
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>

    Only check input focus for globally active model
    
    * exwm-input.el (exwm-input--set-focus): Partly revert 810b471.
---
 exwm-input.el |   61 ++++++++++++++++++++++++++++-----------------------------
 1 file changed, 30 insertions(+), 31 deletions(-)

diff --git a/exwm-input.el b/exwm-input.el
index 668e495..e582812 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -61,38 +61,37 @@
 (defun exwm-input--set-focus (id)
   "Set input focus to window ID in a proper way."
   (when (exwm--id->buffer id)
-    (let ((focus (slot-value (xcb:+request-unchecked+reply exwm--connection
+    (with-current-buffer (exwm--id->buffer id)
+      (cond
+       ((and (not exwm--hints-input)
+             (memq xcb:Atom:WM_TAKE_FOCUS exwm--protocols))
+        (when (= (frame-parameter nil 'exwm-id)
+                 (slot-value (xcb:+request-unchecked+reply exwm--connection
                                  (make-instance 'xcb:GetInputFocus))
-                             'focus)))
-      (unless (= focus id)
-        (with-current-buffer (exwm--id->buffer id)
-          (cond
-           ((and (not exwm--hints-input)
-                 (memq xcb:Atom:WM_TAKE_FOCUS exwm--protocols))
-            (when (= focus (frame-parameter nil 'exwm-id))
-              (exwm--log "Focus on #x%x with WM_TAKE_FOCUS" id)
-              (exwm-input--update-timestamp
-               (lambda (timestamp id)
-                 (let ((event (make-instance 'xcb:icccm:WM_TAKE_FOCUS
-                                             :window id
-                                             :time timestamp)))
-                   (setq event (xcb:marshal event exwm--connection))
-                   (xcb:+request exwm--connection
-                       (make-instance 'xcb:icccm:SendEvent
-                                      :destination id
-                                      :event event))
-                   (exwm-input--set-active-window id)
-                   (xcb:flush exwm--connection)))
-               id)))
-           (t
-            (exwm--log "Focus on #x%x with SetInputFocus" id)
-            (xcb:+request exwm--connection
-                (make-instance 'xcb:SetInputFocus
-                               :revert-to xcb:InputFocus:Parent
-                               :focus id
-                               :time xcb:Time:CurrentTime))
-            (exwm-input--set-active-window id)
-            (xcb:flush exwm--connection))))))))
+                             'focus))
+          (exwm--log "Focus on #x%x with WM_TAKE_FOCUS" id)
+          (exwm-input--update-timestamp
+           (lambda (timestamp id)
+             (let ((event (make-instance 'xcb:icccm:WM_TAKE_FOCUS
+                                         :window id
+                                         :time timestamp)))
+               (setq event (xcb:marshal event exwm--connection))
+               (xcb:+request exwm--connection
+                   (make-instance 'xcb:icccm:SendEvent
+                                  :destination id
+                                  :event event))
+               (exwm-input--set-active-window id)
+               (xcb:flush exwm--connection)))
+           id)))
+       (t
+        (exwm--log "Focus on #x%x with SetInputFocus" id)
+        (xcb:+request exwm--connection
+            (make-instance 'xcb:SetInputFocus
+                           :revert-to xcb:InputFocus:Parent
+                           :focus id
+                           :time xcb:Time:CurrentTime))
+        (exwm-input--set-active-window id)
+        (xcb:flush exwm--connection))))))
 
 (defun exwm-input--update-timestamp (callback &rest args)
   "Fetch the latest timestamp from the server and feed it to CALLBACK.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]