Method
GtkGestureset_sequence_state
since: 3.14
Declaration [src]
gboolean
gtk_gesture_set_sequence_state (
GtkGesture* gesture,
GdkEventSequence* sequence,
GtkEventSequenceState state
)
Description [src]
Sets the state of sequence
in gesture
. 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_sequence_state (first_gesture, sequence, GTK_EVENT_SEQUENCE_CLAIMED);
gtk_gesture_set_sequence_state (second_gesture, sequence, 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_sequence_state (second_gesture, sequence, 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.
Available since: 3.14
Parameters
sequence
-
Type:
GdkEventSequence
A
GdkEventSequence
.The data is owned by the caller of the method. state
-
Type:
GtkEventSequenceState
The sequence state.