Gtk.PopoverMenu
Description: Reference for Gtk.PopoverMenu

### Class

# GtkPopoverMenu

#### Description [src]

    final class Gtk.PopoverMenu : Gtk.Popover {
      /* 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.

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

# 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 popover’s main node.

# 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.

#### 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_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 `gtk_popover_menu_add_child()`.

###### 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 `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

Presents the popover to the user.

###### 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 (159)

###### gtk_widget_action_set_enabled

Enable or disable an action installed with `gtk_widget_class_install_action()`.

###### gtk_widget_activate

For widgets that can be “activated” (buttons, menu items, etc.), this function activates them.

###### gtk_widget_activate_action

Looks up the action in the action groups associated with `widget` and its ancestors, and activates it.

###### gtk_widget_activate_action_variant

Looks up the action in the action groups associated with `widget` and its ancestors, and activates it.

###### gtk_widget_activate_default

Activates the `default.activate` action from `widget`.

###### gtk_widget_add_controller

Adds `controller` to `widget` so that it will receive events.

###### gtk_widget_add_css_class

Adds a style class to `widget`.

###### gtk_widget_add_mnemonic_label

Adds a widget to the list of mnemonic labels for this widget.

###### gtk_widget_add_tick_callback

Queues an animation frame update and adds a callback to be called before each frame.

###### gtk_widget_allocate

This function is only used by `GtkWidget` subclasses, to assign a size, position and (optionally) baseline to their child widgets.

###### gtk_widget_child_focus

Called by widgets as the user moves around the window using keyboard shortcuts.

###### gtk_widget_compute_bounds

Computes the bounds for `widget` in the coordinate space of `target`.

###### gtk_widget_compute_expand

Computes whether a container should give this widget extra space when possible.

###### gtk_widget_compute_point

Translates the given `point` in `widget`‘s coordinates to coordinates relative to `target`’s coordinate system.

###### gtk_widget_compute_transform

Computes a matrix suitable to describe a transformation from `widget`‘s coordinate system into `target`‘s coordinate system.

###### gtk_widget_contains

Tests if the point at (`x`, `y`) is contained in `widget`.

###### gtk_widget_create_pango_context

Creates a new `PangoContext` with the appropriate font map, font options, font description, and base direction for drawing text for this widget.

###### gtk_widget_create_pango_layout

Creates a new `PangoLayout` with the appropriate font map, font description, and base direction for drawing text for this widget.

###### gtk_drag_check_threshold

Checks to see if a drag movement has passed the GTK drag threshold.

###### gtk_widget_error_bell

Notifies the user about an input-related error on this widget.

###### gtk_widget_get_allocated_baseline

Returns the baseline that has currently been allocated to `widget`.

###### gtk_widget_get_allocated_height

Returns the height that has currently been allocated to `widget`.

###### gtk_widget_get_allocated_width

Returns the width that has currently been allocated to `widget`.

##### Methods inherited from GtkAccessible (10)

###### gtk_accessible_get_accessible_role

Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.

###### 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_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: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)

###### Gtk.Accessible:accessible-role

The accessible role of the given `GtkAccessible` implementation.