Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Implemented Interfaces  |  Properties

GtkEventBox

GtkEventBox Виджет используемый для захвата событий виджетами не имеющими собственного окна

Краткое описание

#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 который также имеет своё собственное окно. Он полезен при получении событий виджетами не имеющими своего собственного окна.

Детали

GtkEventBox

typedef struct _GtkEventBox GtkEventBox;

Структура GtkEventBox содержит только закрытые данные, доступ к которым должен осуществляеться с помощью функций описанных ниже.


gtk_event_box_new ()

GtkWidget*  gtk_event_box_new               (void);

Создаёт новый GtkEventBox.

Возвращает :

новый GtkEventBox.


gtk_event_box_set_above_child ()

void gtk_event_box_set_above_child (GtkEventBox *event_box, gboolean above_child);

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

По умолчанию окно располагается ниже дочерних виджетов.

event_box :

GtkEventBox

above_child :

TRUE если окно контейнера события выше окон его дочерних виджетов.

Начиная с версии 2.4


gtk_event_box_get_above_child ()

gboolean    gtk_event_box_get_above_child   (GtkEventBox *event_box);

Определяет находится ли окно контейнера событий ниже или выше окон его дочерних виджетов. Смотрите gtk_event_box_set_above_child().

event_box :

GtkEventBox

Возвращает :

TRUE если окно контейнера события находится выше окон дочерних виджетов.

Начиная с версии 2.4


gtk_event_box_set_visible_window ()

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()), оно не будет получено контейнером событий.

Эта проблема не существует для видимых контейнеров событий, потому что в этом случае, окно контейнера событий фактический предок порожденных окон, не только в том же участке экрана.

event_box :

GtkEventBox

visible_window :

Логическое значение

Начиная с версии 2.4


gtk_event_box_get_visible_window ()

gboolean gtk_event_box_get_visible_window (GtkEventBox *event_box);

Определяет имеет ли контейнер событий видимое окно. Смотрите gtk_event_box_set_visible_window().

event_box :

GtkEventBox

Возвращает :

TRUE если контейнер событий имеет видимое окно

Начиная с версии 2.4

Детали свойств

Свойство "above-child"

  "above-child"          gboolean              : Read / Write

Является ли окно контейнера событий выше окон дочерних виджетов.

Значение по умолчанию: FALSE


Свойство "visible-window"

  "visible-window"       gboolean              : Read / Write

Является ли контейнер событий видимым.

Значение по умолчанию: TRUE