mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	rootston: fix view_at
This commit is contained in:
		
							parent
							
								
									d16127b3cb
								
							
						
					
					
						commit
						1a8b24bdd2
					
				
					 3 changed files with 10 additions and 9 deletions
				
			
		| 
						 | 
					@ -128,7 +128,7 @@ struct wlr_surface *wlr_surface_get_root_surface(struct wlr_surface *surface);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Check if the surface accepts input events at the given surface-local
 | 
					 * Check if the surface accepts input events at the given surface-local
 | 
				
			||||||
 * coordinates.
 | 
					 * coordinates. Does not check the surface's subsurfaces.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
bool wlr_surface_point_accepts_input(struct wlr_surface *surface,
 | 
					bool wlr_surface_point_accepts_input(struct wlr_surface *surface,
 | 
				
			||||||
		double sx, double sy);
 | 
							double sx, double sy);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -608,7 +608,7 @@ static bool view_at(struct roots_view *view, double lx, double ly,
 | 
				
			||||||
	double _sx, _sy;
 | 
						double _sx, _sy;
 | 
				
			||||||
	struct wlr_surface *_surface = wlr_surface_surface_at(view->wlr_surface,
 | 
						struct wlr_surface *_surface = wlr_surface_surface_at(view->wlr_surface,
 | 
				
			||||||
		view_sx, view_sy, &_sx, &_sy);
 | 
							view_sx, view_sy, &_sx, &_sy);
 | 
				
			||||||
	if (surface != NULL) {
 | 
						if (_surface != NULL) {
 | 
				
			||||||
		*sx = _sx;
 | 
							*sx = _sx;
 | 
				
			||||||
		*sy = _sy;
 | 
							*sy = _sy;
 | 
				
			||||||
		*surface = _surface;
 | 
							*surface = _surface;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -137,6 +137,7 @@ static void surface_set_input_region(struct wl_client *client,
 | 
				
			||||||
		pixman_region32_t *region = wlr_region_from_resource(region_resource);
 | 
							pixman_region32_t *region = wlr_region_from_resource(region_resource);
 | 
				
			||||||
		pixman_region32_copy(&surface->pending->input, region);
 | 
							pixman_region32_copy(&surface->pending->input, region);
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
 | 
							pixman_region32_fini(&surface->pending->input);
 | 
				
			||||||
		pixman_region32_init_rect(&surface->pending->input,
 | 
							pixman_region32_init_rect(&surface->pending->input,
 | 
				
			||||||
			INT32_MIN, INT32_MIN, UINT32_MAX, UINT32_MAX);
 | 
								INT32_MIN, INT32_MIN, UINT32_MAX, UINT32_MAX);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -879,6 +880,13 @@ struct wlr_surface *wlr_surface_get_root_surface(struct wlr_surface *surface) {
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool wlr_surface_point_accepts_input(struct wlr_surface *surface,
 | 
				
			||||||
 | 
							double sx, double sy) {
 | 
				
			||||||
 | 
						return sx >= 0 && sx <= surface->current->width &&
 | 
				
			||||||
 | 
							sy >= 0 && sy <= surface->current->height &&
 | 
				
			||||||
 | 
							pixman_region32_contains_point(&surface->current->input, sx, sy, NULL);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct wlr_surface *wlr_surface_surface_at(struct wlr_surface *surface,
 | 
					struct wlr_surface *wlr_surface_surface_at(struct wlr_surface *surface,
 | 
				
			||||||
		double sx, double sy, double *sub_x, double *sub_y) {
 | 
							double sx, double sy, double *sub_x, double *sub_y) {
 | 
				
			||||||
	struct wlr_subsurface *subsurface;
 | 
						struct wlr_subsurface *subsurface;
 | 
				
			||||||
| 
						 | 
					@ -943,10 +951,3 @@ void wlr_surface_set_role_committed(struct wlr_surface *surface,
 | 
				
			||||||
	surface->role_committed = role_committed;
 | 
						surface->role_committed = role_committed;
 | 
				
			||||||
	surface->role_data = role_data;
 | 
						surface->role_data = role_data;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wlr_surface_point_accepts_input(struct wlr_surface *surface,
 | 
					 | 
				
			||||||
		double sx, double sy) {
 | 
					 | 
				
			||||||
	return sx >= 0 && sx <= surface->current->width &&
 | 
					 | 
				
			||||||
		sy >= 0 && sy <= surface->current->height &&
 | 
					 | 
				
			||||||
		pixman_region32_contains_point(&surface->current->input, sx, sy, NULL);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue