Spec-Zone.ru › GTK 3.24

GtkMenu

GtkMenu — Виджет меню

Функции

GtkWidget * gtk_menu_new ()
GtkWidget * gtk_menu_new_from_model ()
void gtk_menu_set_screen ()
void gtk_menu_reorder_child ()
void gtk_menu_attach ()
void gtk_menu_popup_at_rect ()
void gtk_menu_popup_at_widget ()
void gtk_menu_popup_at_pointer ()
void gtk_menu_popup_for_device ()
void gtk_menu_popup ()
void gtk_menu_set_accel_group ()
GtkAccelGroup * gtk_menu_get_accel_group ()
void gtk_menu_set_accel_path ()
const gchar * gtk_menu_get_accel_path ()
void gtk_menu_set_title ()
const gchar * gtk_menu_get_title ()
void gtk_menu_set_monitor ()
gint gtk_menu_get_monitor ()
void gtk_menu_place_on_monitor ()
gboolean gtk_menu_get_tearoff_state ()
void gtk_menu_set_reserve_toggle_size ()
gboolean gtk_menu_get_reserve_toggle_size ()
void gtk_menu_popdown ()
void gtk_menu_reposition ()
GtkWidget * gtk_menu_get_active ()
void gtk_menu_set_active ()
void gtk_menu_set_tearoff_state ()
void gtk_menu_attach_to_widget ()
void gtk_menu_detach ()
GtkWidget * gtk_menu_get_attach_widget ()
GList * gtk_menu_get_for_attach_widget ()
void (*GtkMenuPositionFunc) ()
void (*GtkMenuDetachFunc) ()

Свойства

GtkAccelGroup * accel-group Чтение/Запись
char * accel-path Чтение/Запись
int active Чтение/Запись
GdkAnchorHints anchor-hints Чтение/Запись/Создание
GtkWidget * attach-widget Чтение/Запись
GdkWindowTypeHint menu-type-hint Чтение/Запись/Создание
int monitor Чтение/Запись
int rect-anchor-dx Чтение/Запись/Создание
int rect-anchor-dy Чтение/Запись/Создание
gboolean reserve-toggle-size Чтение/Запись
gboolean tearoff-state Чтение/Запись
char * tearoff-title Чтение/Запись

Свойства дочерних элементов

int bottom-attach Чтение/Запись
int left-attach Чтение/Запись
int right-attach Чтение/Запись
int top-attach Чтение/Запись

Свойства стиля

GtkArrowPlacement arrow-placement Чтение
float arrow-scaling Чтение
gboolean double-arrows Чтение
int horizontal-offset Чтение
int horizontal-padding Чтение
int vertical-offset Чтение
int vertical-padding Чтение

Сигналы

void move-scroll Действие
void popped-up Выполняется в первую очередь

Типы и значения

struct GtkMenu
enum GtkArrowPlacement

Иерархия объектов

    GObject
    ╰── GInitiallyUnowned
        ╰── GtkWidget
            ╰── GtkContainer
                ╰── GtkMenuShell
                    ╰── GtkMenu
                        ╰── GtkRecentChooserMenu

Реализованные интерфейсы

GtkMenu реализует AtkImplementorIface и GtkBuildable.

Включаемые файлы

#include <gtk/gtk.h>

Описание

A GtkMenu — это GtkMenuShell, который реализует выпадающее меню, состоящее из списка GtkMenuItem объектов, которые пользователь может навигировать и активировать для выполнения функций приложения.

Меню GtkMenu обычно вызывается при активации GtkMenuItem в GtkMenuBar или вызывается при активации GtkMenuItem в другом GtkMenu.

Меню GtkMenu также может быть вызвано при активации GtkComboBox. Другие составные виджеты, такие как GtkNotebook, также могут вызывать GtkMenu.

Приложения могут отобразить GtkMenu как всплывающее меню, вызвав функцию gtk_menu_popup(). В примере ниже показано, как приложение может отобразить всплывающее меню при нажатии третьей кнопки мыши.

Обработка сигнала всплывания.

Обработчик сигнала, отображающий всплывающее меню.

Узлы CSS

// connect our handler which will popup the menu
g_signal_connect_swapped (window, "button_press_event",
G_CALLBACK (my_popup_handler), menu);

Основной узел CSS GtkMenu имеет имя menu, и есть два дочерних узла с именем arrow для стрелок меню прокрутки. Эти дочерние узлы получают классы стиля .top и .bottom.

Функции

gtk_menu_new ()

GtkWidget *
gtk_menu_new (void);

Создаёт новый GtkMenu

Возвращает

новый GtkMenu

gtk_menu_new_from_model ()

GtkWidget *
gtk_menu_new_from_model (GMenuModel *model);

Создаёт GtkMenu и заполняет его пунктами меню и подменю в соответствии с model.

Созданные пункты меню подключены к действиям, найденным в GtkApplicationWindow, к которому относится меню — обычно путём прикрепления к виджету (см. gtk_menu_attach_to_widget()), который находится внутри иерархии виджетов GtkApplicationWindows.

Действия также могут быть добавлены с помощью gtk_widget_insert_action_group() к виджету прикрепления меню или любому из его родительских виджетов.

Параметры

model

a GMenuModel

Возвращает

новый GtkMenu

С: 3.4

gtk_menu_set_screen ()

void
gtk_menu_set_screen (GtkMenu *menu,
                     GdkScreen *screen);

Устанавливает GdkScreen, на котором будет отображаться меню.

Параметры

menu

a GtkMenu

screen

a GdkScreen, или NULL если экран должен быть определён виджетом, к которому прикреплено меню.

[allow-none]

С: 2.2

gtk_menu_reorder_child ()

void
gtk_menu_reorder_child (GtkMenu *menu,
                        GtkWidget *child,
                        gint position);

Перемещает child в новое position в списке menu дочерних элементов.

Параметры

menu

a GtkMenu

child

the GtkMenuItem для перемещения

position

новое положение для размещения child. Позиции нумеруются от 0 до n - 1

gtk_menu_attach ()

void
gtk_menu_attach (GtkMenu *menu,
                 GtkWidget *child,
                 guint left_attach,
                 guint right_attach,
                 guint top_attach,
                 guint bottom_attach);

Добавляет новый GtkMenuItem в меню (таблицу). Количество «ячеек», которые будет занимать элемент, задаётся left_attach, right_attach, top_attach и bottom_attach. Они представляют собой номера столбцов и строк самой левой, самой правой, самой верхней и самой нижней ячеек таблицы. (Столбцы и строки индексируются с нуля).

Обратите внимание, что эта функция не связана с gtk_menu_detach().

Параметры

menu

a GtkMenu

child

a GtkMenuItem

left_attach

Номер столбца для прикрепления левой стороны элемента

right_attach

Номер столбца для прикрепления правой стороны элемента

top_attach

Номер строки для прикрепления верхней стороны элемента

bottom_attach

Номер строки для прикрепления нижней стороны элемента

С: 2.4

gtk_menu_popup_at_rect ()

void
gtk_menu_popup_at_rect (GtkMenu *menu,
                        GdkWindow *rect_window,
                        const GdkRectangle *rect,
                        GdkGravity rect_anchor,
                        GdkGravity menu_anchor,
                        const GdkEvent *trigger_event);

Отображает menu и делает его доступным для выбора.

См. gtk_menu_popup_at_widget() и gtk_menu_popup_at_pointer(), которые обрабатывают более распространённые случаи для отображения меню.

menu будет позиционироваться по rect, выравнивая их точки привязки. rect относительно верхнего левого угла rect_window. rect_anchor и menu_anchor определяют точки привязки к rect и menu для совмещения. menu может быть дополнительно смещён на “rect-anchor-dx” и “rect-anchor-dy”.

Точки привязки следует указывать в предположении, что направление текста слева направо; они будут автоматически перевернуты по горизонтали, если направление текста справа налево.

Другие свойства, которые влияют на поведение этой функции, — “anchor-hints” и “menu-type-hint”. Подключитесь к сигналу “popped-up”, чтобы узнать, как он был фактически позиционирован.

Параметры

menu

the GtkMenu для отображения

rect_window

the GdkWindow относительно которого rect.

[not nullable]

rect

the GdkRectangle для выравнивания menu.

[not nullable]

rect_anchor

точка на rect, которая будет выровнена с точкой привязки menu

menu_anchor

точка на menu, которая будет выровнена с точкой привязки rect

trigger_event

the GdkEvent запустивший этот запрос или NULL если это текущее событие.

[nullable]

С: 3.22

gtk_menu_popup_at_widget ()

void
gtk_menu_popup_at_widget (GtkMenu *menu,
                          GtkWidget *widget,
                          GdkGravity widget_anchor,
                          GdkGravity menu_anchor,
                          const GdkEvent *trigger_event);

Отображает menu и делает его доступным для выбора.

См. gtk_menu_popup_at_pointer(), чтобы отобразить меню в позиции указателя. gtk_menu_popup_at_rect() также позволяет позиционировать меню в произвольной прямоугольной области.

menu будет позиционирован относительно widget, выравнивая их точки якорной привязки. widget_anchor и menu_anchor определяют точки якорной привязки для widget и menu соответственно. menu можно дополнительно сместить на “rect-anchor-dx” и “rect-anchor-dy”.

Якорные точки должны быть указаны с учетом направления текста слева направо; они будут автоматически изменены на горизонтально обратные, если направление текста справа налево.

Другие свойства, влияющие на поведение этой функции, — это “anchor-hints” и “menu-type-hint”. Подключитесь к сигналу “popped-up”, чтобы узнать, как он был фактически расположен.

Параметры

menu

меню GtkMenu для отображения

widget

элемент GtkWidget для выравнивания menu с.

[не может быть NULL]

widget_anchor

точка на widget для выравнивания с точкой якорной привязки menu

menu_anchor

точка на menu для выравнивания с точкой якорной привязки widget

trigger_event

событие GdkEvent, которое инициировало запрос, или NULL если это текущее событие.

[может быть NULL]

С: 3.22

gtk_menu_popup_at_pointer ()

void
gtk_menu_popup_at_pointer (GtkMenu *menu,
                           const GdkEvent *trigger_event);

Отображает menu и делает его доступным для выбора.

См. gtk_menu_popup_at_widget(), чтобы отобразить меню в позиции элемента. gtk_menu_popup_at_rect() также позволяет позиционировать меню в произвольной прямоугольной области.

menu будет позиционирован относительно указателя, связанного с trigger_event.

Свойства, влияющие на поведение этой функции, — это “anchor-hints”, “rect-anchor-dx”, “rect-anchor-dy” и “menu-type-hint”. Подключитесь к сигналу “popped-up”, чтобы узнать, как он был фактически расположен.

Параметры

menu

меню GtkMenu для отображения

trigger_event

событие GdkEvent, которое инициировало запрос, или NULL если это текущее событие.

[может быть NULL]

С: 3.22

gtk_menu_popup_for_device ()

void
gtk_menu_popup_for_device (GtkMenu *menu,
                           GdkDevice *device,
                           GtkWidget *parent_menu_shell,
                           GtkWidget *parent_menu_item,
                           GtkMenuPositionFunc func,
                           gpointer data,
                           GDestroyNotify destroy,
                           guint button,
                           guint32 activate_time);

gtk_menu_popup_for_device устарел начиная с версии 3.22 и не должен использоваться в новом коде.

Пожалуйста, используйте gtk_menu_popup_at_widget(), gtk_menu_popup_at_pointer() или gtk_menu_popup_at_rect() вместо этого.

Отображает меню и делает его доступным для выбора.

Приложения могут использовать эту функцию для отображения контекстных меню, и обычно будут передавать NULL для параметров parent_menu_shell, parent_menu_item, func, data и destroy. По умолчанию функция позиционирования меню разместит его в текущем положении device (или его соответствующего указателя).

Параметр button должен содержать кнопку мыши, нажатие которой инициировало всплывающее меню. Если всплывающее меню было инициировано не нажатием кнопки мыши, например, отпусканием кнопки мыши или нажатием клавиши, button должно быть равно 0.

Параметр activate_time используется для разрешения конфликтов при одновременном запросе захвата мыши/клавиатуры. Для корректной работы он должен содержать временной отметку события пользователя (например, щелчка мыши или нажатия клавиши), вызвавшего инициацию всплывающего меню. Только если такое событие недоступно, можно использовать gtk_get_current_event_time().

Обратите внимание, что эта функция работает не очень хорошо на GDK-бекендах, не имеющих глобальных координат, таких как Wayland или Mir. Вы, вероятно, должны использовать одну из функций gtk_menu_popup_at_, которые не имеют этой проблемы.

Параметры

menu

a GtkMenu

device

a GdkDevice.

[allow-none]

parent_menu_shell

the menu shell containing the triggering menu item, or NULL.

[allow-none]

parent_menu_item

the menu item whose activation triggered the popup, or NULL.

[allow-none]

func

a user supplied function used to position the menu, or NULL.

[allow-none]

data

user supplied data to be passed to func .

[allow-none]

destroy

destroy notify for data .

[allow-none]

button

the mouse button which was pressed to initiate the event

activate_time

the time at which the activation event occurred

С: 3.0

gtk_menu_popup ()

void
gtk_menu_popup (GtkMenu *menu,
                GtkWidget *parent_menu_shell,
                GtkWidget *parent_menu_item,
                GtkMenuPositionFunc func,
                gpointer data,
                guint button,
                guint32 activate_time);

gtk_menu_popup устарел начиная с версии 3.22 и не должен использоваться в новом коде.

Пожалуйста, используйте gtk_menu_popup_at_widget(), gtk_menu_popup_at_pointer() или gtk_menu_popup_at_rect() вместо этого.

Отображает меню и делает его доступным для выбора.

Приложения могут использовать эту функцию для отображения контекстных меню, и обычно будут передавать NULL для параметров parent_menu_shell, parent_menu_item, func и data. По умолчанию функция позиционирования меню разместит его в текущем положении курсора мыши.

Параметр button должен содержать кнопку мыши, нажатие которой инициировало всплывающее меню. Если всплывающее меню было инициировано не нажатием кнопки мыши, например, отпусканием кнопки мыши или нажатием клавиши, button должно быть равно 0.

Параметр activate_time используется для разрешения конфликтов при одновременном запросе захвата мыши/клавиатуры. Для корректной работы он должен содержать временную метку события пользователя (например, щелчка мыши или нажатия клавиши), вызвавшего инициацию всплывающего меню. Только если такое событие недоступно, можно использовать gtk_get_current_event_time().

Обратите внимание, что эта функция работает не очень хорошо на GDK-бекендах, не имеющих глобальных координат, таких как Wayland или Mir. Вы, вероятно, должны использовать одну из функций gtk_menu_popup_at_, которые не имеют этой проблемы.

Параметры

...

gtk_menu_set_accel_group ()

void
gtk_menu_set_accel_group (GtkMenu *menu,
                          GtkAccelGroup *accel_group);

Устанавливает GtkAccelGroup, содержащий глобальные ускорители для меню. Эта группа ускорителей также должна быть добавлена во все окна, в которых используется это меню, с помощью gtk_window_add_accel_group(), чтобы эти окна поддерживали все ускорители, содержащиеся в этой группе.

Параметры

...

gtk_menu_get_accel_group ()

GtkAccelGroup *
gtk_menu_get_accel_group (GtkMenu *menu);

Получает GtkAccelGroup, содержащий глобальные активаторы для меню. См. gtk_menu_set_accel_group().

Параметры

menu

a GtkMenu

Возвращает

соответствующий GtkAccelGroup для меню.

[transfer none]

gtk_menu_set_accel_path ()

void
gtk_menu_set_accel_path (GtkMenu *menu,
                         const gchar *accel_path);

Устанавливает путь активатора для этого меню, из которого можно создавать пути активаторов для его непосредственных дочерних элементов и пунктов меню. Основная цель этой функции — избавить программиста от необходимости вызывать gtk_menu_item_set_accel_path() для каждого элемента меню, который должен поддерживать изменяемые пользователем активаторы во время выполнения. Вместо этого, вызвав gtk_menu_set_accel_path() для родительского элемента, каждый пункт меню этого меню, содержащий метку, описывающую его назначение, автоматически получает назначенный путь активатора.

Например, меню, содержащее пункты меню «Новый» и «Выход», после вызова gtk_menu_set_accel_path (menu, "&lt;Gnumeric-Sheet>/File");, назначит своим пунктам пути активаторов: "&lt;Gnumeric-Sheet>/File/New" и "&lt;Gnumeric-Sheet>/File/Exit".

Назначение путей активаторов пунктам меню позволяет пользователю изменять их активаторы во время выполнения. Более подробную информацию о путях активаторов и их настройках по умолчанию можно найти в gtk_accel_map_add_entry().

Обратите внимание, что строка accel_path будет храниться в GQuark. Поэтому, если вы передаете статическую строку, вы можете сэкономить некоторое количество памяти, предварительно интернировав ее с помощью g_intern_static_string().

Параметры

menu

допустимое GtkMenu

accel_path

допустимый путь активатора или NULL для сброса пути.

[nullable]

gtk_menu_get_accel_path ()

const gchar *
gtk_menu_get_accel_path (GtkMenu *menu);

Возвращает путь активатора, установленный для меню.

Параметры

menu

допустимое GtkMenu

Возвращает

установленный путь активатора для меню.

С: 2.14

gtk_menu_set_title ()

void
gtk_menu_set_title (GtkMenu *menu,
                    const gchar *title);

gtk_menu_set_title устарело с версии 3.10 и не должно использоваться в новом коде.

Устанавливает строку заголовка для меню.

Заголовок отображается, когда меню отображается как вырывающееся меню. Если title имеет значение NULL, меню проверит, прикреплено ли оно к родительскому пункту меню, и в случае положительного результата попытается использовать тот же текст, что и метка этого пункта меню.

Параметры

menu

a GtkMenu

title

строка, содержащая заголовок для меню, или NULL для наследования заголовка родительского пункта меню, если таковой имеется.

[nullable]

gtk_menu_get_title ()

const gchar *
gtk_menu_get_title (GtkMenu *menu);

