Fixes for manage/unmanage window
* Make sure `exwm-manage--manage-window-queue` is cleaned * Improve input focus handling after unmanaging a window * Remove a redundant call to `exwm-layout--show`
This commit is contained in:
		
							parent
							
								
									14628a940c
								
							
						
					
					
						commit
						3b9d0dd921
					
				
					 2 changed files with 13 additions and 4 deletions
				
			
		|  | @ -199,7 +199,6 @@ | ||||||
|             exwm--frame exwm-workspace--current)) |             exwm--frame exwm-workspace--current)) | ||||||
|     (select-frame exwm-workspace--current t) |     (select-frame exwm-workspace--current t) | ||||||
|     (set-window-buffer nil buffer) |     (set-window-buffer nil buffer) | ||||||
|     (exwm-layout--show id) |  | ||||||
|     (exwm-input--set-focus id)) |     (exwm-input--set-focus id)) | ||||||
|   (setq exwm-input--focus-lock nil)) |   (setq exwm-input--focus-lock nil)) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -61,9 +61,11 @@ corresponding buffer.") | ||||||
|               (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--client-event-mask)) | ||||||
|       (delq id exwm-manage--manage-window-queue) ;cleanup |       (setq exwm-manage--manage-window-queue | ||||||
|  |             (delq id exwm-manage--manage-window-queue)) ;cleanup | ||||||
|       (throw 'return 'dead)) |       (throw 'return 'dead)) | ||||||
|     (delq id exwm-manage--manage-window-queue) ;cleanup (late enough) |     (setq exwm-manage--manage-window-queue | ||||||
|  |           (delq id exwm-manage--manage-window-queue)) ;cleanup (late enough) | ||||||
|     (with-current-buffer (generate-new-buffer "*EXWM*") |     (with-current-buffer (generate-new-buffer "*EXWM*") | ||||||
|       (push `(,id . ,(current-buffer)) exwm--id-buffer-alist) |       (push `(,id . ,(current-buffer)) exwm--id-buffer-alist) | ||||||
|       (exwm-mode) |       (exwm-mode) | ||||||
|  | @ -193,7 +195,15 @@ corresponding buffer.") | ||||||
|         (let ((floating exwm--floating-frame)) |         (let ((floating exwm--floating-frame)) | ||||||
|           (kill-buffer) |           (kill-buffer) | ||||||
|           (when floating |           (when floating | ||||||
|             (select-frame-set-input-focus exwm-workspace--current))))))) |             (if (eq 'exwm-mode | ||||||
|  |                     (with-current-buffer | ||||||
|  |                         (window-buffer | ||||||
|  |                          (frame-first-window exwm-workspace--current)) | ||||||
|  |                       major-mode)) | ||||||
|  |                 ;; Input focus is to be set on a window | ||||||
|  |                 (x-focus-frame exwm-workspace--current) | ||||||
|  |               ;; Set input focus on a frame | ||||||
|  |               (select-frame-set-input-focus exwm-workspace--current)))))))) | ||||||
| 
 | 
 | ||||||
| (defun exwm-manage--scan () | (defun exwm-manage--scan () | ||||||
|   "Search for existing windows and try to manage them." |   "Search for existing windows and try to manage them." | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue