mirror of
https://github.com/emacs-exwm/exwm.git
synced 2024-11-23 21:17:59 +01:00
Merge branch 'medranocalvo/fix-input-mode-after-fullscreen' into externals/exwm
This commit is contained in:
commit
dbccda22a6
3 changed files with 12 additions and 14 deletions
|
@ -158,7 +158,11 @@ least SECS seconds later."
|
||||||
(defvar-local exwm--mode-line-format nil) ;save mode-line-format
|
(defvar-local exwm--mode-line-format nil) ;save mode-line-format
|
||||||
(defvar-local exwm--floating-frame-position nil) ;set when hidden.
|
(defvar-local exwm--floating-frame-position nil) ;set when hidden.
|
||||||
(defvar-local exwm--fixed-size nil) ;fixed size
|
(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
|
;; Properties
|
||||||
(defvar-local exwm--desktop nil "_NET_WM_DESKTOP.")
|
(defvar-local exwm--desktop nil "_NET_WM_DESKTOP.")
|
||||||
(defvar-local exwm-window-type nil "_NET_WM_WINDOW_TYPE.")
|
(defvar-local exwm-window-type nil "_NET_WM_WINDOW_TYPE.")
|
||||||
|
|
|
@ -411,7 +411,7 @@ ARGS are additional arguments to CALLBACK."
|
||||||
(when window (select-window window))))
|
(when window (select-window window))))
|
||||||
(with-current-buffer buffer
|
(with-current-buffer buffer
|
||||||
(when (derived-mode-p 'exwm-mode)
|
(when (derived-mode-p 'exwm-mode)
|
||||||
(cl-case (exwm-input--current-input-mode)
|
(cl-case exwm--input-mode
|
||||||
(line-mode
|
(line-mode
|
||||||
(setq mode (exwm-input--on-ButtonPress-line-mode buffer button-event)))
|
(setq mode (exwm-input--on-ButtonPress-line-mode buffer button-event)))
|
||||||
(char-mode
|
(char-mode
|
||||||
|
@ -427,7 +427,7 @@ ARGS are additional arguments to CALLBACK."
|
||||||
(exwm--log "major-mode=%s buffer=%s"
|
(exwm--log "major-mode=%s buffer=%s"
|
||||||
major-mode (buffer-name (current-buffer)))
|
major-mode (buffer-name (current-buffer)))
|
||||||
(if (derived-mode-p 'exwm-mode)
|
(if (derived-mode-p 'exwm-mode)
|
||||||
(cl-case (exwm-input--current-input-mode)
|
(cl-case exwm--input-mode
|
||||||
(line-mode
|
(line-mode
|
||||||
(exwm-input--on-KeyPress-line-mode obj data))
|
(exwm-input--on-KeyPress-line-mode obj data))
|
||||||
(char-mode
|
(char-mode
|
||||||
|
@ -688,17 +688,10 @@ The return value is used as event_mode to release the original
|
||||||
button event."
|
button event."
|
||||||
xcb:Allow:ReplayPointer)
|
xcb:Allow:ReplayPointer)
|
||||||
|
|
||||||
(defun exwm-input--current-input-mode ()
|
|
||||||
"Return current input mode.
|
|
||||||
The return value is one of the symbols \\='line-mode or \\=`char-mode.
|
|
||||||
|
|
||||||
Current buffer must be an `exwm-mode' buffer."
|
|
||||||
exwm--input-mode)
|
|
||||||
|
|
||||||
(defun exwm-input--update-mode-line (id)
|
(defun exwm-input--update-mode-line (id)
|
||||||
"Update the propertized `mode-line-process' for window ID."
|
"Update the propertized `mode-line-process' for window ID."
|
||||||
(let (help-echo cmd mode)
|
(let (help-echo cmd mode)
|
||||||
(cl-case (exwm-input--current-input-mode)
|
(cl-case exwm--input-mode
|
||||||
(line-mode
|
(line-mode
|
||||||
(setq mode "line"
|
(setq mode "line"
|
||||||
help-echo "mouse-1: Switch to char-mode"
|
help-echo "mouse-1: Switch to char-mode"
|
||||||
|
@ -763,6 +756,7 @@ Current buffer must be an `exwm-mode' buffer."
|
||||||
(exwm--buffer->id (window-buffer)))))
|
(exwm--buffer->id (window-buffer)))))
|
||||||
(when id
|
(when id
|
||||||
(exwm--log "id=#x%x" id)
|
(exwm--log "id=#x%x" id)
|
||||||
|
(setq exwm--selected-input-mode 'line-mode)
|
||||||
(exwm-input--grab-keyboard id)
|
(exwm-input--grab-keyboard id)
|
||||||
(exwm-input--update-mode-line id)))
|
(exwm-input--update-mode-line id)))
|
||||||
|
|
||||||
|
@ -773,6 +767,7 @@ Current buffer must be an `exwm-mode' buffer."
|
||||||
(exwm--buffer->id (window-buffer)))))
|
(exwm--buffer->id (window-buffer)))))
|
||||||
(when id
|
(when id
|
||||||
(exwm--log "id=#x%x" id)
|
(exwm--log "id=#x%x" id)
|
||||||
|
(setq exwm--selected-input-mode 'char-mode)
|
||||||
(exwm-input--release-keyboard id)
|
(exwm-input--release-keyboard id)
|
||||||
(exwm-input--update-mode-line id)))
|
(exwm-input--update-mode-line id)))
|
||||||
|
|
||||||
|
@ -784,7 +779,7 @@ Current buffer must be an `exwm-mode' buffer."
|
||||||
(when id
|
(when id
|
||||||
(exwm--log "id=#x%x" id)
|
(exwm--log "id=#x%x" id)
|
||||||
(with-current-buffer (exwm--id->buffer id)
|
(with-current-buffer (exwm--id->buffer id)
|
||||||
(cl-case (exwm-input--current-input-mode)
|
(cl-case exwm--input-mode
|
||||||
(line-mode
|
(line-mode
|
||||||
(exwm-input-release-keyboard id))
|
(exwm-input-release-keyboard id))
|
||||||
(char-mode
|
(char-mode
|
||||||
|
|
|
@ -45,7 +45,6 @@
|
||||||
(defvar exwm-layout--timer nil "Timer used to track echo area changes.")
|
(defvar exwm-layout--timer nil "Timer used to track echo area changes.")
|
||||||
|
|
||||||
(defvar exwm-workspace--current)
|
(defvar exwm-workspace--current)
|
||||||
(declare-function exwm-input--current-input-mode "exwm-input.el")
|
|
||||||
(declare-function exwm-input--release-keyboard "exwm-input.el")
|
(declare-function exwm-input--release-keyboard "exwm-input.el")
|
||||||
(declare-function exwm-input--grab-keyboard "exwm-input.el")
|
(declare-function exwm-input--grab-keyboard "exwm-input.el")
|
||||||
(declare-function exwm-input-grab-keyboard "exwm-input.el")
|
(declare-function exwm-input-grab-keyboard "exwm-input.el")
|
||||||
|
@ -200,7 +199,7 @@
|
||||||
(make-instance 'xcb:ewmh:set-_NET_WM_STATE :window exwm--id :data []))
|
(make-instance 'xcb:ewmh:set-_NET_WM_STATE :window exwm--id :data []))
|
||||||
(xcb:flush exwm--connection)
|
(xcb:flush exwm--connection)
|
||||||
(set-window-dedicated-p (get-buffer-window) nil)
|
(set-window-dedicated-p (get-buffer-window) nil)
|
||||||
(when (eq 'line-mode (exwm-input--current-input-mode))
|
(when (eq 'line-mode exwm--selected-input-mode)
|
||||||
(exwm-input--grab-keyboard exwm--id))))
|
(exwm-input--grab-keyboard exwm--id))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
|
|
Loading…
Reference in a new issue