<ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <linklocation="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
<summary>A GtkMenu is a GtkMenuShell that implements a drop down menu.</summary>
<remarks>
<para>
A <seecref="T:Gtk.Menu"/> is a <seecref="T:Gtk.MenuShell"/> that implements a drop down menu consisting of a list of <seecref="T:Gtk.MenuItem"/> objects which can be navigated and activated by the user to perform application functions.
</para>
<para>
It is commonly dropped down by activating a <seecref="T:Gtk.MenuItem"/> in a <seecref="T:Gtk.MenuBar"/> or in another <seecref="T:Gtk.Menu"/>, it can also be popped up by activating a <seecref="T:Gtk.OptionMenu"/>. Other composite widgets such as the <seecref="T:Gtk.Notebook"/> can pop up a <seecref="T:Gtk.Menu"/> as well.
<summary>Attaches the menu to the widget and provides a detacher.</summary>
<paramname="attach_widget">The <seecref="T:Gtk.Widget"/> that the menu will be attached to.</param>
<paramname="detacher">The user supplied callback function that will be called when the menu calls <seecref="M:Gtk.Menu.Detach"/>.</param>
<remarks>
<para>
Attaches the menu to the widget and provides a callback function that will be invoked when the menu calls <seecref="M:Gtk.Menu.Detach"/> during its destruction.
<summary>Displays a menu and makes it available for selection.</summary>
<paramname="parent_menu_shell">The menu shell containing the triggering menu item, or <seelangword="null"/>.</param>
<paramname="parent_menu_item">The menu item whose activation triggered the popup, or <seelangword="null"/>.</param>
<paramname="func">A user supplied function used to position the menu, or <seelangword="null"/>.</param>
<paramname="data">A user supplied data to be passed to func.</param>
<paramname="button">The mouse button which was pressed to initiate the event.</param>
<paramname="activate_time">The time at which the activation event occurred.</param>
<remarks>
<para>
Applications can use this function to display context-sensitive menus, and will typically supply <seelangword="null"/> for the <paramrefname="parent_menu_shell"/>, <paramrefname="parent_menu_item"/>, <paramrefname="func"/> and <paramrefname="data"/> parameters. The default menu positioning function will position the menu at the current mouse cursor position.
</para>
<para>
The <paramrefname="button"/> parameter should be the mouse button pressed to initiate the menu popup. If the menu popup was initiated by something other than a mouse button press, such as a mouse button release or a keypress, button should be zero(0).
</para>
<para>
The <paramrefname="activate_time"/> parameter should be the time stamp of the event that initiated the popup. If such an event is not available, use <seecref="P:Gtk.Application.CurrentEvent"/> instead.
<summary>Returns the selected menu item from the menu.</summary>
<returns>The <seecref="T:Gtk.MenuItem"/> that was last selected in the menu. If a selection has not yet been made, the first menu item is selected.</returns>
<remarks>
<para>
This is used by the <seecref="T:Gtk.OptionMenu"/>.
The main purpose of this function is to spare the programmer the inconvenience of having to call <seecref="P:Gtk.MenuItem.AccelPath"/> on each menu item that should support runtime user changable accelerators. Instead, by just calling <seecref="P:Gtk.MenuItem.AccelPath"/> on their parent, each menu item of this menu, that contains a label describing its purpose, automatically gets an accel path assigned.
<summary>Sets or obtains the tearoff state of the menu.</summary>
<paramname="value">If <seelangword="true"/>, menu is displayed as a tearoff menu.</param>
<returns>Returns <seelangword="true"/> if the menu is currently torn off.</returns>
<remarks>
<para>
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.
<summary>Sets or obtains the <seecref="T:Gtk.AccelGroup"/> which holds global accelerators for the menu.</summary>
<paramname="value">The <seecref="T:Gtk.AccelGroup"/> to be associated with the menu.</param>
<returns>The <seecref="T:Gtk.AccelGroup"/> associated with the menu.</returns>
<remarks>
<para>
This accelerator group needs to also be added to all windows that this menu is being used in with <seecref="M:Gtk.Window.AddAccelGroup"/>, in order for those windows to support all the accelerators contained in this group.
<summary>Sets or obtains the title for the menu.</summary>
<paramname="value">A string containing the title for the menu.</param>
<returns>The title of the menu, or <seelangword="null"/> if the menu has no title set on it. This string is owned by the widget and should not be modified or freed.</returns>
<remarks>
<para>
The title is displayed when the menu is shown as a tearoff menu.
<MemberSignatureLanguage="C#"Value="protected Menu (GLib.Type gtype);"/>
<MemberType>Constructor</MemberType>
<ReturnValue/>
<Parameters>
<ParameterName="gtype"Type="GLib.Type"/>
</Parameters>
<Docs>
<summary>Internal constructor</summary>
<paramname="gtype">GLib type for the type</param>
<returns>Creates a new instance of Menu, using the GLib-provided type</returns>
<remarks>
<para>This is a constructor used by derivative types of <seecref="T:Gtk.Menu"/> that would have their own GLib type assigned to it. This is not typically used by C# code.</para>