diff options
author | Bastien Nocera <hadess@hadess.net> | 2012-05-29 18:39:37 +0100 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2012-06-15 17:24:42 +0100 |
commit | 9fef2dc0d14ed35b4b95ceb492b10912a9bf5d2d (patch) | |
tree | 1bba9da686769f35858f0bc4b4cc9183434edf40 /tests/testmenubutton.c | |
parent | ffe1e31a2c3be64f0897e453c8600589a45c05c0 (diff) | |
download | gtk+-9fef2dc0d14ed35b4b95ceb492b10912a9bf5d2d.tar.gz |
gtkmenubutton: Add menu button widget
As used in Totem and gnome-contacts. The widget
takes either a GtkMenu or a GMenuModel to construct
its menu, and can be given a parent widget to use to
position the drop-down (as used in GtkMenuToolButton).
https://bugzilla.gnome.org/show_bug.cgi?id=668013
Diffstat (limited to 'tests/testmenubutton.c')
-rw-r--r-- | tests/testmenubutton.c | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/tests/testmenubutton.c b/tests/testmenubutton.c new file mode 100644 index 0000000000..cf48b2e5ec --- /dev/null +++ b/tests/testmenubutton.c @@ -0,0 +1,78 @@ +#include <gtk/gtk.h> +#include "prop-editor.h" + +int main (int argc, char **argv) +{ + GtkWidget *window; + GtkWidget *button; + GtkWidget *grid; + GtkWidget *entry; + GtkWidget *menu_widget; + guint i; + GMenu *menu; + + gtk_init (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_resize (GTK_WINDOW (window), 400, 300); + + grid = gtk_grid_new (); + gtk_container_add (GTK_CONTAINER (window), grid); + + /* Button next to entry */ + entry = gtk_entry_new (); + gtk_grid_attach (GTK_GRID (grid), + entry, + 0, 0, + 1, 1); + button = gtk_menu_button_new (); + gtk_grid_attach (GTK_GRID (grid), + button, + 1, 0, + 1, 1); + + /* Button with GtkMenu */ + menu_widget = gtk_menu_new (); + for (i = 5; i > 0; i--) { + GtkWidget *item; + char *label; + + label = g_strdup_printf ("Item %d", i); + item = gtk_menu_item_new_with_label (label); + g_free (label); + gtk_menu_attach (GTK_MENU (menu_widget), + item, + 0, 1, + i - 1, i); + } + gtk_widget_show_all (menu_widget); + + button = gtk_menu_button_new (); + gtk_menu_button_set_menu (GTK_MENU_BUTTON (button), menu_widget); + gtk_grid_attach (GTK_GRID (grid), + button, + 1, 1, + 1, 1); + gtk_widget_show (create_prop_editor (G_OBJECT (button), 0)); + + /* Button with GMenuModel */ + menu = g_menu_new (); + for (i = 5; i > 0; i--) { + char *label; + label = g_strdup_printf ("Item %d", i); + g_menu_insert (menu, i - 1, label, NULL); + g_free (label); + } + button = gtk_menu_button_new (); + gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), G_MENU_MODEL (menu)); + gtk_grid_attach (GTK_GRID (grid), + button, + 1, 2, + 1, 1); + + gtk_widget_show_all (window); + + gtk_main (); + + return 0; +} |