about summary refs log tree commit diff
path: root/exwm-manage.el
diff options
context:
space:
mode:
authorChris Feng <chris.w.feng@gmail.com>2015-09-20T02·51+0800
committerChris Feng <chris.w.feng@gmail.com>2015-09-20T02·51+0800
commit9f30672b15abd84e5755ed36f505830e80739b13 (patch)
treecaa22af6a6b7625e9b4e1be222d9fc908826b576 /exwm-manage.el
parent81478de9e6676ebe3c67d4673a7d4e56e7ad2265 (diff)
Fix input & input focus issues
* exwm-manage.el (exwm-manage--manage-window): Only grab left/middle/right
  buttons.

* exwm-input.el (exwm-input--on-ButtonPress): Only perform click-to-focus on
  unfocused X windows.

* exwm-input.el (exwm-input--update-focus): Do not focus an X window on
  another workspace, but instead keep focusing on the current one and set
  exwm--urgency parameter on that frame.

* exwm-input.el (exwm-input--fake-key): Send KeyRelease event (some
  applications reply on it).
Diffstat (limited to 'exwm-manage.el')
-rw-r--r--exwm-manage.el20
1 files changed, 10 insertions, 10 deletions
diff --git a/exwm-manage.el b/exwm-manage.el
index e7682cda88e1..d83fc447d632 100644
--- a/exwm-manage.el
+++ b/exwm-manage.el
@@ -145,16 +145,16 @@ corresponding buffer.")
           (make-instance 'xcb:ConfigureWindow
                          :window id :value-mask xcb:ConfigWindow:BorderWidth
                          :border-width 0))
-      (xcb:+request exwm--connection ;grab buttons for set focus/move/resize
-          (make-instance 'xcb:GrabButton
-                         :owner-events 0 :grab-window id
-                         :event-mask xcb:EventMask:ButtonPress
-                         :pointer-mode xcb:GrabMode:Sync
-                         :keyboard-mode xcb:GrabMode:Async
-                         :confine-to xcb:Window:None
-                         :cursor xcb:Cursor:None
-                         :button xcb:ButtonIndex:Any
-                         :modifiers xcb:ModMask:Any))
+      (dolist (button       ;grab buttons to set focus / move / resize
+               (list xcb:ButtonIndex:1 xcb:ButtonIndex:2 xcb:ButtonIndex:3))
+        (xcb:+request-checked+request-check exwm--connection
+            (make-instance 'xcb:GrabButton
+                           :owner-events 0 :grab-window id
+                           :event-mask xcb:EventMask:ButtonPress
+                           :pointer-mode xcb:GrabMode:Sync
+                           :keyboard-mode xcb:GrabMode:Async
+                           :confine-to xcb:Window:None :cursor xcb:Cursor:None
+                           :button button :modifiers xcb:ModMask:Any)))
       (xcb:+request exwm--connection    ;update _NET_CLIENT_LIST
           (make-instance 'xcb:ewmh:set-_NET_CLIENT_LIST
                          :window exwm--root