Menús emergentes

Normalmente, simplemente se añaden los Menus a la ventana, pero también pueden mostrarse temporalmente como resultado de una pulsación del botón del ratón. Por ejemplo, se puede mostrar un menú contextual cuando el usuario pulsa el botón derecho de su ratón.

La distribución de la IU para un menú emergente debe usar el nodo popup. Por ejemplo:

Glib::ustring ui_info =
    "<ui>"
    "  <popup name='PopupMenu'>"
    "    <menuitem action='ContextEdit'/>"
    "    <menuitem action='ContextProcess'/>"
    "    <menuitem action='ContextRemove'/>"
    "  </popup>"
    "</ui>";

m_refUIManager->add_ui_from_string(ui_info);

Para mostrar el menú contextual, use el método popup() del Gtk::Menu, proporcionándole el identificador del botón y el tiempo de activación, como los proporciona la señal button_press_event que, de todos modos, deberá manejar. Por ejemplo:

bool ExampleWindow::on_button_press_event(GdkEventButton* event)
{
  if( (event->type == GDK_BUTTON_PRESS) &&
      (event->button == 3) )
  {
    m_Menu_Popup->popup(event->button, event->time);
    return true; //It has been handled.
  }
  else
    return false;
}