window: Add a catch-all global handler hook

dev
Kristian Høgsberg 14 years ago
parent ae6c8a6d73
commit b46df05fa8
  1. 10
      clients/window.c
  2. 8
      clients/window.h

@ -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…
Cancel
Save