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

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

[elpa] externals/exwm 46461d9 1/2: Improve robustness


From: Chris Feng
Subject: [elpa] externals/exwm 46461d9 1/2: Improve robustness
Date: Sat, 17 Oct 2015 03:04:39 +0000

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

    Improve robustness
    
    * exwm-input.el (exwm-input--update-focus, exwm-input--on-ButtonPress):
      Make sure Emacs windows are alive before manipulating them.
---
 exwm-input.el |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/exwm-input.el b/exwm-input.el
index 9def8ca..6c34853 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -111,7 +111,9 @@ It's updated in several occasions, and only used by 
`exwm-input--set-focus'.")
 
 (defun exwm-input--update-focus ()
   "Update input focus."
-  (when exwm-input--focus-window
+  (when (and exwm-input--focus-window
+             ;; The Emacs window may have been deleted
+             (window-buffer exwm-input--focus-window))
     (with-current-buffer (window-buffer exwm-input--focus-window)
       (if (eq major-mode 'exwm-mode)
           (if (not (eq exwm--frame exwm-workspace--current))
@@ -203,7 +205,12 @@ It's updated in several occasions, and only used by 
`exwm-input--set-focus'.")
                          ;; The floating X window is on another workspace
                          (exwm-workspace-switch
                           (cl-position exwm--frame exwm-workspace--list))))))
-                 (select-window window)))
+                 ;; It has been reported that the `window' may have be deleted
+                 (if (window-live-p window)
+                     (select-window window)
+                   (setq window
+                         (get-buffer-window (exwm--id->buffer event) t))
+                   (when window (select-window window)))))
              ;; The event should be replayed
              (setq mode xcb:Allow:ReplayPointer))))
     (xcb:+request exwm--connection



reply via email to

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