## GtkMenuToolButton

GtkMenuToolButton — A GtkToolItem containing a button with an additional dropdown menu

## Synopsis

    #include <gtk/gtk.h>

    struct              GtkMenuToolButton;
    GtkToolItem *       gtk_menu_tool_button_new            (GtkWidget *icon_widget,
                                                             const gchar *label);
    GtkToolItem *       gtk_menu_tool_button_new_from_stock (const gchar *stock_id);
    void                gtk_menu_tool_button_set_menu       (GtkMenuToolButton *button,
                                                             GtkWidget *menu);
    GtkWidget *         gtk_menu_tool_button_get_menu       (GtkMenuToolButton *button);
    void                gtk_menu_tool_button_set_arrow_tooltip_text
                                                            (GtkMenuToolButton *button,
                                                             const gchar *text);
    void                gtk_menu_tool_button_set_arrow_tooltip_markup
                                                            (GtkMenuToolButton *button,
                                                             const gchar *markup);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----GtkWidget
                   +----GtkContainer
                         +----GtkBin
                               +----GtkToolItem
                                     +----GtkToolButton
                                           +----GtkMenuToolButton

## Implemented Interfaces

GtkMenuToolButton implements AtkImplementorIface, GtkBuildable, GtkActivatable and GtkActionable.

## Properties

      "menu"                     GtkMenu*              : Read / Write

## Signals

      "show-menu"                                      : Run First

## Description

A GtkMenuToolButton is a GtkToolItem that contains a button and a small additional button with an arrow. When clicked, the arrow button pops up a dropdown menu.

Use `gtk_menu_tool_button_new()` to create a new GtkMenuToolButton. Use `gtk_menu_tool_button_new_from_stock()` to create a new GtkMenuToolButton containing a stock item.

### GtkMenuToolButton as GtkBuildable

The GtkMenuToolButton implementation of the GtkBuildable interface supports adding a menu by specifying "menu" as the "type" attribute of a <child> element.

Example 80. A UI definition fragment with menus

    1
    2
    3
    4
    5

    <object class="GtkMenuToolButton">
      <child type="menu">
        <object class="GtkMenu"/>
      </child>
    </object>

## Details

### struct GtkMenuToolButton

    struct GtkMenuToolButton;

### gtk_menu_tool_button_new ()

    GtkToolItem *       gtk_menu_tool_button_new            (GtkWidget *icon_widget,
                                                             const gchar *label);

Creates a new GtkMenuToolButton using `icon_widget` as icon and `label` as label.

`icon_widget` : | a widget that will be used as icon widget, or `NULL`. [allow-none]
`label` : | a string that will be used as label, or `NULL`. [allow-none]
Returns : | the new GtkMenuToolButton

Since 2.6

### gtk_menu_tool_button_new_from_stock ()

    GtkToolItem *       gtk_menu_tool_button_new_from_stock (const gchar *stock_id);

Creates a new GtkMenuToolButton. The new GtkMenuToolButton will contain an icon and label from the stock item indicated by `stock_id`.

`stock_id` : | the name of a stock item
Returns : | the new GtkMenuToolButton

Since 2.6

### gtk_menu_tool_button_set_menu ()

    void                gtk_menu_tool_button_set_menu       (GtkMenuToolButton *button,
                                                             GtkWidget *menu);

Sets the GtkMenu that is popped up when the user clicks on the arrow. If `menu` is NULL, the arrow button becomes insensitive.

`button` : | a GtkMenuToolButton
`menu` : | the GtkMenu associated with GtkMenuToolButton

Since 2.6

### gtk_menu_tool_button_get_menu ()

    GtkWidget *         gtk_menu_tool_button_get_menu       (GtkMenuToolButton *button);

Gets the GtkMenu associated with GtkMenuToolButton.

`button` : | a GtkMenuToolButton
Returns : | the GtkMenu associated with GtkMenuToolButton. [transfer none]

Since 2.6

### gtk_menu_tool_button_set_arrow_tooltip_text ()

    void                gtk_menu_tool_button_set_arrow_tooltip_text
                                                            (GtkMenuToolButton *button,
                                                             const gchar *text);

Sets the tooltip text to be used as tooltip for the arrow button which pops up the menu. See `gtk_tool_item_set_tooltip_text()` for setting a tooltip on the whole GtkMenuToolButton.

`button` : | a GtkMenuToolButton
`text` : | text to be used as tooltip text for button's arrow button

Since 2.12

### gtk_menu_tool_button_set_arrow_tooltip_markup ()

    void                gtk_menu_tool_button_set_arrow_tooltip_markup
                                                            (GtkMenuToolButton *button,
                                                             const gchar *markup);

Sets the tooltip markup text to be used as tooltip for the arrow button which pops up the menu. See `gtk_tool_item_set_tooltip_text()` for setting a tooltip on the whole GtkMenuToolButton.

`button` : | a GtkMenuToolButton
`markup` : | markup text to be used as tooltip text for button's arrow button

Since 2.12

## Property Details

### The `"menu"` property

      "menu"                     GtkMenu*              : Read / Write

The dropdown menu.

## Signal Details

### The `"show-menu"` signal

    void                user_function                      (GtkMenuToolButton *button,
                                                            gpointer           user_data)      : Run First

The ::show-menu signal is emitted before the menu is shown.

It can be used to populate the menu on demand, using `gtk_menu_tool_button_set_menu()`.

Note that even if you populate the menu dynamically in this way, you must set an empty menu on the GtkMenuToolButton beforehand, since the arrow is made insensitive if the menu is not set.

`button` : | the object on which the signal is emitted
`user_data` : | user data set when the signal handler was connected.

## See Also

GtkToolbar, GtkToolButton