GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Implemented Interfaces | Properties |
GtkEventBoxGtkEventBox Виджет используемый для захвата событий виджетами не имеющими собственного окна |
#include <gtk/gtk.h>
GtkEventBox;
GtkWidget* gtk_event_box_new (void);
void gtk_event_box_set_above_child (GtkEventBox *event_box,
gboolean above_child);
gboolean gtk_event_box_get_above_child (GtkEventBox *event_box);
void gtk_event_box_set_visible_window
(GtkEventBox *event_box,
gboolean visible_window);
gboolean gtk_event_box_get_visible_window
(GtkEventBox *event_box);
GObject
+----GInitiallyUnowned
+----GtkObject
+----GtkWidget
+----GtkContainer
+----GtkBin
+----GtkEventBox
GtkEventBox реализует AtkImplementorIface.
"above-child" gboolean : Read / Write
"visible-window" gboolean : Read / Write
GtkEventBox это подкласс GtkBin который также имеет своё собственное окно. Он полезен при получении событий виджетами не имеющими своего собственного окна.
typedef struct _GtkEventBox GtkEventBox;Структура GtkEventBox содержит только закрытые данные, доступ к которым должен осуществляеться с помощью функций описанных ниже.
gtk_event_box_new ()
GtkWidget* gtk_event_box_new (void);Создаёт новый GtkEventBox.
Возвращает : |
новый GtkEventBox. |
void gtk_event_box_set_above_child (GtkEventBox *event_box,
gboolean above_child);
Устанавливает расположено ли окно контейнера события выше окон его дочерних элементов, или ниже. Если окно выше, все события внутри контейнера событий будут получены контейнером. Если окно ниже, события в первую очередь получат окна дочерних виджетов, а затем их родитель.
По умолчанию окно располагается ниже дочерних виджетов.
|
|
|
|
Начиная с версии 2.4
gboolean gtk_event_box_get_above_child (GtkEventBox *event_box);Определяет находится ли окно контейнера событий ниже или выше окон его дочерних виджетов. Смотрите
gtk_event_box_set_above_child()
.
|
|
Возвращает : |
|
Начиная с версии 2.4
void gtk_event_box_set_visible_window
(GtkEventBox *event_box,
gboolean visible_window);
Устанавливает используется ли контейнером событий видимое или не видимое окно. По умолчанию используется видимое окно.
В случае невидимого окна контейнера,
окно которое контейнер события создаёт
GDK_INPUT_ONLY
окно, что означает что оно не видимо и
служит только для получения событий.
Видимое окно контейнера событий
создаёт GDK_INPUT_OUTPUT
окно, которое действует как родительское
окно для всех виджетов содержащихся в
контейнере событий.
Обычно вы должны делать ваш контейнер событий не видимым, если вы просто хотите перехватывать события. Создание видимого окна может вызвать артефакты, которые видимы для пользователя, особенно если пользователь использует тему с градиентами или изображениями.
Основная причина создавать контейнер событий только для ввода в том, чтобы не появлялись артефакты при установки разноцветного фона или фона с рисунком.
Есть одна
неожиданная проблема для не видимого
контейнера событий который имеет окно
ниже дочерних виджетов. (Смотрите
gtk_event_box_set_above_child()
.)
Так как окно только для ввода не предок
окна любых окон которые порождают
виджеты созданные контейнером событий,
события в этих окнах не распространяются
оконной системой, а только GTK+. На практике
это означает, что если событие не в маске
для окна потомка (смотрите
gtk_widget_add_events()
),
оно не будет получено контейнером
событий.
Эта проблема не существует для видимых контейнеров событий, потому что в этом случае, окно контейнера событий фактический предок порожденных окон, не только в том же участке экрана.
|
|
|
Логическое значение |
Начиная с версии 2.4
gboolean gtk_event_box_get_visible_window
(GtkEventBox *event_box);
Определяет имеет ли контейнер событий
видимое окно. Смотрите
gtk_event_box_set_visible_window()
.
|
|
Возвращает : |
|
Начиная с версии 2.4
above-child
""above-child" gboolean : Read / WriteЯвляется ли окно контейнера событий выше окон дочерних виджетов.
Значение по умолчанию: FALSE
Свойство "
visible-window
""visible-window" gboolean : Read / WriteЯвляется ли контейнер событий видимым.
Значение по умолчанию: TRUE