gtk_menu_get_title устарело с версии 3.10 и не должно использоваться в новом коде.

Возвращает заголовок меню. См. gtk_menu_set_title().

Параметры

menu

a GtkMenu

Возвращает

заголовок меню или NULL, если у меню нет установленного заголовка. Эта строка принадлежит GTK+ и не должна изменяться или освобождаться.

gtk_menu_set_monitor ()

void
gtk_menu_set_monitor (GtkMenu *menu,
                      gint monitor_num);

Сообщает GTK+, на каком мониторе должно быть отображено меню. См. gdk_monitor_get_geometry().

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

Параметры

menu

a GtkMenu

monitor_num

номер монитора, на котором должно быть отображено меню

С: 2.4

gtk_menu_get_monitor ()

gint
gtk_menu_get_monitor (GtkMenu *menu);

Возвращает номер монитора, на котором следует отобразить меню.

Параметры

menu

a GtkMenu

Возвращает

номер монитора, на котором следует отобразить меню, или -1, если монитор не задан

С: 2.14

gtk_menu_place_on_monitor ()

void
gtk_menu_place_on_monitor (GtkMenu *menu,
                           GdkMonitor *monitor);

Размещает menu на заданном мониторе.

Параметры

menu

a GtkMenu

monitor

монитор, на котором следует разместить меню

С: 3.22

gtk_menu_get_tearoff_state ()

gboolean
gtk_menu_get_tearoff_state (GtkMenu *menu);

gtk_menu_get_tearoff_state устарело с версии 3.10 и не должно использоваться в новом коде.

Возвращает, вырвано ли меню. См. gtk_menu_set_tearoff_state().

Параметры

menu

a GtkMenu

Возвращает

TRUE если меню в данный момент вырвано.

gtk_menu_set_reserve_toggle_size ()

void
gtk_menu_set_reserve_toggle_size (GtkMenu *menu,
                                  gboolean reserve_toggle_size);

Устанавливает, следует ли меню зарезервировать место для рисования переключателей или значков, независимо от их фактического наличия.

Параметры

menu

a GtkMenu

reserve_toggle_size

следует ли зарезервировать место для переключателей

С: 2.18

gtk_menu_get_reserve_toggle_size ()

gboolean
gtk_menu_get_reserve_toggle_size (GtkMenu *menu);

Возвращает, резервирует ли меню место для переключателей и значков, независимо от их фактического наличия.

Параметры

меню

a GtkMenu

Возвращает

Резервируется ли место для переключателей в меню

С: 2.18

gtk_menu_popdown ()

void
gtk_menu_popdown (GtkMenu *menu);

Удаляет меню с экрана.

Параметры

меню

a GtkMenu

gtk_menu_reposition ()

void
gtk_menu_reposition (GtkMenu *menu);

Перемещает меню в соответствии с его функцией позиционирования.

Параметры

меню

a GtkMenu

gtk_menu_get_active ()

GtkWidget *
gtk_menu_get_active (GtkMenu *menu);

Возвращает выбранный пункт меню из меню. Используется GtkComboBox.

Параметры

меню

a GtkMenu

Возвращает

последний выбранный пункт меню GtkMenuItem. Если выбор еще не сделан, выбирается первый пункт меню.

[transfer none]

gtk_menu_set_active ()

void
gtk_menu_set_active (GtkMenu *menu,
                     guint index);

Выбирает указанный пункт меню в меню. Используется GtkComboBox и не должен использоваться другими.

Параметры

меню

a GtkMenu

индекс

индекс пункта меню для выбора. Значения индекса от 0 до n-1

gtk_menu_set_tearoff_state ()

void
gtk_menu_set_tearoff_state (GtkMenu *menu,
                            gboolean torn_off);

gtk_menu_set_tearoff_state устарел с версии 3.10 и не должен использоваться в новом коде.

Изменяет состояние отрыва меню. Меню обычно отображается как выпадающее меню, которое сохраняется до тех пор, пока меню активно. Оно также может отображаться как меню отрыва, которое сохраняется до тех пор, пока оно не будет закрыто или повторно подключено.

Параметры

меню

a GtkMenu

оторвано

Если TRUE, меню отображается как меню отрыва.

gtk_menu_attach_to_widget ()

void
gtk_menu_attach_to_widget (GtkMenu *menu,
                           GtkWidget *attach_widget,
                           GtkMenuDetachFunc detacher);

Прикрепляет меню к виджету и предоставляет функцию обратного вызова, которая будет вызвана, когда меню вызовет gtk_menu_detach() во время своего уничтожения.

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

Параметры

меню

a GtkMenu

прикрепить_виджет

the GtkWidget к которому будет прикреплено меню

