From 7e0cc54fca0ee79f721bc306d589333d25754fc7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Philipp=20Br=C3=BCschweiler?= Date: Tue, 14 Aug 2012 11:02:41 +0200 Subject: [PATCH] toytoolkit: add axis handler --- clients/window.c | 19 +++++++++++++++++++ clients/window.h | 8 ++++++++ 2 files changed, 27 insertions(+) diff --git a/clients/window.c b/clients/window.c index 0bd362f..3262174 100644 --- a/clients/window.c +++ b/clients/window.c @@ -179,6 +179,7 @@ struct widget { widget_leave_handler_t leave_handler; widget_motion_handler_t motion_handler; widget_button_handler_t button_handler; + widget_axis_handler_t axis_handler; void *user_data; int opaque; int tooltip_count; @@ -1059,6 +1060,13 @@ widget_set_button_handler(struct widget *widget, } void +widget_set_axis_handler(struct widget *widget, + widget_axis_handler_t handler) +{ + widget->axis_handler = handler; +} + +void widget_schedule_redraw(struct widget *widget) { window_schedule_redraw(widget->window); @@ -1918,6 +1926,17 @@ static void pointer_handle_axis(void *data, struct wl_pointer *pointer, uint32_t time, uint32_t axis, wl_fixed_t value) { + struct input *input = data; + struct widget *widget; + + widget = input->focus_widget; + if (input->grab) + widget = input->grab; + if (widget && widget->axis_handler) + (*widget->axis_handler)(widget, + input, time, + axis, value, + widget->user_data); } static const struct wl_pointer_listener pointer_listener = { diff --git a/clients/window.h b/clients/window.h index 779bc64..41f63da 100644 --- a/clients/window.h +++ b/clients/window.h @@ -196,6 +196,11 @@ typedef void (*widget_button_handler_t)(struct widget *widget, uint32_t button, enum wl_pointer_button_state state, void *data); +typedef void (*widget_axis_handler_t)(struct widget *widget, + struct input *input, uint32_t time, + uint32_t axis, + wl_fixed_t value, + void *data); struct window * window_create(struct display *display); @@ -365,6 +370,9 @@ widget_set_motion_handler(struct widget *widget, void widget_set_button_handler(struct widget *widget, widget_button_handler_t handler); +void +widget_set_axis_handler(struct widget *widget, + widget_axis_handler_t handler); void widget_schedule_redraw(struct widget *widget); -- 2.7.4