* @CLUTTER_SCROLL_DOWN: Scroll down
* @CLUTTER_SCROLL_LEFT: Scroll left
* @CLUTTER_SCROLL_RIGHT: Scroll right
+ * @CLUTTER_SCROLL_SMOOTH: Precise scrolling delta (available in 1.10)
*
* Direction of a pointer scroll event.
*
+ * The %CLUTTER_SCROLL_SMOOTH value implies that the #ClutterScrollEvent
+ * has precise scrolling delta information.
+ *
* Since: 0.4
*/
typedef enum { /*< prefix=CLUTTER_SCROLL >*/
CLUTTER_SCROLL_UP,
CLUTTER_SCROLL_DOWN,
CLUTTER_SCROLL_LEFT,
- CLUTTER_SCROLL_RIGHT
+ CLUTTER_SCROLL_RIGHT,
+ CLUTTER_SCROLL_SMOOTH
} ClutterScrollDirection;
/**
ClutterInputDevice *device;
ClutterInputDevice *source_device;
+ gdouble delta_x;
+ gdouble delta_y;
+
gpointer platform_data;
} ClutterEventPrivate;
}
/**
+ * clutter_event_set_scroll_delta:
+ * @event: a #ClutterEvent of type %CLUTTER_SCROLL
+ * @dx: delta on the horizontal axis
+ * @dy: delta on the vertical axis
+ *
+ * Sets the precise scrolling information of @event.
+ *
+ * Since: 1.10
+ */
+void
+clutter_event_set_scroll_delta (ClutterEvent *event,
+ gdouble dx,
+ gdouble dy)
+{
+ g_return_if_fail (event != NULL);
+ g_return_if_fail (event->type == CLUTTER_SCROLL);
+
+ if (!is_event_allocated (event))
+ return;
+
+ event->scroll.direction = CLUTTER_SCROLL_SMOOTH;
+
+ ((ClutterEventPrivate *) event)->delta_x = dx;
+ ((ClutterEventPrivate *) event)->delta_y = dy;
+}
+
+/**
+ * clutter_event_get_scroll_delta:
+ * @event: a #ClutterEvent of type %CLUTTER_SCROLL
+ * @dx: (out): return location for the delta on the horizontal axis
+ * @dy: (out): return location for the delta on the vertical axis
+ *
+ * Retrieves the precise scrolling information of @event.
+ *
+ * The @event has to have a #ClutterScrollEvent.direction value
+ * of %CLUTTER_SCROLL_SMOOTH.
+ *
+ * Since: 1.10
+ */
+void
+clutter_event_get_scroll_delta (const ClutterEvent *event,
+ gdouble *dx,
+ gdouble *dy)
+{
+ gdouble delta_x, delta_y;
+
+ g_return_if_fail (event != NULL);
+ g_return_if_fail (event->type == CLUTTER_SCROLL);
+ g_return_if_fail (event->scroll.direction == CLUTTER_SCROLL_SMOOTH);
+
+ delta_x = delta_y = 0;
+
+ if (is_event_allocated (event))
+ {
+ delta_x = ((ClutterEventPrivate *) event)->delta_x;
+ delta_y = ((ClutterEventPrivate *) event)->delta_y;
+ }
+
+ if (dx != NULL)
+ *dx = delta_x;
+
+ if (dy != NULL)
+ *dy = delta_y;
+}
+
+/**
* clutter_event_get_scroll_direction:
* @event: a #ClutterEvent of type %CLUTTER_SCROLL
*
new_real_event->device = real_event->device;
new_real_event->source_device = real_event->source_device;
+ new_real_event->delta_x = real_event->delta_x;
+ new_real_event->delta_y = real_event->delta_y;
}
device = clutter_event_get_device (event);
void clutter_event_set_scroll_direction (ClutterEvent *event,
ClutterScrollDirection direction);
ClutterScrollDirection clutter_event_get_scroll_direction (const ClutterEvent *event);
+CLUTTER_AVAILABLE_IN_1_10
+void clutter_event_set_scroll_delta (ClutterEvent *event,
+ gdouble dx,
+ gdouble dy);
+CLUTTER_AVAILABLE_IN_1_10
+void clutter_event_get_scroll_delta (const ClutterEvent *event,
+ gdouble *dx,
+ gdouble *dy);
guint32 clutter_keysym_to_unicode (guint keyval);
CLUTTER_AVAILABLE_IN_1_10
clutter_event_get_key_symbol
clutter_event_get_key_unicode
clutter_event_get_related
+clutter_event_get_scroll_delta
clutter_event_get_scroll_direction
clutter_event_get_source
clutter_event_get_source_device
clutter_event_set_key_symbol
clutter_event_set_key_unicode
clutter_event_set_related
+clutter_event_set_scroll_delta
clutter_event_set_scroll_direction
clutter_event_set_source
clutter_event_set_source_device