方法

GtkGestureset_sequence_state

已弃用:4.10。 

声明 [src]

gboolean
gtk_gesture_set_sequence_state (
  GtkGesture* gesture,
  GdkEventSequence* sequence,
  GtkEventSequenceState state
)

描述 [src]

设置手势中的 sequence 状态。

Sequences 从状态 GTK_EVENT_SEQUENCE_NONE 开始,每次状态改变后,它们就无法回到该状态。同样,处于 GTK_EVENT_SEQUENCE_DENIED 状态的 sequence 无法回退到未拒绝状态。根据这些规则,事件序列的生存期被限制为接下来的四个

  • None
  • None → Denied
  • None → Claimed
  • None → Claimed → Denied

注意:由于事件处理顺序,在 GtkGesture::begin 信号处理程序中设置另一个手势的状态可能会不安全,因为回调可能在其他手势知道序列之前执行。执行此操作的安全方法可能是

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

如果两个手势属于同一组,只需在触发事件的 gesture 上设置状态,当第二个手势处理事件时,序列将被初始化为组的全局状态。

自 version 4.10 开始弃用。

使用 gtk_gesture_set_state()

参数

sequence

类型: GdkEventSequence

一个 GdkEventSequence

数据由方法的调用者拥有。
state

类型: GtkEventSequenceState

序列状态。

返回值

类型: gboolean

TRUE 如果 sequence 被手势处理,并且状态已成功更改。