2008-09-15 11 views
0

У меня есть файл описания графического интерфейса Glade с окном GtkTreeView в окне GtkHBox; и есть обработчик сигнала row_activated. Теперь Glade автоматически установила свойство «events» (унаследованное от GtkWidget) этого дерева для некоторого значения (GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK). И есть две странные вещи с этим:Какова цель свойства GtkWidget.events для (например) виджетов GtkTreeView?

  • устраняющие предварительно установленное значение (так что свойство пусто), кажется, не разорвать приложения (по крайней мере, не со старым GTK 2.10 Я имею атм) ,
  • на самом деле, досадная ошибка, которую я видел раньше (где элементы дерева не будут правильно реагировать на разворот или свернуть клики) теперь ушла!

Мне еще предстоит протестировать это с новой версией GTK, но вопрос уже существует: именно в чем заключается цель этого свойства events? И почему Glade автоматически и неоправданно устанавливают его на какое-то значение? У меня есть некоторые побочные эффекты, о которых я не знаю?

ответ

0

Не указывает ли эта маска на события, которые вы готовы получить? В этом случае вы, вероятно, захотите получить уведомление, которое пользователь нажал или дважды щелкнул по элементу в GtkTreeView, и вы захотите зарегистрировать обратные вызовы для обработки этих событий.

0

me.yahoo.com/a/kUQ7zeQ: но даже если я установил свойство в пустую строку, как упоминалось, обработчик row_activated по-прежнему вызывается, когда я дважды щелкаю по строке (или нажимаю Enter или пробел). Таким образом, treeview по-прежнему получает события ...

1

Это ошибка на поляне, она всегда устанавливает свойство события создаваемых виджетами. Он не имеет понятия значения по умолчанию для свойства, поэтому он всегда устанавливает его.