diff options
author | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2018-10-21T12·00+0000 |
---|---|---|
committer | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2018-10-21T12·00+0000 |
commit | eb91ee2c77787bbeb1df74f0237f5087d031217f (patch) | |
tree | 04f11fab01f26a1fe7ad0351299b0254870c06f6 | |
parent | dba1ed94c2e06b46da77a2aa80aa35e17b08fdd6 (diff) |
Restore keyboard grabbing after exiting fullscreen
Recover the difference between the input mode selected by the user and actual one, which might be transient. This was inadvertently removed in recent changes. * exwm-core.el (exwm--selected-input-mode): New variable. * exwm-input.el (exwm-input-grab-keyboard) (exwm-input-release-keyboard): Use it. * exwm-layout.el (exwm-layout-unset-fullscreen): Return to the selected input mode.
-rw-r--r-- | exwm-core.el | 6 | ||||
-rw-r--r-- | exwm-input.el | 2 | ||||
-rw-r--r-- | exwm-layout.el | 2 |
3 files changed, 8 insertions, 2 deletions
diff --git a/exwm-core.el b/exwm-core.el index 612a26f59f..1f939491c5 100644 --- a/exwm-core.el +++ b/exwm-core.el @@ -158,7 +158,11 @@ least SECS seconds later." (defvar-local exwm--mode-line-format nil) ;save mode-line-format (defvar-local exwm--floating-frame-position nil) ;set when hidden. (defvar-local exwm--fixed-size nil) ;fixed size -(defvar-local exwm--input-mode 'line-mode) ;Keyboard grabbed. +(defvar-local exwm--selected-input-mode 'line-mode + "Input mode as selected by the user. +One of `line-mode' or `char-mode'.") +(defvar-local exwm--input-mode 'line-mode + "Actual input mode, i.e. whether mouse and keyboard are grabbed.") ;; Properties (defvar-local exwm--desktop nil "_NET_WM_DESKTOP.") (defvar-local exwm-window-type nil "_NET_WM_WINDOW_TYPE.") diff --git a/exwm-input.el b/exwm-input.el index 78e74cdcf8..c757b09d3f 100644 --- a/exwm-input.el +++ b/exwm-input.el @@ -756,6 +756,7 @@ button event." (exwm--buffer->id (window-buffer))))) (when id (exwm--log "id=#x%x" id) + (setq exwm--selected-input-mode 'line-mode) (exwm-input--grab-keyboard id) (exwm-input--update-mode-line id))) @@ -766,6 +767,7 @@ button event." (exwm--buffer->id (window-buffer))))) (when id (exwm--log "id=#x%x" id) + (setq exwm--selected-input-mode 'char-mode) (exwm-input--release-keyboard id) (exwm-input--update-mode-line id))) diff --git a/exwm-layout.el b/exwm-layout.el index fe394e226e..bee6901f82 100644 --- a/exwm-layout.el +++ b/exwm-layout.el @@ -199,7 +199,7 @@ (make-instance 'xcb:ewmh:set-_NET_WM_STATE :window exwm--id :data [])) (xcb:flush exwm--connection) (set-window-dedicated-p (get-buffer-window) nil) - (when (eq 'line-mode exwm--input-mode) + (when (eq 'line-mode exwm--selected-input-mode) (exwm-input--grab-keyboard exwm--id)))) ;;;###autoload |