Check client is focused before setting client cursor
This commit is contained in:
		
							parent
							
								
									4d157fe5de
								
							
						
					
					
						commit
						f44c44502d
					
				| 
						 | 
					@ -299,6 +299,21 @@ static void handle_request_set_cursor(struct wl_listener *listener,
 | 
				
			||||||
		request_set_cursor);
 | 
							request_set_cursor);
 | 
				
			||||||
	struct wlr_seat_pointer_request_set_cursor_event *event = data;
 | 
						struct wlr_seat_pointer_request_set_cursor_event *event = data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						struct wlr_surface *focused_surface = NULL;
 | 
				
			||||||
 | 
						double sx, sy;
 | 
				
			||||||
 | 
						view_at(input->server->desktop, input->cursor->x, input->cursor->y,
 | 
				
			||||||
 | 
							&focused_surface, &sx, &sy);
 | 
				
			||||||
 | 
						bool ok = focused_surface != NULL;
 | 
				
			||||||
 | 
						if (focused_surface != NULL) {
 | 
				
			||||||
 | 
							struct wl_client *focused_client =
 | 
				
			||||||
 | 
								wl_resource_get_client(focused_surface->resource);
 | 
				
			||||||
 | 
							ok = event->client == focused_client;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (!ok) {
 | 
				
			||||||
 | 
							wlr_log(L_DEBUG, "Denying request to set cursor outside view");
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wlr_log(L_DEBUG, "Setting client cursor");
 | 
						wlr_log(L_DEBUG, "Setting client cursor");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct roots_output *output;
 | 
						struct roots_output *output;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue