方法
GtkGestureset_state
声明 [源代码]
gboolean
gtk_gesture_set_state (
GtkGesture* gesture,
GtkEventSequenceState state
)
描述 [源代码]
设置Gesture当前交互的所有序列的状态。
序列起始状态为 GTK_EVENT_SEQUENCE_NONE
,每次状态改变后,它们将无法返回该状态。同样,处于 GTK_EVENT_SEQUENCE_DENIED
状态的序列无法返回到未被拒绝的状态。根据这些规则,事件序列的生命周期被限制在下一个...
- 无
- 无 → 拒绝
- 无 → 请求
- 无 → 请求 → 拒绝
注意:由于事件处理顺序,在 GtkGesture::begin
信号处理程序中设置另一个手势的状态可能不安全,因为回调可能会在另一个手势知道序列之前执行。一种安全的方法是:
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);
}
如果两个手势处于同一个组中,只需在产生事件的那个手势上设置状态,当第二个手势处理事件时,序列就已经初始化为组的全局状态。