diff options
author | Matthias Clasen <mclasen@redhat.com> | 2004-08-04 20:32:26 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-08-04 20:32:26 +0000 |
commit | ea94ec3672b1016217f8dbbab14738bf7c6bb371 (patch) | |
tree | 5bf1bf34d6a65d2407dec0ffe9abce205dc2f35c /tests/testiconview.c | |
parent | 8a7fd5b04f2ff37ce7fefe85be87d2c96e0c95e9 (diff) | |
download | gtk+-ea94ec3672b1016217f8dbbab14738bf7c6bb371.tar.gz |
Add buttons to select and unselect all nodes, make the popup menu actually
2004-08-04 Matthias Clasen <mclasen@redhat.com>
* tests/testiconview.c: Add buttons to select and unselect all
nodes, make the popup menu actually work.
* gtk/gtkiconview.c: Make GTK_SELECTION_BROWSE work as intended,
let button 3 presses through to the app, to make popup menus
work.
Diffstat (limited to 'tests/testiconview.c')
-rw-r--r-- | tests/testiconview.c | 53 |
1 files changed, 44 insertions, 9 deletions
diff --git a/tests/testiconview.c b/tests/testiconview.c index 3f0240fd4b..0a8a3928d7 100644 --- a/tests/testiconview.c +++ b/tests/testiconview.c @@ -134,6 +134,17 @@ add_many (GtkWidget *button, GtkIconView *icon_list) } } +static void +select_all (GtkWidget *button, GtkIconView *icon_list) +{ + gtk_icon_view_select_all (icon_list); +} + +static void +unselect_all (GtkWidget *button, GtkIconView *icon_list) +{ + gtk_icon_view_unselect_all (icon_list); +} static void selection_changed (GtkIconView *icon_list) @@ -141,21 +152,32 @@ selection_changed (GtkIconView *icon_list) g_print ("Selection changed!\n"); } +typedef struct { + GtkIconView *icon_list; + GtkTreePath *path; +} ItemData; + +static void +free_item_data (ItemData *data) +{ + gtk_tree_path_free (data->path); + g_free (data); +} + static void -item_cb (GtkWidget *menuitem, - GtkTreePath *path, - GtkIconView *icon_list) +item_cb (GtkWidget *menuitem, + ItemData *data) { GtkTreeIter iter; GtkTreeModel *model; gchar *text; - model = gtk_icon_view_get_model (icon_list); + model = gtk_icon_view_get_model (data->icon_list); - gtk_tree_model_get_iter (model, &iter, path); + gtk_tree_model_get_iter (model, &iter, data->path); - gtk_tree_model_get (model, &iter, - 1, &text, -1); + gtk_tree_model_get (model, &iter, 1, &text, -1); g_print ("Item activated, text is %s\n", text); + g_free (text); } static void @@ -166,6 +188,7 @@ do_popup_menu (GtkWidget *icon_list, GtkWidget *menuitem; GtkTreePath *path; int button, event_time; + ItemData *data; path = gtk_icon_view_get_path_at_pos (GTK_ICON_VIEW (icon_list), event->x, event->y); @@ -176,10 +199,15 @@ do_popup_menu (GtkWidget *icon_list, menu = gtk_menu_new (); + data = g_new0 (ItemData, 1); + data->icon_list = GTK_ICON_VIEW (icon_list); + data->path = path; + g_object_set_data_full (G_OBJECT (menu), "item-path", data, free_item_data); + menuitem = gtk_menu_item_new_with_label ("Activate"); gtk_widget_show (menuitem); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); - g_signal_connect (menuitem, "activate", G_CALLBACK (item_cb), path); + g_signal_connect (menuitem, "activate", G_CALLBACK (item_cb), data); if (event) { @@ -194,7 +222,6 @@ do_popup_menu (GtkWidget *icon_list, gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, button, event_time); - gtk_tree_path_free (path); } @@ -280,6 +307,14 @@ main (gint argc, gchar **argv) button = gtk_button_new_with_label ("Remove selected"); g_signal_connect (button, "clicked", G_CALLBACK (foreach_selected_remove), icon_list); gtk_box_pack_start_defaults (GTK_BOX (bbox), button); + + button = gtk_button_new_with_label ("Select all"); + g_signal_connect (button, "clicked", G_CALLBACK (select_all), icon_list); + gtk_box_pack_start_defaults (GTK_BOX (bbox), button); + + button = gtk_button_new_with_label ("Unselect all"); + g_signal_connect (button, "clicked", G_CALLBACK (unselect_all), icon_list); + gtk_box_pack_start_defaults (GTK_BOX (bbox), button); gtk_paned_pack1 (GTK_PANED (paned), vbox, TRUE, FALSE); |