Signed-off-by: Stephen Chandler Paul <thatsly...@gmail.com> --- clients/window.c | 45 ++++++++++++++++++++++++++++++++++++++++++--- clients/window.h | 25 +++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 3 deletions(-)
diff --git a/clients/window.c b/clients/window.c index 7b844f8..3896b31 100644 --- a/clients/window.c +++ b/clients/window.c @@ -315,6 +315,9 @@ struct widget { widget_touch_cancel_handler_t touch_cancel_handler; widget_axis_handler_t axis_handler; widget_tablet_motion_handler_t tablet_motion_handler; + widget_tablet_pressure_handler_t tablet_pressure_handler; + widget_tablet_distance_handler_t tablet_distance_handler; + widget_tablet_tilt_handler_t tablet_tilt_handler; widget_tablet_proximity_in_handler_t tablet_proximity_in_handler; widget_tablet_proximity_out_handler_t tablet_proximity_out_handler; widget_tablet_button_handler_t tablet_button_handler; @@ -3469,6 +3472,42 @@ tablet_handle_motion(void *data, struct wl_tablet *wl_tablet, uint32_t time, } static void +tablet_handle_pressure(void *data, struct wl_tablet *wl_tablet, uint32_t time, + wl_fixed_t pressure) +{ + struct tablet *tablet = data; + struct widget *widget = tablet->focus_widget; + + if (widget && widget->tablet_pressure_handler) + widget->tablet_pressure_handler(widget, tablet, time, pressure, + widget->user_data); +} + +static void +tablet_handle_distance(void *data, struct wl_tablet *wl_tablet, uint32_t time, + wl_fixed_t distance) +{ + struct tablet *tablet = data; + struct widget *widget = tablet->focus_widget; + + if (widget && widget->tablet_distance_handler) + widget->tablet_distance_handler(widget, tablet, time, distance, + widget->user_data); +} + +static void +tablet_handle_tilt(void *data, struct wl_tablet *wl_tablet, uint32_t time, + wl_fixed_t tilt_x, wl_fixed_t tilt_y) +{ + struct tablet *tablet = data; + struct widget *widget = tablet->focus_widget; + + if (widget && widget->tablet_tilt_handler) + widget->tablet_tilt_handler(widget, tablet, time, + tilt_x, tilt_y, widget->user_data); +} + +static void tablet_handle_removed(void *data, struct wl_tablet *wl_tablet) { struct tablet *tablet = data; @@ -3534,9 +3573,9 @@ static const struct wl_tablet_listener tablet_listener = { tablet_handle_motion, tablet_handle_down, tablet_handle_up, - NULL, - NULL, - NULL, + tablet_handle_pressure, + tablet_handle_distance, + tablet_handle_tilt, tablet_handle_button, tablet_handle_frame, tablet_handle_removed, diff --git a/clients/window.h b/clients/window.h index 7d2b6bf..203a7fe 100644 --- a/clients/window.h +++ b/clients/window.h @@ -279,6 +279,22 @@ typedef int (*widget_tablet_motion_handler_t)(struct widget *widget, float y, uint32_t time, void *data); +typedef void (*widget_tablet_pressure_handler_t)(struct widget *widget, + struct tablet *tablet, + uint32_t time, + wl_fixed_t pressure, + void *data); +typedef void (*widget_tablet_distance_handler_t)(struct widget *widget, + struct tablet *tablet, + uint32_t time, + wl_fixed_t distance, + void *data); +typedef void (*widget_tablet_tilt_handler_t)(struct widget *widget, + struct tablet *tablet, + uint32_t time, + wl_fixed_t tilt_x, + wl_fixed_t tilt_y, + void *data); typedef void (*widget_tablet_proximity_in_handler_t)(struct widget *widget, struct tablet *tablet, struct tablet_tool *tool, @@ -559,6 +575,15 @@ void widget_set_tablet_motion_handler(struct widget *widget, widget_tablet_motion_handler_t handler); void +widget_set_tablet_pressure_handler(struct widget *widget, + widget_tablet_pressure_handler_t handler); +void +widget_set_tablet_distance_handler(struct widget *widget, + widget_tablet_distance_handler_t handler); +void +widget_set_tablet_tilt_handler(struct widget *widget, + widget_tablet_tilt_handler_t handler); +void widget_set_tablet_proximity_in_handler(struct widget *widget, widget_tablet_proximity_in_handler_t handler); void -- 1.8.5.5 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel