diff options
author | Chris Feng <chris.w.feng@gmail.com> | 2016-08-09T05·34+0800 |
---|---|---|
committer | Chris Feng <chris.w.feng@gmail.com> | 2016-08-09T05·34+0800 |
commit | 810b4716a10169e1de29c52cf2e3aeb2e79f2018 (patch) | |
tree | 5626c3a971a6addbc56994fce84dc0417206bd78 /exwm-workspace.el | |
parent | 767abdf9e6fa20699faccf7a3388ad2fa6a52b9f (diff) |
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.
Diffstat (limited to 'exwm-workspace.el')
-rw-r--r-- | exwm-workspace.el | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/exwm-workspace.el b/exwm-workspace.el index 4789aeb18ee9..977cfe64bbcb 100644 --- a/exwm-workspace.el +++ b/exwm-workspace.el @@ -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 |