summaryrefslogtreecommitdiff
path: root/gtk/gtkwidget.c
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2014-02-26 13:07:08 +0100
committerCarlos Garnacho <carlosg@gnome.org>2014-05-23 19:54:22 +0200
commit76213ab209481f595d64e1ddd27a5c0a3d3378aa (patch)
tree6d89b867e77c6508ee2f02e3ec75e195db81811f /gtk/gtkwidget.c
parentf1bb0283dda663c0a7c9825a576115c73e8e4c88 (diff)
downloadgtk+-76213ab209481f595d64e1ddd27a5c0a3d3378aa.tar.gz
widget: Add widget-level handling of touch sequence state.
These functions ATM do nothing but proxying the controller(s) state with the given sequence.
Diffstat (limited to 'gtk/gtkwidget.c')
-rw-r--r--gtk/gtkwidget.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 4fd4d912f4..b10f4ac619 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -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 */
+}