From d9259fc958ca3629a0ab8d9b2170639e84a8f533 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 26 Oct 2020 00:30:24 -0400 Subject: [PATCH] docs: Add GtkPopoverMenu to the widget gallery --- docs/reference/gtk/images/menu.png | Bin 0 -> 6760 bytes docs/reference/gtk/meson.build | 1 + docs/reference/gtk/visual_index.xml | 3 +- docs/tools/widgets.c | 64 ++++++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 docs/reference/gtk/images/menu.png diff --git a/docs/reference/gtk/images/menu.png b/docs/reference/gtk/images/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..d6096a5b8a02ff12cf2dd50c12596144bc7776ac GIT binary patch literal 6760 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 JBWw2V-v9yOKGOgI literal 0 HcmV?d00001 diff --git a/docs/reference/gtk/meson.build b/docs/reference/gtk/meson.build index 4ccd9c4e01..8b2a8115d3 100644 --- a/docs/reference/gtk/meson.build +++ b/docs/reference/gtk/meson.build @@ -327,6 +327,7 @@ images = [ 'images/lockbutton-sorry.png', 'images/lockbutton-unlocked.png', 'images/media-controls.png', + 'images/menu.png', 'images/menubar.png', 'images/menu-button.png', 'images/messagedialog.png', diff --git a/docs/reference/gtk/visual_index.xml b/docs/reference/gtk/visual_index.xml index 9c5e368c49..bac57788ab 100644 --- a/docs/reference/gtk/visual_index.xml +++ b/docs/reference/gtk/visual_index.xml @@ -24,7 +24,8 @@ - + + diff --git a/docs/tools/widgets.c b/docs/tools/widgets.c index 6a5ac3f18f..6500291b0a 100644 --- a/docs/tools/widgets.c +++ b/docs/tools/widgets.c @@ -1663,6 +1663,69 @@ create_popover (void) return info; } +static WidgetInfo * +create_menu (void) +{ + GtkWidget *widget; + GMenu *menu, *menu1; + GMenuItem *item; + GSimpleActionGroup *group; + GSimpleAction *action; + GtkEventController *controller; + GtkShortcut *shortcut; + + menu = g_menu_new (); + menu1 = g_menu_new (); + item = g_menu_item_new ("Item", "action"); + g_menu_append_item (menu1, item); + g_menu_append_submenu (menu, "Style", G_MENU_MODEL (menu1)); + g_object_unref (item); + g_object_unref (menu1); + item = g_menu_item_new ("Transition", "menu.transition"); + g_menu_append_item (menu, item); + g_object_unref (item); + + menu1 = g_menu_new (); + item = g_menu_item_new ("Inspector", "menu.inspector"); + g_menu_append_item (menu1, item); + g_object_unref (item); + item = g_menu_item_new ("About", "menu.about"); + g_menu_append_item (menu1, item); + g_object_unref (item); + g_menu_append_section (menu, NULL, G_MENU_MODEL (menu1)); + g_object_unref (menu1); + + widget = gtk_popover_menu_new_from_model (G_MENU_MODEL (menu)); + + g_object_unref (menu); + + group = g_simple_action_group_new (); + action = g_simple_action_new_stateful ("transition", NULL, g_variant_new_boolean (TRUE)); + g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (action)); + g_object_unref (action); + action = g_simple_action_new ("inspector", NULL); + g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (action)); + g_object_unref (action); + action = g_simple_action_new ("about", NULL); + g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (action)); + g_object_unref (action); + + gtk_widget_insert_action_group (widget, "menu", G_ACTION_GROUP (group)); + + g_object_unref (group); + + g_object_set (widget, "autohide", FALSE, NULL); + + controller = gtk_shortcut_controller_new (); + shortcut = gtk_shortcut_new (gtk_keyval_trigger_new (GDK_KEY_F1, 0), + gtk_named_action_new ("menu.about")); + gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), shortcut); + + gtk_widget_add_controller (widget, controller); + + return new_widget_info ("menu", widget, ASIS); +} + GList * get_all_widgets (void) { @@ -1734,6 +1797,7 @@ get_all_widgets (void) retval = g_list_prepend (retval, create_expander ()); retval = g_list_prepend (retval, create_menu_bar ()); retval = g_list_prepend (retval, create_popover ()); + retval = g_list_prepend (retval, create_menu ()); return retval; }