Gestures have a notion of “state” for each individual touch sequence. When events from a touch sequence are first received, the touch sequence will have “none” state, this means the touch sequence is being handled by the gesture to possibly trigger actions, but the event propagation will not be stopped.
When the gesture enters recognition, or at a later point in time, the widget may choose to claim the touch sequences (individually or as a group), hence stopping event propagation after the event is run through every gesture in that widget and propagation phase. Anytime this happens, the touch sequences are cancelled downwards the propagation chain, to let these know that no further events will be sent.
Alternatively, or at a later point in time, the widget may choose to deny the touch sequences, thus letting those go through again in event propagation. When this happens in the capture phase, and if there are no other claiming gestures in the widget, a
GDK_BUTTON_PRESS event will be emulated and propagated downwards, in order to preserve consistency.
Grouped gestures always share the same state for a given touch sequence, so setting the state on one does transfer the state to the others. They also are mutually exclusive, within a widget where may be only one gesture group claiming a given sequence. If another gesture group claims later that same sequence, the first group will deny the sequence:
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.