new function to notify keyboard enter
This commit is contained in:
		
							
								
								
									
										10
									
								
								client.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								client.h
									
									
									
									
									
								
							| @@ -198,6 +198,16 @@ client_is_unmanaged(Client *c) | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| static inline void | ||||
| client_notify_enter(struct wlr_surface *s, struct wlr_keyboard *kb) | ||||
| { | ||||
| 	if (kb) | ||||
| 		wlr_seat_keyboard_notify_enter(seat, s, kb->keycodes, | ||||
| 				kb->num_keycodes, &kb->modifiers); | ||||
| 	else | ||||
| 		wlr_seat_keyboard_notify_enter(seat, s, NULL, 0, NULL); | ||||
| } | ||||
|  | ||||
| static inline void | ||||
| client_restack_surface(Client *c) | ||||
| { | ||||
|   | ||||
							
								
								
									
										15
									
								
								dwl.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								dwl.c
									
									
									
									
									
								
							| @@ -590,7 +590,6 @@ arrangelayers(Monitor *m) | ||||
| 		ZWLR_LAYER_SHELL_V1_LAYER_TOP, | ||||
| 	}; | ||||
| 	LayerSurface *layersurface; | ||||
| 	struct wlr_keyboard *kb = wlr_seat_get_keyboard(seat); | ||||
|  | ||||
| 	/* Arrange exclusive surfaces from top->bottom */ | ||||
| 	for (i = 3; i >= 0; i--) | ||||
| @@ -614,11 +613,7 @@ arrangelayers(Monitor *m) | ||||
| 				/* Deactivate the focused client. */ | ||||
| 				focusclient(NULL, 0); | ||||
| 				exclusive_focus = layersurface->layer_surface->surface; | ||||
| 				if (kb) | ||||
| 					wlr_seat_keyboard_notify_enter(seat, exclusive_focus, | ||||
| 							kb->keycodes, kb->num_keycodes, &kb->modifiers); | ||||
| 				else | ||||
| 					wlr_seat_keyboard_notify_enter(seat, exclusive_focus, NULL, 0, NULL); | ||||
| 				client_notify_enter(exclusive_focus, wlr_seat_get_keyboard(seat)); | ||||
| 				return; | ||||
| 			} | ||||
| 		} | ||||
| @@ -1117,7 +1112,6 @@ void | ||||
| focusclient(Client *c, int lift) | ||||
| { | ||||
| 	struct wlr_surface *old = seat->keyboard_state.focused_surface; | ||||
| 	struct wlr_keyboard *kb; | ||||
| 	int i; | ||||
| 	/* Do not focus clients if a layer surface is focused */ | ||||
| 	if (exclusive_focus) | ||||
| @@ -1178,12 +1172,7 @@ focusclient(Client *c, int lift) | ||||
| 	} | ||||
|  | ||||
| 	/* Have a client, so focus its top-level wlr_surface */ | ||||
| 	kb = wlr_seat_get_keyboard(seat); | ||||
| 	if (kb) | ||||
| 		wlr_seat_keyboard_notify_enter(seat, client_surface(c), | ||||
| 				kb->keycodes, kb->num_keycodes, &kb->modifiers); | ||||
| 	else | ||||
| 		wlr_seat_keyboard_notify_enter(seat, client_surface(c), NULL, 0, NULL); | ||||
| 	client_notify_enter(client_surface(c), wlr_seat_get_keyboard(seat)); | ||||
|  | ||||
| 	/* Activate the new client */ | ||||
| 	client_activate_surface(client_surface(c), 1); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user