mirror of
				https://gitlab.freedesktop.org/wayland/wayland.git
				synced 2025-11-03 09:01:42 -05:00 
			
		
		
		
	window: Add a catch-all global handler hook
This commit is contained in:
		
							parent
							
								
									ae6c8a6d73
								
							
						
					
					
						commit
						b46df05fa8
					
				
					 2 changed files with 18 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -80,6 +80,7 @@ struct display {
 | 
			
		|||
	cairo_surface_t **pointer_surfaces;
 | 
			
		||||
 | 
			
		||||
	display_drag_offer_handler_t drag_offer_handler;
 | 
			
		||||
	display_global_handler_t global_handler;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct window {
 | 
			
		||||
| 
						 | 
				
			
			@ -1338,6 +1339,8 @@ display_handle_global(struct wl_display *display, uint32_t id,
 | 
			
		|||
			offer = wl_drag_offer_create(display, id);
 | 
			
		||||
			d->drag_offer_handler(offer, d);
 | 
			
		||||
		}
 | 
			
		||||
	} else if (d->global_handler) {
 | 
			
		||||
		d->global_handler(d, interface, version);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1544,3 +1547,10 @@ display_set_drag_offer_handler(struct display *display,
 | 
			
		|||
{
 | 
			
		||||
	display->drag_offer_handler = handler;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
display_set_global_handler(struct display *display,
 | 
			
		||||
			   display_global_handler_t handler)
 | 
			
		||||
{
 | 
			
		||||
	display->global_handler = handler;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -127,6 +127,10 @@ typedef int (*window_motion_handler_t)(struct window *window,
 | 
			
		|||
typedef void (*display_drag_offer_handler_t)(struct wl_drag_offer *offer,
 | 
			
		||||
					     struct display *display);
 | 
			
		||||
 | 
			
		||||
typedef void (*display_global_handler_t)(struct display *display,
 | 
			
		||||
					 const char *interface,
 | 
			
		||||
					 uint32_t version);
 | 
			
		||||
 | 
			
		||||
struct window *
 | 
			
		||||
window_create(struct display *display, const char *title,
 | 
			
		||||
	      int32_t width, int32_t height);
 | 
			
		||||
| 
						 | 
				
			
			@ -224,6 +228,10 @@ void
 | 
			
		|||
display_set_drag_offer_handler(struct display *display,
 | 
			
		||||
			       display_drag_offer_handler_t handler);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
display_set_global_handler(struct display *display,
 | 
			
		||||
			   display_global_handler_t handler);
 | 
			
		||||
 | 
			
		||||
struct wl_drag *
 | 
			
		||||
window_create_drag(struct window *window);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue