GtkMenu
GtkMenu — Виджет меню
Функции
Свойства
| GtkAccelGroup * | accel-group | Чтение / Запись |
| gchar * | accel-path | Чтение / Запись |
| gint | active | Чтение / Запись |
| GdkAnchorHints | anchor-hints | Чтение / Запись / Создание |
| GtkWidget * | attach-widget | Чтение / Запись |
| GdkWindowTypeHint | menu-type-hint | Чтение / Запись / Создание |
| gint | monitor | Чтение / Запись |
| gint | rect-anchor-dx | Чтение / Запись / Создание |
| gint | rect-anchor-dy | Чтение / Запись / Создание |
| gboolean | reserve-toggle-size | Чтение / Запись |
| gboolean | tearoff-state | Чтение / Запись |
| gchar * | tearoff-title | Чтение / Запись |
Свойства дочерних элементов
| gint | bottom-attach | Чтение / Запись |
| gint | left-attach | Чтение / Запись |
| gint | right-attach | Чтение / Запись |
| gint | top-attach | Чтение / Запись |
Свойства стиля
| GtkArrowPlacement | arrow-placement | Чтение |
| gfloat | arrow-scaling | Чтение |
| gboolean | double-arrows | Чтение |
| gint | horizontal-offset | Чтение |
| gint | horizontal-padding | Чтение |
| gint | vertical-offset | Чтение |
| gint | 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>
Описание
Объект 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, и есть два дочерних узла с именем стрелка, для стрелок прокрутки меню. Эти дочерние узлы получают классы стилей .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 | объект GMenuModel |
Возвращает
новое меню GtkMenu
С версии: 3.4
gtk_menu_set_screen ()
void gtk_menu_set_screen (GtkMenu *menu,GdkScreen *screen);
Устанавливает GdkScreen, на котором будет отображаться меню.
Параметры
С версии: 2.2
gtk_menu_reorder_child ()
void gtk_menu_reorder_child (GtkMenu *menu,GtkWidget *child,gint position);
Перемещает child в новое position в списке menu дочерних элементов.
Параметры
menu | объект GtkMenu | |
child | пункт меню GtkMenuItem для перемещения | |
position | новая позиция для размещения |
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 | объект GtkMenu | |
child | объект 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 | меню GtkMenu для отображения | |
rect_window | GdkWindow, относительно которого | [не допускается NULL] |
rect | GdkRectangle, для выравнивания с | [не допускается NULL] |
rect_anchor | точка на | |
menu_anchor | точка на | |
trigger_event | GdkEvent, который инициировал этот запрос, или | [допускается NULL] |
С: 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 для выравнивания с | [не допускается NULL] |
widget_anchor | точка на | |
menu_anchor | точка на | |
trigger_event | GdkEvent, который инициировал этот запрос, или | [допускается 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”, чтобы узнать, как он был фактически расположен.
Параметры
С: 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 | ||
device | [allow-none] | |
parent_menu_shell | оболочка меню, содержащая элемент меню, вызвавший всплывающее меню, или | [allow-none] |
parent_menu_item | элемент меню, чья активация вызвала всплывающее меню, или | [allow-none] |
func | пользовательская функция позиционирования меню, или | [allow-none] |
data | данные, предоставленные пользователем, передаваемые в | [allow-none] |
destroy | уведомление об удалении | [allow-none] |
button | нажатая кнопка мыши, вызвавшая событие | |
activate_time | время наступления события активации |
С: 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_`, которые не имеют этой проблемы.
Параметры
menu | a GtkMenu | |
parent_menu_shell | оболочка меню, содержащая пункт меню, вызвавший всплывающее меню, или | [allow-none] |
parent_menu_item | пункт меню, активация которого вызвала всплывающее меню, или | [allow-none] |
func | пользовательская функция, используемая для позиционирования меню, или | [scope async][allow-none] |
data | передаваемые пользователю данные, которые будут переданы в | |
button | кнопка мыши, которая была нажата для инициирования события. | |
activate_time | время, в которое произошло событие активации. |
gtk_menu_set_accel_group ()
void gtk_menu_set_accel_group (GtkMenu *menu,GtkAccelGroup *accel_group);
Устанавливает GtkAccelGroup, содержащий глобальные ускорители для меню. Эта группа ускорителей также должна быть добавлена ко всем окнам, в которых используется это меню, с помощью gtk_window_add_accel_group(), чтобы эти окна поддерживали все ускорители, содержащиеся в этой группе.
Параметры
menu | a GtkMenu | |
accel_group | GtkAccelGroup который нужно связать с меню. | [allow-none] |
gtk_menu_get_accel_group ()
GtkAccelGroup *
gtk_menu_get_accel_group (GtkMenu *menu); Возвращает GtkAccelGroup, содержащий глобальные ускорители для меню. См. gtk_menu_set_accel_group().
Параметры
menu | a GtkMenu |
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, "<Gnumeric-Sheet>/File"); получит для своих элементов пути ускорителей: "<Gnumeric-Sheet>/File/New" и "<Gnumeric-Sheet>/File/Exit".
Назначение путей ускорителей пунктам меню позволяет пользователю изменять их ускорители во время выполнения. Более подробную информацию о путях ускорителей и их настройках по умолчанию можно найти в gtk_accel_map_add_entry().
Обратите внимание, что строка accel_path будет храниться в GQuark. Поэтому, если вы передаёте статическую строку, вы можете сэкономить некоторое количество памяти, предварительно интернировав её с помощью g_intern_static_string().
Параметры
menu | допустимое GtkMenu | |
accel_path | допустимый путь ускорителя. | [allow-none] |
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 | строка, содержащая заголовок меню |
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_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); Возвращает, резервирует ли меню место для переключателей и значков, независимо от их фактического присутствия.
Параметры
menu | a GtkMenu |
Возвращаемое значение
Резервируется ли место для переключателей
С: 2.18
gtk_menu_popdown ()
void
gtk_menu_popdown (GtkMenu *menu); Удаляет меню с экрана.
Параметры
menu | a GtkMenu |
gtk_menu_reposition ()
void
gtk_menu_reposition (GtkMenu *menu); Перемещает меню в соответствии с его функцией позиционирования.
Параметры
menu | a GtkMenu |
gtk_menu_get_active ()
GtkWidget *
gtk_menu_get_active (GtkMenu *menu); Возвращает выбранный пункт меню из меню. Это используется GtkComboBox.
Параметры
menu | a GtkMenu |
Возвращаемое значение
GtkMenuItem который был последним выбран в меню. Если выбор ещё не сделан, выбирается первый пункт меню.
[transfer none]
gtk_menu_set_active ()
void gtk_menu_set_active (GtkMenu *menu,guint index);
Выбирает указанный пункт меню в меню. Это используется GtkComboBox и не должно использоваться другими.
Параметры
menu | a GtkMenu | |
index | индекс пункта меню для выбора. Значения индексов от 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 и не должно использоваться в новом коде.
Изменяет состояние отсоединения меню. Меню обычно отображается как выпадающее меню, которое сохраняется до тех пор, пока активен меню. Его также можно отобразить как отсоединяющееся меню, которое сохраняется до тех пор, пока не будет закрыто или повторно прикреплено.
gtk_menu_attach_to_widget ()
void gtk_menu_attach_to_widget (GtkMenu *menu,GtkWidget *attach_widget,GtkMenuDetachFunc detacher);
Прикрепляет меню к виджету и предоставляет функцию обратного вызова, которая будет вызвана, когда меню вызовет gtk_menu_detach() во время своего уничтожения.
Если меню прикреплено к виджету, оно будет уничтожено при уничтожении виджета, как если бы это был дочерний виджет. Прикреплённое меню также будет корректно перемещаться между экранами, если виджет перемещается между экранами.
Параметры
menu | a GtkMenu | |
attach_widget | виджет GtkWidget, к которому будет прикреплено меню | |
detacher | переданная пользователем функция обратного вызова, которая будет вызвана, когда меню вызовет | [scope async][allow-none] |
gtk_menu_detach ()
void
gtk_menu_detach (GtkMenu *menu); Отсоединяет меню от виджета, к которому оно было прикреплено. Эта функция вызовет функцию обратного вызова, detacher , предоставленную при вызове функции gtk_menu_attach_to_widget().
Параметры
menu | a GtkMenu |
gtk_menu_get_attach_widget ()
GtkWidget *
gtk_menu_get_attach_widget (GtkMenu *menu); Возвращает GtkWidget, к которому прикреплено меню.
Параметры
menu | a GtkMenu |
gtk_menu_get_for_attach_widget ()
GList *
gtk_menu_get_for_attach_widget (GtkWidget *widget); Возвращает список меню, прикреплённых к данному виджету. Этот список принадлежит GTK+ и его нельзя изменять.
Параметры
widget |
Возвращаемое значение
список меню, прикреплённых к данному виджету.
[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().
Параметры
menu | a GtkMenu. | |
x | указатель на gint, представляющий горизонтальную позицию, где должно быть нарисовано меню. | [inout] |
y | указатель на gint, представляющий вертикальную позицию, где должно быть нарисовано меню. Это параметр вывода. | [inout] |
push_in | Этот параметр управляет тем, как обрабатываются меню, расположенные за пределами монитора. Если он установлен в | [out] |
user_data | данные, переданные пользователем в параметре |
GtkMenuDetachFunc ()
void (*GtkMenuDetachFunc) (GtkWidget *attach_widget,GtkMenu *menu);
Пользовательская функция, переданная при вызове gtk_menu_attach_to_widget(), которая будет вызвана, когда меню позже будет отсоединено от виджета.
Типы и значения
struct GtkMenu
struct GtkMenu;
перечисление GtkArrowPlacement
Используется для указания расположения стрелок прокрутки в меню с прокруткой.
Члены
GTK_ARROWS_BOTH | Разместить одну стрелку на каждом конце меню. | |
GTK_ARROWS_START | Разместить обе стрелки в верхней части меню. | |
GTK_ARROWS_END | Разместить обе стрелки в нижней части меню. |
Подробное описание свойств
Свойство “accel-group”
“accel-group” GtkAccelGroup *
Группа акселераторов, содержащая акселераторы для меню.
Флаги: Чтение / Запись
С версии: 2.14
Свойство “accel-path”
“accel-path” gchar *
Путь акселератора, используемый для удобного построения путей акселераторов дочерних элементов.
Флаги: Чтение / Запись
Значение по умолчанию: NULL
С версии: 2.14
Свойство “active”
“active” gint
Индекс текущего выбранного пункта меню или -1, если ни один пункт не выбран.
Флаги: Чтение / Запись
Допустимые значения: >= -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”.
Флаги: Чтение / Запись / Конструирование
Значение по умолчанию: 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() напрямую.
Флаги: Чтение / Запись
С версии: 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”.
Флаги: Чтение / Запись / Конструирование
Значение по умолчанию: GDK_WINDOW_TYPE_HINT_POPUP_MENU
С версии: 3.22
Уровень стабильности: Нестабильный
Свойство “monitor”
“monitor” gint
Монитор, на котором будет открыто меню.
Флаги: Чтение / Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
С версии: 2.14
Свойство “rect-anchor-dx”
“rect-anchor-dx” gint
Горизонтальное смещение, применяемое к меню, т.е. якорю прямоугольника или виджета.
См. 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”.
Флаги: Чтение / Запись / Конструирование
Значение по умолчанию: 0
С версии: 3.22
Уровень стабильности: Нестабильный
Свойство “rect-anchor-dy”
“rect-anchor-dy” gint
Вертикальное смещение, применяемое к меню, т.е. якорю прямоугольника или виджета.
См. 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”.
Флаги: Чтение / Запись / Конструирование
Значение по умолчанию: 0
С версии: 3.22
Уровень стабильности: Нестабильный
Свойство “reserve-toggle-size”
“reserve-toggle-size” gboolean
Булево значение, указывающее, резервирует ли меню место для переключателей и значков, независимо от их фактического присутствия.
Это свойство следует изменять только от своего значения по умолчанию для специальных целей, таких как табличные меню. Обычные меню, подключённые к строке меню или контекстным меню, должны резервировать место для переключателей для согласованности.
Флаги: Чтение / Запись
Значение по умолчанию: TRUE
С момента: 2.18
Свойство “tearoff-state”
“tearoff-state” gboolean
Булево значение, указывающее, откреплено ли меню.
GtkMenu:tearoff-state устарело с версии 3.10 и не должно использоваться в новых кодах.
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С момента: 2.6
Свойство “tearoff-title”
“tearoff-title” gchar *
Заголовок, который может отображаться менеджером окон, когда это меню откреплено.
GtkMenu:tearoff-title устарело с версии 3.10 и не должно использоваться в новых кодах.
Флаги: Чтение / Запись
Значение по умолчанию: NULL
Подробное описание свойств дочерних элементов
Свойство дочернего элемента “bottom-attach”
“bottom-attach” gint
Номер строки, к которой необходимо прикрепить нижнюю часть дочернего элемента.
Флаги: Чтение / Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
Свойство дочернего элемента “left-attach”
“left-attach” gint
Номер столбца, к которому необходимо прикрепить левую часть дочернего элемента.
Флаги: Чтение / Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
Свойство дочернего элемента “right-attach”
“right-attach” gint
Номер столбца, к которому необходимо прикрепить правую часть дочернего элемента.
Флаги: Чтение / Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
Свойство дочернего элемента “top-attach”
“top-attach” gint
Номер строки, к которой необходимо прикрепить верхнюю часть дочернего элемента.
Флаги: Чтение / Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
Подробное описание свойств стиля
Свойство стиля “arrow-placement”
“arrow-placement” GtkArrowPlacement
Указывает, где должны быть размещены стрелки прокрутки.
GtkMenu:arrow-placement устарело с версии 3.20 и не должно использоваться в новых кодах.
значение этого свойства стиля игнорируется.
Флаги: Чтение
Значение по умолчанию: GTK_ARROWS_BOTH
С момента: 2.16
Свойство стиля “arrow-scaling”
“arrow-scaling” gfloat
Произвольная константа для уменьшения размера стрелки прокрутки.
GtkMenu:arrow-scaling устарело с версии 3.20 и не должно использоваться в новых кодах.
используйте стандартные свойства min-width/min-height CSS для узла стрелки; значение этого свойства стиля игнорируется.
Флаги: Чтение
Допустимые значения: [0,1]
Значение по умолчанию: 0.7
С момента: 2.16
Свойство стиля “double-arrows”
“double-arrows” gboolean
Когда TRUE, обе стрелки отображаются при прокрутке.
GtkMenu:double-arrows устарело с версии 3.20 и не должно использоваться в новых кодах.
значение этого свойства стиля игнорируется.
Флаги: Чтение
Значение по умолчанию: TRUE
Свойство стиля “horizontal-offset”
“horizontal-offset” gint
Если меню является подменю, позиционируйте его на это количество пикселей смещения по горизонтали.
Флаги: Чтение
Значение по умолчанию: -2
Свойство стиля “horizontal-padding”
“horizontal-padding” gint
Дополнительное пространство по левому и правому краям меню.
GtkMenu:horizontal-padding устарело с версии 3.8 и не должно использоваться в новых кодах.
используйте стандартное свойство отступа CSS (через объекты, такие как GtkStyleContext и GtkCssProvider); значение этого свойства стиля игнорируется.
Флаги: Чтение
Допустимые значения: >= 0
Значение по умолчанию: 0
Свойство стиля “vertical-offset”
“vertical-offset” gint
Если меню является подменю, позиционируйте его на это количество пикселей смещения по вертикали.
Флаги: Чтение
Значение по умолчанию: 0
Свойство стиля “vertical-padding”
“vertical-padding” gint
Дополнительное пространство по верхнему и нижнему краям меню.
GtkMenu:vertical-padding устарело с версии 3.8 и не должно использоваться в новых кодах.
используйте стандартное свойство отступа CSS (через объекты, такие как GtkStyleContext и GtkCssProvider); значение этого свойства стиля игнорируется.
Флаги: Чтение
Допустимые значения: >= 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 | позиция | [nullable] |
final_rect | окончательная позиция | [nullable] |
flipped_x |
| |
flipped_y |
| |
данные_пользователя | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Запуск первым
С версии: 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.22/GtkMenu.html