widget: Add widget-level handling of touch sequence state.

These functions ATM do nothing but proxying the controller(s) state
with the given sequence.
This commit is contained in:
Carlos Garnacho
2014-02-26 13:07:08 +01:00
parent f1bb0283dd
commit 76213ab209
2 changed files with 70 additions and 0 deletions

View File

@@ -16449,3 +16449,65 @@ gtk_widget_list_controllers (GtkWidget *widget,
return retval;
}
GtkEventSequenceState
gtk_widget_get_sequence_state (GtkWidget *widget,
GdkEventSequence *sequence)
{
GtkEventSequenceState state;
EventControllerData *data;
GtkWidgetPrivate *priv;
GList *l;
g_return_val_if_fail (GTK_IS_WIDGET (widget),
GTK_EVENT_SEQUENCE_NONE);
priv = widget->priv;
for (l = priv->event_controllers; l; l = l->next)
{
data = l->data;
if (!GTK_IS_GESTURE (data->controller))
continue;
state = gtk_gesture_get_sequence_state (GTK_GESTURE (data->controller),
sequence);
if (state != GTK_EVENT_SEQUENCE_NONE)
return state;
}
return GTK_EVENT_SEQUENCE_NONE;
}
void
gtk_widget_set_sequence_state (GtkWidget *widget,
GdkEventSequence *sequence,
GtkEventSequenceState state)
{
EventControllerData *data;
gboolean handled = FALSE;
GtkWidgetPrivate *priv;
GList *l;
g_return_val_if_fail (GTK_IS_WIDGET (widget),
GTK_EVENT_SEQUENCE_NONE);
priv = widget->priv;
for (l = priv->event_controllers; l; l = l->next)
{
data = l->data;
if (!GTK_IS_GESTURE (data->controller))
continue;
handled |= gtk_gesture_set_sequence_state (GTK_GESTURE (data->controller),
sequence, state);
}
if (!handled)
return;
/* FIXME: Propagate upwards/downwards */
}

View File

@@ -1481,6 +1481,14 @@ GDK_AVAILABLE_IN_3_14
GList * gtk_widget_list_controllers (GtkWidget *widget,
GtkPropagationPhase phase);
GDK_AVAILABLE_IN_3_14
GtkEventSequenceState gtk_widget_get_sequence_state (GtkWidget *widget,
GdkEventSequence *sequence);
GDK_AVAILABLE_IN_3_14
void gtk_widget_set_sequence_state (GtkWidget *widget,
GdkEventSequence *sequence,
GtkEventSequenceState state);
G_END_DECLS
#endif /* __GTK_WIDGET_H__ */