открепляющий

функция обратного вызова, предоставленная пользователем, которая будет вызвана, когда меню вызовет gtk_menu_detach().

[scope async][allow-none]

gtk_menu_detach ()

void
gtk_menu_detach (GtkMenu *menu);

Открепляет меню от виджета, к которому оно было прикреплено. Эта функция вызовет функцию обратного вызова, detacher , предоставленную при вызове функции gtk_menu_attach_to_widget().

Параметры

меню

a GtkMenu

gtk_menu_get_attach_widget ()

GtkWidget *
gtk_menu_get_attach_widget (GtkMenu *menu);

Возвращает GtkWidget, к которому прикреплено меню.

Параметры

меню

a GtkMenu

Возвращает

the GtkWidget к которому прикреплено меню.

[transfer none]

gtk_menu_get_for_attach_widget ()

GList *
gtk_menu_get_for_attach_widget (GtkWidget *widget);

Возвращает список меню, прикрепленных к этому виджету. Этот список принадлежит GTK+ и его нельзя изменять.

Параметры

виджет

a GtkWidget

Возвращает

список меню, прикрепленных к этому виджету.

[element-type GtkWidget][transfer none]

С: 2.6

Функция GtkMenuPositionFunc

void
(*GtkMenuPositionFunc) (GtkMenu *menu,
                        gint *x,
                        gint *y,
                        gboolean *push_in,
                        gpointer user_data);

Пользовательская функция, предоставляемая при вызове gtk_menu_popup(), которая управляет позиционированием меню при его отображении. Функция устанавливает параметры x и y в координаты, где должно быть отображено меню. Чтобы отобразить меню на другом мониторе, отличном от монитора указателя мыши, необходимо вызвать gtk_menu_set_monitor().

Параметры

меню

объект GtkMenu.

x

указатель на gint, представляющий горизонтальную позицию, где должно быть отображено меню.

[inout]

y

указатель на gint, представляющий вертикальную позицию, где должно быть отображено меню. Это параметр вывода.

[inout]

push_in

Этот параметр контролирует, как обрабатываются меню, расположенные за пределами монитора. Если этот параметр равен TRUE, и часть меню находится за пределами монитора, то GTK+ перемещает окно в видимую область, фактически изменяя позицию всплывающего окна. Обратите внимание, что перемещение и, возможно, изменение размера меню изменят положение прокрутки, чтобы элементы меню оставались на том же месте, т.е. в том же положении на мониторе, что и без изменения размера. На практике это поведение полезно только для всплывающих окон combobox или меню опций, и не может использоваться для простого ограничения меню границами монитора. В этом случае изменение смещения прокрутки нежелательно.

[out]

user_data

данные, предоставленные пользователем в параметре data функции gtk_menu_popup().

Функция GtkMenuDetachFunc

void
(*GtkMenuDetachFunc) (GtkWidget *attach_widget,
                      GtkMenu *menu);

Пользовательская функция, предоставляемая при вызове gtk_menu_attach_to_widget(), которая будет вызвана, когда меню будет позже отделено от виджета.

Параметры

attach_widget

виджет GtkWidget, от которого отделяется меню.

меню

отделяемое меню GtkMenu.

Другие подробности

Структура GtkMenu

struct GtkMenu;

Перечисление GtkArrowPlacement

Используется для указания расположения стрелок прокрутки в меню с прокруткой.

Элементы

GTK_ARROWS_BOTH

Размещение одной стрелки на каждом конце меню.

GTK_ARROWS_START

Размещение обеих стрелок вверху меню.

GTK_ARROWS_END

Размещение обеих стрелок внизу меню.

Подробное описание свойств

Свойство “accel-group”

  “accel-group”              GtkAccelGroup *

Группа ускорителей, содержащая ускорители для меню.

Владелец: GtkMenu

Флаги: Чтение / Запись

С версии: 2.14

Свойство “accel-path”

  “accel-path”               char *

Путь ускорителя, используемый для удобной построения путей ускорителей дочерних элементов.

Владелец: GtkMenu

Флаги: Чтение / Запись

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

С версии: 2.14

Свойство “active”

  “active”                   int

Индекс текущего выбранного пункта меню или -1, если ни один пункт не выбран.

Владелец: GtkMenu

Флаги: Чтение / Запись

Допустимые значения: >= -1

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

С версии: 2.14

Свойство “anchor-hints”

  “anchor-hints”             GdkAnchorHints

Рекомендации по позиционированию для выравнивания меню относительно прямоугольника.

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

Например, GDK_ANCHOR_FLIP_Y заменит GDK_GRAVITY_NORTH_WEST на GDK_GRAVITY_SOUTH_WEST и наоборот, если меню выходит за нижний край монитора.

