diff options
author | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2014-04-28 14:46:48 -0300 |
---|---|---|
committer | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2014-04-28 17:08:12 -0300 |
commit | d1467c191de55f9a2ef047f09cb605ced1448e21 (patch) | |
tree | 112f5c8c73f5612ff91aa4f962b6341a6069ea99 | |
parent | 2dcf6c6b718db189412453393f90c76aa189b527 (diff) | |
download | gtk+-d1467c191de55f9a2ef047f09cb605ced1448e21.tar.gz |
GtkRecentChooserMenu: Set current uri before activating an item.
When activating an item using mnemonics GtkRecentChooserMenu does not select a
item before calling the item-activated signal thus
gtk_recent_chooser_get_current_uri() always return the last selected item
instead of the activated one.
Fixes Bug 495105 "Open recent file keyboard shortcuts do not work correctly"
-rw-r--r-- | gtk/gtkrecentchoosermenu.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/gtk/gtkrecentchoosermenu.c b/gtk/gtkrecentchoosermenu.c index f70e795eb2..8d77819d57 100644 --- a/gtk/gtkrecentchoosermenu.c +++ b/gtk/gtkrecentchoosermenu.c @@ -488,10 +488,11 @@ gtk_recent_chooser_menu_set_current_uri (GtkRecentChooser *chooser, GList *children, *l; GtkWidget *menu_item = NULL; gboolean found = FALSE; + gint i = 0; children = gtk_container_get_children (GTK_CONTAINER (menu)); - for (l = children; l != NULL; l = l->next) + for (l = children; l != NULL; l = l->next, i++) { GtkRecentInfo *info; @@ -503,9 +504,7 @@ gtk_recent_chooser_menu_set_current_uri (GtkRecentChooser *chooser, if (strcmp (uri, gtk_recent_info_get_uri (info)) == 0) { - gtk_menu_shell_activate_item (GTK_MENU_SHELL (menu), - menu_item, - TRUE); + gtk_menu_set_active (GTK_MENU (menu), i); found = TRUE; break; @@ -1114,7 +1113,9 @@ item_activate_cb (GtkWidget *widget, gpointer user_data) { GtkRecentChooser *chooser = GTK_RECENT_CHOOSER (user_data); - + GtkRecentInfo *info = g_object_get_data (G_OBJECT (widget), "gtk-recent-info"); + + gtk_recent_chooser_menu_set_current_uri (chooser, gtk_recent_info_get_uri (info), NULL); _gtk_recent_chooser_item_activated (chooser); } |