diff --git a/clutter/clutter-enums.h b/clutter/clutter-enums.h index f2a666285..a3cd7c743 100644 --- a/clutter/clutter-enums.h +++ b/clutter/clutter-enums.h @@ -1357,6 +1357,29 @@ typedef enum { /*< prefix=CLUTTER_ZOOM >*/ CLUTTER_ZOOM_BOTH } ClutterZoomAxis; +/** + * ClutterGestureTriggerEdge: + * @CLUTTER_GESTURE_TRIGGER_EDGE_NONE: Tell #ClutterGestureAction that + * the gesture must begin immediately and there's no drag limit that + * will cause its cancellation; + * @CLUTTER_GESTURE_TRIGGER_EDGE_AFTER: Tell #ClutterGestureAction that + * it needs to wait until the drag threshold has been exceeded before + * considering that the gesture has begun; + * @CLUTTER_GESTURE_TRIGGER_EDGE_BEFORE: Tell #ClutterGestureAction that + * the gesture must begin immediately and that it must be cancelled + * once the drag exceed the configured threshold. + * + * Enum passed to the clutter_gesture_action_set_threshold_trigger_edge() + * function. + * + * Since: 1.18 + */ +typedef enum { + CLUTTER_GESTURE_TRIGGER_EDGE_NONE = 0, + CLUTTER_GESTURE_TRIGGER_EDGE_AFTER, + CLUTTER_GESTURE_TRIGGER_EDGE_BEFORE +} ClutterGestureTriggerEdge; + G_END_DECLS #endif /* __CLUTTER_ENUMS_H__ */ diff --git a/clutter/clutter-gesture-action-private.h b/clutter/clutter-gesture-action-private.h index cb6440bd5..cd804abc7 100644 --- a/clutter/clutter-gesture-action-private.h +++ b/clutter/clutter-gesture-action-private.h @@ -26,34 +26,6 @@ G_BEGIN_DECLS -/*< private > - * ClutterGestureTriggerEdge: - * @CLUTTER_GESTURE_TRIGGER_EDGE_NONE: Tell #ClutterGestureAction that - * the gesture must begin immediately and there's no drag limit that - * will cause its cancellation; - * @CLUTTER_GESTURE_TRIGGER_EDGE_AFTER: Tell #ClutterGestureAction that - * it needs to wait until the drag threshold has been exceeded before - * considering that the gesture has begun; - * @CLUTTER_GESTURE_TRIGGER_EDGE_BEFORE: Tell #ClutterGestureAction that - * the gesture must begin immediately and that it must be cancelled - * once the drag exceed the configured threshold. - * - * Enum passed to the clutter_gesture_action_set_threshold_trigger_edge() - * function. - */ -typedef enum -{ - CLUTTER_GESTURE_TRIGGER_EDGE_NONE = 0, - CLUTTER_GESTURE_TRIGGER_EDGE_AFTER, - CLUTTER_GESTURE_TRIGGER_EDGE_BEFORE -} ClutterGestureTriggerEdge; - -G_GNUC_INTERNAL -void clutter_gesture_action_set_threshold_trigger_edge (ClutterGestureAction *action, - ClutterGestureTriggerEdge edge); -G_GNUC_INTERNAL -ClutterGestureTriggerEdge clutter_gesture_action_get_threshold_trigger_egde (ClutterGestureAction *action); - G_END_DECLS #endif /* __CLUTTER_GESTURE_ACTION_PRIVATE_H__ */ diff --git a/clutter/clutter-gesture-action.c b/clutter/clutter-gesture-action.c index 5794152d1..3e8b50cf9 100644 --- a/clutter/clutter-gesture-action.c +++ b/clutter/clutter-gesture-action.c @@ -133,6 +133,7 @@ enum PROP_0, PROP_N_TOUCH_POINTS, + PROP_THRESHOLD_TRIGGER_EDGE, PROP_LAST }; @@ -552,40 +553,6 @@ default_event_handler (ClutterGestureAction *action, return TRUE; } - -/*< private > - * clutter_gesture_action_set_threshold_trigger_edge: - * @action: a #ClutterGestureAction - * @edge: the %ClutterGestureTriggerEdge - * - * Sets the edge trigger for the gesture drag threshold, if any. - * - * This function can be called by #ClutterGestureAction subclasses that needs - * to change the %CLUTTER_GESTURE_TRIGGER_EDGE_AFTER default. - */ -void -clutter_gesture_action_set_threshold_trigger_edge (ClutterGestureAction *action, - ClutterGestureTriggerEdge edge) -{ - if (action->priv->edge != edge) - action->priv->edge = edge; -} - -/*< private > - * clutter_gesture_action_get_threshold_trigger_egde: - * @action: a #ClutterGestureAction - * - * Retrieves the edge trigger of the gesture @action, as set using - * clutter_gesture_action_set_threshold_trigger_edge(). - * - * Return value: the edge trigger - */ -ClutterGestureTriggerEdge -clutter_gesture_action_get_threshold_trigger_egde (ClutterGestureAction *action) -{ - return action->priv->edge; -} - static void clutter_gesture_action_set_property (GObject *gobject, guint prop_id, @@ -600,6 +567,10 @@ clutter_gesture_action_set_property (GObject *gobject, clutter_gesture_action_set_n_touch_points (self, g_value_get_int (value)); break; + case PROP_THRESHOLD_TRIGGER_EDGE: + clutter_gesture_action_set_threshold_trigger_edge (self, g_value_get_enum (value)); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; @@ -620,6 +591,10 @@ clutter_gesture_action_get_property (GObject *gobject, g_value_set_int (value, self->priv->requested_nb_points); break; + case PROP_THRESHOLD_TRIGGER_EDGE: + g_value_set_enum (value, self->priv->edge); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; @@ -666,6 +641,24 @@ clutter_gesture_action_class_init (ClutterGestureActionClass *klass) 1, G_MAXINT, 1, CLUTTER_PARAM_READWRITE); + /** + * ClutterGestureAction:threshold-trigger-edge: + * + * The trigger edge to be used by the action to either emit the + * #ClutterGestureAction::gesture-begin signal or to emit the + * #ClutterGestureAction::gesture-cancel signal. + * + * Since: 1.18 + */ + gesture_props[PROP_THRESHOLD_TRIGGER_EDGE] = + g_param_spec_enum ("threshold-trigger-edge", + P_("Threshold Trigger Edge"), + P_("The trigger edge used by the action"), + CLUTTER_TYPE_GESTURE_TRIGGER_EDGE, + CLUTTER_GESTURE_TRIGGER_EDGE_NONE, + CLUTTER_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY); + g_object_class_install_properties (gobject_class, PROP_LAST, gesture_props); @@ -1161,3 +1154,49 @@ clutter_gesture_action_cancel (ClutterGestureAction *action) cancel_gesture (action); } + +/** + * clutter_gesture_action_set_threshold_trigger_edge: + * @action: a #ClutterGestureAction + * @edge: the %ClutterGestureTriggerEdge + * + * Sets the edge trigger for the gesture drag threshold, if any. + * + * This function should only be called by sub-classes of + * #ClutterGestureAction during their construction phase. + * + * Since: 1.18 + */ +void +clutter_gesture_action_set_threshold_trigger_edge (ClutterGestureAction *action, + ClutterGestureTriggerEdge edge) +{ + g_return_if_fail (CLUTTER_IS_GESTURE_ACTION (action)); + + if (action->priv->edge == edge) + return; + + action->priv->edge = edge; + + g_object_notify_by_pspec (G_OBJECT (action), gesture_props[PROP_THRESHOLD_TRIGGER_EDGE]); +} + +/** + * clutter_gesture_action_get_threshold_trigger_egde: + * @action: a #ClutterGestureAction + * + * Retrieves the edge trigger of the gesture @action, as set using + * clutter_gesture_action_set_threshold_trigger_edge(). + * + * Return value: the edge trigger + * + * Since: 1.18 + */ +ClutterGestureTriggerEdge +clutter_gesture_action_get_threshold_trigger_egde (ClutterGestureAction *action) +{ + g_return_val_if_fail (CLUTTER_IS_GESTURE_ACTION (action), + CLUTTER_GESTURE_TRIGGER_EDGE_NONE); + + return action->priv->edge; +} diff --git a/clutter/clutter-gesture-action.h b/clutter/clutter-gesture-action.h index ab38b4b23..9660c3e17 100644 --- a/clutter/clutter-gesture-action.h +++ b/clutter/clutter-gesture-action.h @@ -149,6 +149,12 @@ const ClutterEvent * clutter_gesture_action_get_last_event (ClutterGestu CLUTTER_AVAILABLE_IN_1_12 void clutter_gesture_action_cancel (ClutterGestureAction *action); +CLUTTER_AVAILABLE_IN_1_18 +void clutter_gesture_action_set_threshold_trigger_edge (ClutterGestureAction *action, + ClutterGestureTriggerEdge edge); +CLUTTER_AVAILABLE_IN_1_18 +ClutterGestureTriggerEdge clutter_gesture_action_get_threshold_trigger_egde (ClutterGestureAction *action); + G_END_DECLS #endif /* __CLUTTER_GESTURE_ACTION_H__ */ diff --git a/clutter/clutter.symbols b/clutter/clutter.symbols index 86d7afa5b..0c54a7b07 100644 --- a/clutter/clutter.symbols +++ b/clutter/clutter.symbols @@ -750,10 +750,13 @@ clutter_gesture_action_get_n_touch_points clutter_gesture_action_get_press_coords clutter_gesture_action_get_release_coords clutter_gesture_action_get_sequence +clutter_gesture_action_get_threshold_trigger_egde clutter_gesture_action_get_type clutter_gesture_action_get_velocity clutter_gesture_action_set_n_touch_points +clutter_gesture_action_set_threshold_trigger_edge clutter_gesture_action_new +clutter_gesture_trigger_edge_get_type clutter_get_accessibility_enabled clutter_get_actor_by_gid clutter_get_current_event diff --git a/doc/reference/clutter/clutter-sections.txt b/doc/reference/clutter/clutter-sections.txt index d3c7f5bd1..8550d3426 100644 --- a/doc/reference/clutter/clutter-sections.txt +++ b/doc/reference/clutter/clutter-sections.txt @@ -2989,6 +2989,8 @@ clutter_gesture_action_set_n_touch_points clutter_gesture_action_get_n_current_points clutter_gesture_action_get_sequence clutter_gesture_action_get_device +clutter_gesture_action_set_threshold_trigger_edge +clutter_gesture_action_get_threshold_trigger_egde clutter_gesture_action_cancel CLUTTER_GESTURE_ACTION