См. gtk_menu_popup_at_rect(), gtk_menu_popup_at_widget(), gtk_menu_popup_at_pointer(), “rect-anchor-dx”, “rect-anchor-dy”, “menu-type-hint” и “popped-up”.

Владелец: GtkMenu

Флаги: Чтение / Запись / Построение

Значение по умолчанию: GDK_ANCHOR_FLIP_X | GDK_ANCHOR_FLIP_Y | GDK_ANCHOR_SLIDE_X | GDK_ANCHOR_SLIDE_Y | GDK_ANCHOR_RESIZE_X | GDK_ANCHOR_RESIZE_Y

С версии: 3.22

Свойство “attach-widget”

  “attach-widget”            GtkWidget *

Виджет, к которому прикреплено меню. Установка этого свойства прикрепляет меню без GtkMenuDetachFunc. Если вам нужно использовать функцию отсоединения, используйте gtk_menu_attach_to_widget() напрямую.

Владелец: GtkMenu

Флаги: Чтение / Запись

С версии: 2.14

Свойство “menu-type-hint”

  “menu-type-hint”           GdkWindowTypeHint

Тип GdkWindowTypeHint для использования для GdkWindow меню.

См. gtk_menu_popup_at_rect(), gtk_menu_popup_at_widget(), gtk_menu_popup_at_pointer(), “anchor-hints”, “rect-anchor-dx”, “rect-anchor-dy” и “popped-up”.

Владелец: GtkMenu

Флаги: Чтение / Запись / Построение

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

С версии: 3.22

Свойство “monitor”

  “monitor”                  int

Монитор, на котором будет отображено меню.

Владелец: GtkMenu

Флаги: Чтение / Запись

Допустимые значения: >= -1

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

С версии: 2.14

Свойство “rect-anchor-dx”

  “rect-anchor-dx”           int

Горизонтальное смещение, применяемое к меню, т.е. к якорю прямоугольника или виджета.

См. gtk_menu_popup_at_rect(), gtk_menu_popup_at_widget(), gtk_menu_popup_at_pointer(), “anchor-hints”, “rect-anchor-dy”, “menu-type-hint” и “popped-up”.

Владелец: GtkMenu

Флаги: Чтение / Запись / Построение

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

С версии: 3.22

Свойство “rect-anchor-dy”

  “rect-anchor-dy”           int

Вертикальное смещение, применяемое к меню, т.е. к якорю прямоугольника или виджета.

См. gtk_menu_popup_at_rect(), gtk_menu_popup_at_widget(), gtk_menu_popup_at_pointer(), “anchor-hints”, “rect-anchor-dx”, “menu-type-hint” и “popped-up”.

Владелец: GtkMenu

Флаги: Чтение / Запись / Построение

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

С версии: 3.22

Свойство “reserve-toggle-size”

  “reserve-toggle-size”      gboolean

Логическое значение, указывающее, резервирует ли меню место для переключателей и значков, независимо от их фактического присутствия.

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

Владелец: GtkMenu

Флаги: Чтение / Запись

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

С версии: 2.18

Свойство “tearoff-state”

  “tearoff-state”            gboolean

Логическое значение, указывающее, отсоединено ли меню.

GtkMenu:tearoff-state устарело с версии 3.10 и не должно использоваться в новом коде.

Владелец: GtkMenu

Флаги: Чтение / Запись

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

С версии: 2.6

Свойство “tearoff-title”

  “tearoff-title”            char *

Название, которое может отображаться менеджером окон, когда это меню отсоединено.

GtkMenu:tearoff-title устарело с версии 3.10 и не должно использоваться в новом коде.

Владелец: GtkMenu

Флаги: Чтение / Запись

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

Подробное описание свойств дочерних элементов

Свойство дочернего элемента “bottom-attach”

  “bottom-attach”            int

Номер строки, к которой прикрепляется нижняя часть дочернего элемента.

Владелец: GtkMenu

Флаги: Чтение / Запись

Допустимые значения: >= -1

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

Свойство дочернего элемента “left-attach”

  “left-attach”              int

Номер столбца, к которому прикрепляется левая сторона дочернего элемента.

Владелец: GtkMenu

Флаги: Чтение / Запись

Допустимые значения: >= -1

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

Свойство дочернего элемента “right-attach”

  “right-attach”             int

Номер столбца, к которому прикрепляется правая сторона дочернего элемента.

Владелец: GtkMenu

Флаги: Чтение / Запись

Допустимые значения: >= -1

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

Свойство дочернего элемента “top-attach”

  “top-attach”               int

