about summary refs log tree commit diff
diff options
context:
space:
mode:
authorChris Feng <chris.w.feng@gmail.com>2016-03-01T10·51+0800
committerChris Feng <chris.w.feng@gmail.com>2016-03-01T10·53+0800
commit93e42136e3eba95c129c92a928b0c27517f2af7e (patch)
tree97c4c05ff1190290bebca561a1ab24857dc7e136
parent74555b25c2dccacd550762d339175494d3d78562 (diff)
Avoid unnecessary input focus changes in line-mode
* exwm-input.el (exwm-input--grab-keyboard, exwm-input--release-keyboard):
Grab keys on X windows instead to prevent unexpected input focus changes.

* exwm-workspace.el (exwm-workspace--show-minibuffer): The workaround for
cursor flickering issue is no more needed.
-rw-r--r--exwm-input.el8
-rw-r--r--exwm-workspace.el9
2 files changed, 3 insertions, 14 deletions
diff --git a/exwm-input.el b/exwm-input.el
index 943dd7da831f..31125a25c694 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -325,9 +325,7 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.")
     (when (xcb:+request-checked+request-check exwm--connection
               (make-instance 'xcb:GrabKey
                              :owner-events 0
-                             :grab-window
-                             (with-current-buffer (exwm--id->buffer id)
-                               exwm--container)
+                             :grab-window id
                              :modifiers xcb:ModMask:Any
                              :key xcb:Grab:Any
                              :pointer-mode xcb:GrabMode:Async
@@ -342,9 +340,7 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.")
     (when (xcb:+request-checked+request-check exwm--connection
               (make-instance 'xcb:UngrabKey
                              :key xcb:Grab:Any
-                             :grab-window
-                             (with-current-buffer (exwm--id->buffer id)
-                               exwm--container)
+                             :grab-window id
                              :modifiers xcb:ModMask:Any))
       (exwm--log "Failed to release keyboard for #x%x" id))
     (setq exwm--on-KeyPress #'exwm-input--on-KeyPress-char-mode)))
diff --git a/exwm-workspace.el b/exwm-workspace.el
index 89bb6940b05b..6fc38d4a32bb 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -513,14 +513,7 @@ The optional FORCE option is for internal use only."
       (make-instance 'xcb:MapWindow
                      :window (frame-parameter exwm-workspace--minibuffer
                                               'exwm-container)))
-  (xcb:flush exwm--connection)
-  ;; Unfortunately we need the following lines to workaround a cursor
-  ;; flickering issue for line-mode floating X windows.  They just make the
-  ;; minibuffer appear to be focused.
-  (with-current-buffer (window-buffer (minibuffer-window
-                                       exwm-workspace--minibuffer))
-    (setq cursor-in-non-selected-windows
-          (frame-parameter exwm-workspace--minibuffer 'cursor-type))))
+  (xcb:flush exwm--connection))
 
 (defun exwm-workspace--hide-minibuffer ()
   "Hide the minibuffer frame."