Spec-Zone.ru › GTK 3.22

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 ()
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 Чтение / Запись
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, на котором будет отображаться меню.

Параметры

menu

объект GtkMenu

screen

объект 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

объект GtkMenu

child

пункт меню 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

объект 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, относительно которого rect.

[не допускается NULL]

rect

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

[не допускается NULL]

rect_anchor

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

menu_anchor

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

trigger_event

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

[допускается 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 для выравнивания с 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, если это текущее событие.

[nullable]

С: 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

GtkMenu

device

GdkDevice.

[allow-none]

parent_menu_shell

оболочка меню, содержащая элемент меню, вызвавший всплывающее меню, или NULL.

[allow-none]

parent_menu_item

элемент меню, чья активация вызвала всплывающее меню, или NULL.

[allow-none]

func

пользовательская функция позиционирования меню, или NULL.

[allow-none]

data

данные, предоставленные пользователем, передаваемые в func.

[allow-none]

destroy

уведомление об удалении data .

[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

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

[allow-none]

parent_menu_item

пункт меню, активация которого вызвала всплывающее меню, или NULL.

[allow-none]

func

пользовательская функция, используемая для позиционирования меню, или NULL.

[scope async][allow-none]

data

передаваемые пользователю данные, которые будут переданы в func .

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

Возвращает

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, "<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 и не должно использоваться в новом коде.

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

Параметры

menu

a GtkMenu

torn_off

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

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

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

[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

Возвращаемое значение

виджет GtkWidget, к которому прикреплено меню.

[transfer none]

gtk_menu_get_for_attach_widget ()

GList *
gtk_menu_get_for_attach_widget (GtkWidget *widget);

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

Параметры

widget

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().

Параметры

menu

a GtkMenu.

x

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

[inout]

y

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

[inout]

push_in

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

[out]

user_data

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

GtkMenuDetachFunc ()

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

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

Параметры

attach_widget

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

menu

меню GtkMenu, которое отсоединяется.

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

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

позиция 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.22/GtkMenu.html

Spec-Zone.ru

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