summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2014-04-28 14:46:48 -0300
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>2014-04-28 17:08:12 -0300
commitd1467c191de55f9a2ef047f09cb605ced1448e21 (patch)
tree112f5c8c73f5612ff91aa4f962b6341a6069ea99
parent2dcf6c6b718db189412453393f90c76aa189b527 (diff)
downloadgtk+-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.c11
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);
}