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).
This commit is contained in:
parent
dd57c5eebb
commit
6978c1f45c
1 changed files with 17 additions and 0 deletions
|
@ -665,6 +665,22 @@ border-width: %d; sibling: #x%x; stack-mode: %d"
|
||||||
(exwm--log "id=#x%x" window)
|
(exwm--log "id=#x%x" window)
|
||||||
(exwm-manage--unmanage-window window t))))
|
(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)
|
(defun exwm-manage--on-DestroyNotify (data synthetic)
|
||||||
"Handle DestroyNotify event."
|
"Handle DestroyNotify event."
|
||||||
(unless synthetic
|
(unless synthetic
|
||||||
|
@ -692,6 +708,7 @@ border-width: %d; sibling: #x%x; stack-mode: %d"
|
||||||
#'exwm-manage--on-ConfigureRequest)
|
#'exwm-manage--on-ConfigureRequest)
|
||||||
(xcb:+event exwm--connection 'xcb:MapRequest #'exwm-manage--on-MapRequest)
|
(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:UnmapNotify #'exwm-manage--on-UnmapNotify)
|
||||||
|
(xcb:+event exwm--connection 'xcb:MapNotify #'exwm-manage--on-MapNotify)
|
||||||
(xcb:+event exwm--connection 'xcb:DestroyNotify
|
(xcb:+event exwm--connection 'xcb:DestroyNotify
|
||||||
#'exwm-manage--on-DestroyNotify))
|
#'exwm-manage--on-DestroyNotify))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue