mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	layer: try to set keyboard focus on map
...for the following reasons: 1. We interpret 'normal input-focus semantics' for clients with on-demand keyboard interactivity to means that a surface receives input focus on cursor-button-press AND on map (the latter previously missing), just like a normal window would. In this regard, we do not differentiate between layers. 2. Most layer-surfaces set the keyboard interactivity at a similar time to their first (and normally only) map, so the absence of an explicit attempt to focus on map does not make a difference. However, for a long-running layer-shell client (such as lxqt-runner) which sets the interactivity on launch and then maps/unmaps many times throughout its lifetime, a specific focus-attempt is required on map to avoid the client itself having to keep resetting its interactivity to grab the keyboard on map. 3. Compositors like sway and river process focus (for clients with keyboard-interactivity) in their map-handlers, so this makes for a common approach. Fixes: #1653
This commit is contained in:
		
							parent
							
								
									f3b68b8fb5
								
							
						
					
					
						commit
						4fc6bce3ea
					
				
					 1 changed files with 3 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -337,6 +337,7 @@ handle_map(struct wl_listener *listener, void *data)
 | 
			
		|||
	if (wlr_output) {
 | 
			
		||||
		output_update_usable_area(wlr_output->data);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Since moving to the wlroots scene-graph API, there is no need to
 | 
			
		||||
	 * call wlr_surface_send_enter() from here since that will be done
 | 
			
		||||
| 
						 | 
				
			
			@ -344,10 +345,8 @@ handle_map(struct wl_listener *listener, void *data)
 | 
			
		|||
	 * the scene. See wlr_scene_surface_create() documentation.
 | 
			
		||||
	 */
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Processing of keyboard-interactivity changes is done in the
 | 
			
		||||
	 * commit-handler.
 | 
			
		||||
	 */
 | 
			
		||||
	struct seat *seat = &layer->server->seat;
 | 
			
		||||
	layer_try_set_focus(seat, layer->scene_layer_surface->layer_surface);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue