From b46df05fa82578a24949a63909d23c650af92305 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kristian=20H=C3=B8gsberg?= Date: Tue, 18 Jan 2011 09:17:57 -0500 Subject: [PATCH] window: Add a catch-all global handler hook --- clients/window.c | 10 ++++++++++ clients/window.h | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/clients/window.c b/clients/window.c index 84d0418..9d5c9d1 100644 --- a/clients/window.c +++ b/clients/window.c @@ -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; +} diff --git a/clients/window.h b/clients/window.h index 2709917..f84ae92 100644 --- a/clients/window.h +++ b/clients/window.h @@ -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); -- 2.7.4