Update timestamp for WM_TAKE_FOCUS ClientMessage
* exwm-input.el (exwm-input--timestamp-window) (exwm-input--timestamp-atom, exwm-input--timestamp-callback): New variables for updating timestamp. (exwm-input--set-focus): Send WM_TAKE_FOCUS ClientMessage with updated timestamp. (exwm-input--update-timestamp): New utility function for fetching timestamp. (exwm-input--on-PropertyNotify): New function for handling PropertyNotify event to extract the timestamp. (exwm-input--init): Create resources for updating timestamp; attach the event listener. (exwm-input--on-ButtonPress, exwm-input--on-KeyPress): * exwm.el (exwm--on-PropertyNotify): No longer update timestamp. * exwm-input.el (exwm-input--set-focus): Avoid setting input focus on already focused X windows, or when the input focus in not on a Emacs frame if globally active model is in use. * exwm-floating.el (exwm-floating--set-floating): * exwm-workspace.el (exwm-workspace-move-window) (exwm-workspace--add-frame-as-workspace, exwm-workspace--init): Set 'exwm-id' frame parameter as the numerical (inner) frame X ID.
This commit is contained in:
parent
767abdf9e6
commit
810b4716a1
4 changed files with 112 additions and 34 deletions
|
|
@ -691,10 +691,13 @@ INDEX must not exceed the current number of workspaces."
|
|||
(outer-id (string-to-number
|
||||
(frame-parameter new-frame
|
||||
'outer-window-id)))
|
||||
(window-id (string-to-number
|
||||
(frame-parameter new-frame 'window-id)))
|
||||
(frame-container (frame-parameter old-frame
|
||||
'exwm-container))
|
||||
(window (frame-root-window new-frame)))
|
||||
(set-frame-parameter new-frame 'exwm-outer-id outer-id)
|
||||
(set-frame-parameter new-frame 'exwm-id window-id)
|
||||
(set-frame-parameter new-frame 'exwm-container
|
||||
frame-container)
|
||||
(make-frame-invisible new-frame)
|
||||
|
|
@ -1149,10 +1152,12 @@ Please check `exwm-workspace--minibuffer-own-frame-p' first."
|
|||
(setq exwm-workspace--list (nconc exwm-workspace--list (list frame)))
|
||||
(let ((outer-id (string-to-number (frame-parameter frame
|
||||
'outer-window-id)))
|
||||
(window-id (string-to-number (frame-parameter frame 'window-id)))
|
||||
(container (xcb:generate-id exwm--connection))
|
||||
(workspace (xcb:generate-id exwm--connection)))
|
||||
;; Save window IDs
|
||||
(set-frame-parameter frame 'exwm-outer-id outer-id)
|
||||
(set-frame-parameter frame 'exwm-id window-id)
|
||||
(set-frame-parameter frame 'exwm-container container)
|
||||
(set-frame-parameter frame 'exwm-workspace workspace)
|
||||
;; In case it's created by emacsclient.
|
||||
|
|
@ -1356,9 +1361,13 @@ applied to all subsequently created X frames."
|
|||
(let ((outer-id (string-to-number
|
||||
(frame-parameter exwm-workspace--minibuffer
|
||||
'outer-window-id)))
|
||||
(window-id (string-to-number
|
||||
(frame-parameter exwm-workspace--minibuffer
|
||||
'window-id)))
|
||||
(container (xcb:generate-id exwm--connection)))
|
||||
(set-frame-parameter exwm-workspace--minibuffer
|
||||
'exwm-outer-id outer-id)
|
||||
(set-frame-parameter exwm-workspace--minibuffer 'exwm-id window-id)
|
||||
(set-frame-parameter exwm-workspace--minibuffer 'exwm-container
|
||||
container)
|
||||
(xcb:+request exwm--connection
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue