Description
A GtkMenu is a GtkMenuShell that implements a drop down menu consisting of
a list of GtkMenuItem objects which can be navigated and activated by the
user to perform application functions.
A GtkMenu is most commonly dropped down by activating a GtkMenuItem in a
GtkMenuBar or popped up by activating a GtkMenuItem in another GtkMenu.
A GtkMenu can also be popped up by activating a GtkOptionMenu.
Other composite widgets such as the GtkNotebook can pop up a GtkMenu
as well.
Applications can display a GtkMenu as a popup menu by calling the
gtk_menu_popup() function. The example below shows how an application
can pop up a menu when the 3rd mouse button is pressed.
Example 1. Connecting the popup signal handler.
/* connect our handler which will popup the menu */
gtk_signal_connect_object(GTK_OBJECT(window), "button_press_event",
GTK_SIGNAL_FUNC (my_popup_handler), GTK_OBJECT(menu)); |
Example 2. Signal handler which displays a popup menu.
static gint
my_popup_handler(GtkWidget *widget, GdkEvent *event)
{
GtkMenu *menu;
GdkEventButton *event_button;
g_return_val_if_fail (widget != NULL, FALSE);
g_return_val_if_fail (GTK_IS_MENU (widget), FALSE);
g_return_val_if_fail (event != NULL, FALSE);
/* The "widget" is the menu that was supplied when
* gtk_signal_connect_object was called.
*/
menu = GTK_MENU (widget);
if (event->type == GDK_BUTTON_PRESS)
{
event_button = (GdkEventButton *) event;
if (event_button->button == 3)
{
gtk_menu_popup (menu, NULL, NULL, NULL, NULL,
event_button->button, event_button->time);
return TRUE;
}
}
return FALSE;
} |
Details
struct GtkMenu
The GtkMenu struct contains private data only, and
should be accessed using the functions below.
gtk_menu_new ()
Creates a new GtkMenu.
gtk_menu_append ()
Adds a new GtkMenuItem to the end of the menu's item list.
gtk_menu_prepend ()
Adds a new GtkMenuItem to the beginning of the menu's item list.
gtk_menu_insert ()
Adds a new GtkMenuItem to the menu's item list at the position
indicated by position.
gtk_menu_popup ()
Displays a menu and makes it available for selection. Applications can use
this function to display context-sensitive menus, and will typically supply
NULL for the parent_menu_shell, parent_menu_item, func and data
parameters. The default menu positioning function will position the menu
at the current pointer position.
gtk_menu_set_accel_group ()
Set the GtkAccelGroup which holds global accelerators for the menu.
gtk_menu_set_title ()
void gtk_menu_set_title (GtkMenu *menu,
const gchar *title); |
Sets the title string for the menu. The title is displayed when the menu
is shown as a tearoff menu.
gtk_menu_popdown ()
void gtk_menu_popdown (GtkMenu *menu); |
Removes the menu from the screen.
gtk_menu_reposition ()
void gtk_menu_reposition (GtkMenu *menu); |
Repositions the menu according to its position function.
gtk_menu_get_active ()
Returns the selected menu item from the menu. This is used by the
GtkOptionMenu.
gtk_menu_set_active ()
Selects the specified menu item within the menu. This is used by the
GtkOptionMenu.
gtk_menu_set_tearoff_state ()
Changes the tearoff state of the menu. A menu is normally displayed
as drop down menu which persists as long as the menu is active. It can
also be displayed as a tearoff menu which persists until it is closed
or reattached.
gtk_menu_attach_to_widget ()
Attaches the menu to the widget and provides a callback function that will
be invoked when the menu calls gtk_menu_detach() during its destruction.
gtk_menu_detach ()
void gtk_menu_detach (GtkMenu *menu); |
Detaches the menu from the widget to which it had been attached.
This function will call the callback function, detacher, provided
when the gtk_menu_attach_to_widget() function was called.
gtk_menu_get_attach_widget ()
Returns the GtkWidget that the menu is attached to.
GtkMenuPositionFunc ()
A user function supplied when calling gtk_menu_popup() which controls the
positioning of the menu when it is displayed. The function sets the x
and y parameters to the coordinates where the menu is to be drawn.
GtkMenuDetachFunc ()
A user function supplied when calling gtk_menu_attach_to_widget() which
will be called when the menu is later detached from the widget.