Gtk.PopoverMenu
Description: Reference for Gtk.PopoverMenu

### Class

# GtkPopoverMenu

#### Description [src]

    final class Gtk.PopoverMenu : Gtk.Popover
      implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Native, Gtk.ShortcutManager {
      /* No available fields */
    }

`GtkPopoverMenu` is a subclass of `GtkPopover` that implements menu behavior.

`GtkPopoverMenu` treats its children like menus and allows switching between them. It can open submenus as traditional, nested submenus, or in a more touch-friendly sliding fashion. The property `GtkPopoverMenu:flags` controls this appearance.

`GtkPopoverMenu` is meant to be used primarily with menu models, using `gtk_popover_menu_new_from_model()`. If you need to put other widgets such as a `GtkSpinButton` or a `GtkSwitch` into a popover, you can use `gtk_popover_menu_add_child()`.

For more dialog-like behavior, use a plain `GtkPopover`.

## Menu models

The XML format understood by `GtkBuilder` for `GMenuModel` consists of a toplevel `<menu>` element, which contains one or more `<item>` elements. Each `<item>` element contains `<attribute>` and `<link>` elements with a mandatory name attribute. `<link>` elements have the same content model as `<menu>`. Instead of `<link name="submenu">` or `<link name="section">`, you can use `<submenu>` or `<section>` elements.

    <menu id='app-menu'>
      <section>
        <item>
          <attribute name='label' translatable='yes'>_New Window</attribute>
          <attribute name='action'>app.new</attribute>
        </item>
        <item>
          <attribute name='label' translatable='yes'>_About Sunny</attribute>
          <attribute name='action'>app.about</attribute>
        </item>
        <item>
          <attribute name='label' translatable='yes'>_Quit</attribute>
          <attribute name='action'>app.quit</attribute>
        </item>
      </section>
    </menu>

Attribute values can be translated using gettext, like other `GtkBuilder` content. `<attribute>` elements can be marked for translation with a `translatable="yes"` attribute. It is also possible to specify message context and translator comments, using the context and comments attributes. To make use of this, the `GtkBuilder` must have been given the gettext domain to use.

The following attributes are used when constructing menu items:

- “label”: a user-visible string to display
- “use-markup”: whether the text in the menu item includes Pango markup
- “action”: the prefixed name of the action to trigger
- “target”: the parameter to use when activating the action
- “icon” and “verb-icon”: names of icons that may be displayed
- “submenu-action”: name of an action that may be used to track whether a submenu is open
- “hidden-when”: a string used to determine when the item will be hidden. Possible values include “action-disabled”, “action-missing”, “macos-menubar”. This is mainly useful for exported menus, see `gtk_application_set_menubar()`.
- “custom”: a string used to match against the ID of a custom child added with `gtk_popover_menu_add_child()`, `gtk_popover_menu_bar_add_child()`, or in the ui file with `<child type="ID">`.

The following attributes are used when constructing sections:

- “label”: a user-visible string to use as section heading
- “display-hint”: a string used to determine special formatting for the section. Possible values include “horizontal-buttons”, “circular-buttons” and “inline-buttons”. They all indicate that section should be displayed as a horizontal row of buttons.
- “text-direction”: a string used to determine the `GtkTextDirection` to use when “display-hint” is set to “horizontal-buttons”. Possible values include “rtl”, “ltr”, and “none”.

The following attributes are used when constructing submenus:

- “label”: a user-visible string to display
- “icon”: icon name to display

Menu items will also show accelerators, which are usually associated with actions via `gtk_application_set_accels_for_action()`, `gtk_widget_class_add_binding_action()` or `gtk_shortcut_controller_add_shortcut()`.

# Shortcuts and Gestures

`GtkPopoverMenu` supports the following keyboard shortcuts:

- `Space` activates the default widget.

# CSS Nodes

`GtkPopoverMenu` is just a subclass of `GtkPopover` that adds custom content to it, therefore it has the same CSS nodes. It is one of the cases that add a `.menu` style class to the main `popover` node.

Menu items have nodes with name `button` and class `.model`. If a section display-hint is set, the section gets a node `box` with class `horizontal` plus a class with the same text as the display hint. Note that said box may not be the direct ancestor of the item `button`s. Thus, for example, to style items in an `inline-buttons` section, select `.inline-buttons button.model`. Other things that may be of interest to style in menus include `label` nodes.

# Accessibility

`GtkPopoverMenu` uses the `GTK_ACCESSIBLE_ROLE_MENU` role, and its items use the `GTK_ACCESSIBLE_ROLE_MENU_ITEM`, `GTK_ACCESSIBLE_ROLE_MENU_ITEM_CHECKBOX` or `GTK_ACCESSIBLE_ROLE_MENU_ITEM_RADIO` roles, depending on the action they are connected to.

#### Hierarchy

#### Ancestors

- GtkPopover
- GtkWidget
- GInitiallyUnowned
- GObject

#### Implements

- GtkAccessible
- GtkBuildable
- GtkConstraintTarget
- GtkNative
- GtkShortcutManager

#### Constructors

###### gtk_popover_menu_new_from_model

Creates a `GtkPopoverMenu` and populates it according to `model`.

###### gtk_popover_menu_new_from_model_full

Creates a `GtkPopoverMenu` and populates it according to `model`.

#### Instance methods

###### gtk_popover_menu_add_child

Adds a custom widget to a generated menu.

###### gtk_popover_menu_get_flags

Returns the flags that `popover` uses to create/display a menu from its model.

since: 4.14

###### gtk_popover_menu_get_menu_model

Returns the menu model used to populate the popover.

###### gtk_popover_menu_remove_child

Removes a widget that has previously been added with [method@Gtk.PopoverMenu.add_child()].

###### gtk_popover_menu_set_flags

Sets the flags that `popover` uses to create/display a menu from its model.

since: 4.14

###### gtk_popover_menu_set_menu_model

Sets a new menu model on `popover`.

##### Methods inherited from GtkPopover (20)

###### gtk_popover_get_autohide

Returns whether the popover is modal.

###### gtk_popover_get_cascade_popdown

Returns whether the popover will close after a modal child is closed.

###### gtk_popover_get_child

Gets the child widget of `popover`.

###### gtk_popover_get_has_arrow

Gets whether this popover is showing an arrow pointing at the widget that it is relative to.

###### gtk_popover_get_mnemonics_visible

Gets whether mnemonics are visible.

###### gtk_popover_get_offset

Gets the offset previous set with [method@Gtk.Popover.set_offset()].

###### gtk_popover_get_pointing_to

Gets the rectangle that the popover points to.

###### gtk_popover_get_position

Returns the preferred position of `popover`.

###### gtk_popover_popdown

Pops `popover` down.

###### gtk_popover_popup

Pops `popover` up.

###### gtk_popover_present

Allocate a size for the `GtkPopover`.

###### gtk_popover_set_autohide

Sets whether `popover` is modal.

###### gtk_popover_set_cascade_popdown

If `cascade_popdown` is `TRUE`, the popover will be closed when a child modal popover is closed.

###### gtk_popover_set_child

Sets the child widget of `popover`.

###### gtk_popover_set_default_widget

Sets the default widget of a `GtkPopover`.

###### gtk_popover_set_has_arrow

Sets whether this popover should draw an arrow pointing at the widget it is relative to.

###### gtk_popover_set_mnemonics_visible

Sets whether mnemonics should be visible.

###### gtk_popover_set_offset

Sets the offset to use when calculating the position of the popover.

###### gtk_popover_set_pointing_to

Sets the rectangle that `popover` points to.

###### gtk_popover_set_position

Sets the preferred position for `popover` to appear.

##### Methods inherited from GtkWidget (162)

Please see GtkWidget for a full list of methods.

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

##### Methods inherited from GtkAccessible (19)

###### gtk_accessible_announce

Requests the user’s screen reader to announce the given message.

since: 4.14

###### gtk_accessible_get_accessible_parent

Retrieves the accessible parent for an accessible object.

since: 4.10

###### gtk_accessible_get_accessible_role

Retrieves the accessible role of an accessible object.

###### gtk_accessible_get_at_context

Retrieves the accessible implementation for the given `GtkAccessible`.

since: 4.10

###### gtk_accessible_get_bounds

Queries the coordinates and dimensions of this accessible.

since: 4.10

###### gtk_accessible_get_first_accessible_child

Retrieves the first accessible child of an accessible object.

since: 4.10

###### gtk_accessible_get_next_accessible_sibling

Retrieves the next accessible sibling of an accessible object.

since: 4.10

###### gtk_accessible_get_platform_state

Query a platform state, such as focus.

since: 4.10

###### gtk_accessible_reset_property

Resets the accessible `property` to its default value.

###### gtk_accessible_reset_relation

Resets the accessible `relation` to its default value.

###### gtk_accessible_reset_state

Resets the accessible `state` to its default value.

###### gtk_accessible_set_accessible_parent

Sets the parent and sibling of an accessible object.

since: 4.10

###### gtk_accessible_update_next_accessible_sibling

Updates the next accessible sibling of `self`.

since: 4.10

###### gtk_accessible_update_property

Updates a list of accessible properties.

###### gtk_accessible_update_property_value

Updates an array of accessible properties.

###### gtk_accessible_update_relation

Updates a list of accessible relations.

###### gtk_accessible_update_relation_value

Updates an array of accessible relations.

###### gtk_accessible_update_state

Updates a list of accessible states. See the `GtkAccessibleState` documentation for the value types of accessible states.

###### gtk_accessible_update_state_value

Updates an array of accessible states.

##### Methods inherited from GtkBuildable (1)

###### gtk_buildable_get_buildable_id

Gets the ID of the `buildable` object.

##### Methods inherited from GtkNative (5)

###### gtk_native_get_renderer

Returns the renderer that is used for this `GtkNative`.

###### gtk_native_get_surface

Returns the surface of this `GtkNative`.

###### gtk_native_get_surface_transform

Retrieves the surface transform of `self`.

###### gtk_native_realize

Realizes a `GtkNative`.

###### gtk_native_unrealize

Unrealizes a `GtkNative`.

#### Properties

###### Gtk.PopoverMenu:flags

The flags that `popover` uses to create/display a menu from its model.

since: 4.14

###### Gtk.PopoverMenu:menu-model

The model from which the menu is made.

###### Gtk.PopoverMenu:visible-submenu

The name of the visible submenu.

##### Properties inherited from GtkPopover (8)

###### Gtk.Popover:autohide

Whether to dismiss the popover on outside clicks.

###### Gtk.Popover:cascade-popdown

Whether the popover pops down after a child popover.

###### Gtk.Popover:child

The child widget.

###### Gtk.Popover:default-widget

The default widget inside the popover.

###### Gtk.Popover:has-arrow

Whether to draw an arrow.

###### Gtk.Popover:mnemonics-visible

Whether mnemonics are currently visible in this popover.

###### Gtk.Popover:pointing-to

Rectangle in the parent widget that the popover points to.

###### Gtk.Popover:position

How to place the popover, relative to its parent.

##### Properties inherited from GtkWidget (34)

###### Gtk.Widget:can-focus

Whether the widget or any of its descendents can accept the input focus.

###### Gtk.Widget:can-target

Whether the widget can receive pointer events.

###### Gtk.Widget:css-classes

A list of css classes applied to this widget.

###### Gtk.Widget:css-name

The name of this widget in the CSS tree.

###### Gtk.Widget:cursor

The cursor used by `widget`.

###### Gtk.Widget:focus-on-click

Whether the widget should grab focus when it is clicked with the mouse.

###### Gtk.Widget:focusable

Whether this widget itself will accept the input focus.

###### Gtk.Widget:halign

How to distribute horizontal space if widget gets extra space.

###### Gtk.Widget:has-default

Whether the widget is the default widget.

###### Gtk.Widget:has-focus

Whether the widget has the input focus.

###### Gtk.Widget:has-tooltip

Enables or disables the emission of the ::query-tooltip signal on `widget`.

###### Gtk.Widget:height-request

Override for height request of the widget.

###### Gtk.Widget:hexpand

Whether to expand horizontally.

###### Gtk.Widget:hexpand-set

Whether to use the `hexpand` property.

###### Gtk.Widget:layout-manager

The `GtkLayoutManager` instance to use to compute the preferred size of the widget, and allocate its children.

###### Gtk.Widget:margin-bottom

Margin on bottom side of widget.

###### Gtk.Widget:margin-end

Margin on end of widget, horizontally.

###### Gtk.Widget:margin-start

Margin on start of widget, horizontally.

###### Gtk.Widget:margin-top

Margin on top side of widget.

###### Gtk.Widget:name

The name of the widget.

###### Gtk.Widget:opacity

The requested opacity of the widget.

###### Gtk.Widget:overflow

How content outside the widget’s content area is treated.

###### Gtk.Widget:parent

The parent widget of this widget.

###### Gtk.Widget:receives-default

Whether the widget will receive the default action when it is focused.

###### Gtk.Widget:root

The `GtkRoot` widget of the widget tree containing this widget.

###### Gtk.Widget:scale-factor

The scale factor of the widget.

###### Gtk.Widget:sensitive

Whether the widget responds to input.

###### Gtk.Widget:tooltip-markup

Sets the text of tooltip to be the given string, which is marked up with Pango markup.

###### Gtk.Widget:tooltip-text

Sets the text of tooltip to be the given string.

###### Gtk.Widget:valign

How to distribute vertical space if widget gets extra space.

###### Gtk.Widget:vexpand

Whether to expand vertically.

###### Gtk.Widget:vexpand-set

Whether to use the `vexpand` property.

###### Gtk.Widget:visible

Whether the widget is visible.

###### Gtk.Widget:width-request

Override for width request of the widget.

##### Properties inherited from GtkAccessible (1)

###### GtkAccessible:accessible-role

The accessible role of the given `GtkAccessible` implementation.

#### Signals

##### Signals inherited from GtkPopover (2)

###### GtkPopover::activate-default

Emitted whend the user activates the default widget.

###### GtkPopover::closed

Emitted when the popover is closed.

##### Signals inherited from GtkWidget (13)

###### GtkWidget::destroy

Signals that all holders of a reference to the widget should release the reference that they hold.

###### GtkWidget::direction-changed

Emitted when the text direction of a widget changes.

###### GtkWidget::hide

Emitted when `widget` is hidden.

###### GtkWidget::keynav-failed

Emitted if keyboard navigation fails.

###### GtkWidget::map

Emitted when `widget` is going to be mapped.

###### GtkWidget::mnemonic-activate

Emitted when a widget is activated via a mnemonic.

###### GtkWidget::move-focus

Emitted when the focus is moved.

###### GtkWidget::query-tooltip

Emitted when the widget’s tooltip is about to be shown.

###### GtkWidget::realize

Emitted when `widget` is associated with a `GdkSurface`.

###### GtkWidget::show

Emitted when `widget` is shown.

###### GtkWidget::state-flags-changed

Emitted when the widget state changes.

###### GtkWidget::unmap

Emitted when `widget` is going to be unmapped.

###### GtkWidget::unrealize

Emitted when the `GdkSurface` associated with `widget` is destroyed.

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.