Номер строки, к которой прикрепляется верхняя часть дочернего элемента.

Владелец: GtkMenu

Флаги: Чтение / Запись

Допустимые значения: >= -1

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

Подробное описание свойств стиля

Свойство стиля “arrow-placement”

  “arrow-placement”          GtkArrowPlacement

Указывает, где должны быть размещены стрелки прокрутки.

GtkMenu:arrow-placement устарело с версии 3.20 и не должно использоваться в новом коде.

Значение этого свойства стиля игнорируется.

Владелец: GtkMenu

Флаги: Чтение

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

С версии: 2.16

Свойство стиля “arrow-scaling”

  “arrow-scaling”            float

Произвольная константа для масштабирования размера стрелки прокрутки.

GtkMenu:arrow-scaling устарело с версии 3.20 и не должно использоваться в новом коде.

Используйте стандартные свойства CSS min-width/min-height для узла стрелки; значение этого свойства стиля игнорируется.

Владелец: GtkMenu

Флаги: Чтение

Допустимые значения: [0,1]

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

С версии: 2.16

Свойство стиля “double-arrows”

  “double-arrows”            gboolean

Когда TRUE, обе стрелки отображаются при прокрутке.

GtkMenu:double-arrows устарело с версии 3.20 и не должно использоваться в новом коде.

Значение этого свойства стиля игнорируется.

Владелец: GtkMenu

Флаги: Чтение

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

Свойство стиля “horizontal-offset”

  “horizontal-offset”        int

Если меню является подменю, установите смещение по горизонтали в пикселях.

Владелец: GtkMenu

Флаги: Чтение

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

Свойство стиля “horizontal-padding”

  “horizontal-padding”       int

Дополнительное пространство слева и справа от меню.

GtkMenu:horizontal-padding устарело с версии 3.8 и не должно использоваться в новом коде.

Используйте стандартное свойство padding CSS (через объекты, такие как GtkStyleContext и GtkCssProvider); значение этого свойства стиля игнорируется.

Владелец: GtkMenu

Флаги: Чтение

Допустимые значения: >= 0

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

Свойство стиля “vertical-offset”

  “vertical-offset”          int

Если меню является подменю, установите смещение по вертикали в пикселях.

Владелец: GtkMenu

Флаги: Чтение

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

Свойство стиля “vertical-padding”

  “vertical-padding”         int

Дополнительное пространство сверху и снизу меню.

GtkMenu:vertical-padding устарело с версии 3.8 и не должно использоваться в новом коде.

Используйте стандартное свойство padding CSS (через объекты, такие как GtkStyleContext и GtkCssProvider); значение этого свойства стиля игнорируется.

Владелец: GtkMenu

Флаги: Чтение

Допустимые значения: >= 0

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

Подробное описание сигналов

Сигнал “move-scroll”

void
user_function (GtkMenu      *menu,
               GtkScrollType scroll_type,
               gpointer      user_data)

Параметры

меню

объект GtkMenu

тип_прокрутки

перечисление GtkScrollType

данные_пользователя

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Действие

Сигнал “popped-up”

void
user_function (GtkMenu *menu,
               gpointer flipped_rect,
               gpointer final_rect,
               gboolean flipped_x,
               gboolean flipped_y,
               gpointer user_data)

Выдаётся, когда позиция menu окончательно определена после вызова gtk_menu_popup_at_rect(), gtk_menu_popup_at_widget() или gtk_menu_popup_at_pointer().

menu может быть повернут относительно прямоугольника якоря, чтобы остаться на экране, в этом случае flipped_x и flipped_y будут установлены в TRUE соответственно.

flipped_rect — идеальная позиция menu после возможного поворота, но до возможного смещения. final_rect — flipped_rect, но, возможно, смещённая, если поворот по-прежнему недостаточен для размещения menu на экране.

Синее меню — идеальная позиция menu, зелёное меню — flipped_rect, а красное меню — final_rect.

См. gtk_menu_popup_at_rect(), gtk_menu_popup_at_widget(), gtk_menu_popup_at_pointer(), свойство «anchor-hints», свойство «rect-anchor-dx», свойство «rect-anchor-dy» и свойство «menu-type-hint».

Параметры

меню

объект GtkMenu, который был вызван

flipped_rect

позиция menu после возможного поворота или NULL, если бэкенд не может получить её.

[nullable]

final_rect

конечная позиция menu или NULL, если бэкенд не может получить её.

[nullable]

flipped_x

TRUE, если якоря были повернуты по горизонтали

flipped_y

TRUE, если якоря были повернуты по вертикали

данные_пользователя

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Выполняется первым

С версии: 3.22

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/GtkMenu.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API