Remove loading order dependency on `mouse-autoselect-window'

* exwm-core.el (exwm--get-client-event-mask): Renamed from
`exwm--client-event-mask' and used as a function.
* exwm-floating.el (exwm-floating--unset-floating):
* exwm-layout.el (exwm-layout--hide):
* exwm-manage.el (exwm-manage--manage-window): Use it.
This commit is contained in:
Chris Feng 2019-03-17 00:00:00 +00:00
parent dd96fffb52
commit 397ca5497e
4 changed files with 10 additions and 9 deletions

View file

@ -150,11 +150,12 @@ least SECS seconds later."
,function ,function
,@args)) ,@args))
(defconst exwm--client-event-mask (logior xcb:EventMask:StructureNotify (defun exwm--get-client-event-mask ()
"Return event mask set on all managed windows."
(logior xcb:EventMask:StructureNotify
xcb:EventMask:PropertyChange xcb:EventMask:PropertyChange
(if mouse-autoselect-window (if mouse-autoselect-window
xcb:EventMask:EnterWindow 0)) xcb:EventMask:EnterWindow 0)))
"Event mask set on all managed windows.")
;; Internal variables ;; Internal variables
(defvar-local exwm--id nil) ;window ID (defvar-local exwm--id nil) ;window ID

View file

@ -342,7 +342,7 @@ This is also used by X window containers.")
(xcb:+request exwm--connection (xcb:+request exwm--connection
(make-instance 'xcb:ChangeWindowAttributes (make-instance 'xcb:ChangeWindowAttributes
:window id :value-mask xcb:CW:EventMask :window id :value-mask xcb:CW:EventMask
:event-mask exwm--client-event-mask)) :event-mask (exwm--get-client-event-mask)))
;; Reparent the floating frame back to the root window. ;; Reparent the floating frame back to the root window.
(let ((frame-id (frame-parameter exwm--floating-frame 'exwm-outer-id)) (let ((frame-id (frame-parameter exwm--floating-frame 'exwm-outer-id))
(frame-container (frame-parameter exwm--floating-frame (frame-container (frame-parameter exwm--floating-frame

View file

@ -158,7 +158,7 @@
(xcb:+request exwm--connection (xcb:+request exwm--connection
(make-instance 'xcb:ChangeWindowAttributes (make-instance 'xcb:ChangeWindowAttributes
:window id :value-mask xcb:CW:EventMask :window id :value-mask xcb:CW:EventMask
:event-mask exwm--client-event-mask)) :event-mask (exwm--get-client-event-mask)))
(exwm-layout--set-state id xcb:icccm:WM_STATE:IconicState) (exwm-layout--set-state id xcb:icccm:WM_STATE:IconicState)
(exwm-layout--auto-iconify) (exwm-layout--auto-iconify)
(xcb:flush exwm--connection)))) (xcb:flush exwm--connection))))

View file

@ -195,7 +195,7 @@ You can still make the X windows floating afterwards."
(when (xcb:+request-checked+request-check exwm--connection (when (xcb:+request-checked+request-check exwm--connection
(make-instance 'xcb:ChangeWindowAttributes (make-instance 'xcb:ChangeWindowAttributes
:window id :value-mask xcb:CW:EventMask :window id :value-mask xcb:CW:EventMask
:event-mask exwm--client-event-mask)) :event-mask (exwm--get-client-event-mask)))
(throw 'return 'dead)) (throw 'return 'dead))
;; Add this X window to save-set. ;; Add this X window to save-set.
(xcb:+request exwm--connection (xcb:+request exwm--connection
@ -257,7 +257,7 @@ You can still make the X windows floating afterwards."
exwm-window-type) exwm-window-type)
;; Listen for PropertyChange (struts) and ;; Listen for PropertyChange (struts) and
;; UnmapNotify/DestroyNotify event of the dock. ;; UnmapNotify/DestroyNotify event of the dock.
exwm--client-event-mask (exwm--get-client-event-mask)
xcb:EventMask:NoEvent))) xcb:EventMask:NoEvent)))
;; The window needs to be mapped ;; The window needs to be mapped
(xcb:+request exwm--connection (xcb:+request exwm--connection