diff options
author | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2018-09-04T12·00+0000 |
---|---|---|
committer | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2018-09-04T12·00+0000 |
commit | 6978c1f45c4d72edab2440faf93fb917afe356ec (patch) | |
tree | a5c12b7fdcebcda457b2bc00723b457071621599 /exwm-manage.el | |
parent | dd57c5eebb213c29c3b250634e316abf4917a19b (diff) |
Restack X-Windows after being mapped to ensure EnterNotify events fire
* exwm-manage.el (exwm-manage--on-MapNotify, exwm-manage--init): Restack X windows after being mapped in order to ensure they receive an EnterNotify event (does not happen under XQuartz).
Diffstat (limited to 'exwm-manage.el')
-rw-r--r-- | exwm-manage.el | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/exwm-manage.el b/exwm-manage.el index 81a486c09795..7b28d6876861 100644 --- a/exwm-manage.el +++ b/exwm-manage.el @@ -665,6 +665,22 @@ border-width: %d; sibling: #x%x; stack-mode: %d" (exwm--log "id=#x%x" window) (exwm-manage--unmanage-window window t)))) +(defun exwm-manage--on-MapNotify (data _synthetic) + "Handle MapNotify event." + (let ((obj (make-instance 'xcb:MapNotify))) + (xcb:unmarshal obj data) + (with-slots (window) obj + (when (assoc window exwm--id-buffer-alist) + (exwm--log "id=#x%x" window) + ;; With this we ensure that a "window hierarchy change" happens after + ;; mapping the window, as some servers (XQuartz) do not generate it. + (xcb:+request exwm--connection + (make-instance 'xcb:ConfigureWindow + :window window + :value-mask xcb:ConfigWindow:StackMode + :stack-mode xcb:StackMode:Above)) + (xcb:flush exwm--connection))))) + (defun exwm-manage--on-DestroyNotify (data synthetic) "Handle DestroyNotify event." (unless synthetic @@ -692,6 +708,7 @@ border-width: %d; sibling: #x%x; stack-mode: %d" #'exwm-manage--on-ConfigureRequest) (xcb:+event exwm--connection 'xcb:MapRequest #'exwm-manage--on-MapRequest) (xcb:+event exwm--connection 'xcb:UnmapNotify #'exwm-manage--on-UnmapNotify) + (xcb:+event exwm--connection 'xcb:MapNotify #'exwm-manage--on-MapNotify) (xcb:+event exwm--connection 'xcb:DestroyNotify #'exwm-manage--on-DestroyNotify)) |