方法

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);
}

如果两个手势处于同一个组中,只需在产生事件的那个手势上设置状态,当第二个手势处理事件时,序列就已经初始化为组的全局状态。

参数

状态

类型: GtkEventSequenceState

序列状态。

返回值

类型: gboolean

TRUE 如果至少有一个序列的状态成功更改。