Method
GtkGestureset_state
Declaration [src]
gboolean
gtk_gesture_set_state (
GtkGesture* gesture,
GtkEventSequenceState state
)
Description [src]
Sets the state of all sequences that gesture
is currently
interacting with.
Sequences start in state GTK_EVENT_SEQUENCE_NONE
, and whenever
they change state, they can never go back to that state. Likewise,
sequences in state GTK_EVENT_SEQUENCE_DENIED
cannot turn back to
a not denied state. With these rules, the lifetime of an event
sequence is constrained to the next four:
- None
- None → Denied
- None → Claimed
- None → Claimed → Denied
Note: Due to event handling ordering, it may be unsafe to set the
state on another gesture within a GtkGesture::begin
signal
handler, as the callback might be executed before the other gesture
knows about the sequence. A safe way to perform this could be:
static void
first_gesture_begin_cb (GtkGesture *first_gesture,
GdkEventSequence *sequence,
gpointer user_data)
{
gtk_gesture_set_state (first_gesture, GTK_EVENT_SEQUENCE_CLAIMED);
gtk_gesture_set_state (second_gesture, GTK_EVENT_SEQUENCE_DENIED);
}
static void
second_gesture_begin_cb (GtkGesture *second_gesture,
GdkEventSequence *sequence,
gpointer user_data)
{
if (gtk_gesture_get_sequence_state (first_gesture, sequence) == GTK_EVENT_SEQUENCE_CLAIMED)
gtk_gesture_set_state (second_gesture, GTK_EVENT_SEQUENCE_DENIED);
}
If both gestures are in the same group, just set the state on the gesture emitting the event, the sequence will be already be initialized to the group’s global state when the second gesture processes the event.
Parameters
state
-
Type:
GtkEventSequenceState
The sequence state.