From b602220e2f1a226ec292fed0e10f9c1c259edd2d Mon Sep 17 00:00:00 2001 From: Federico Mena Quintero Date: Tue, 28 Jun 2011 17:24:53 -0500 Subject: [PATCH] Actually highlight the 'recently used' and 'search' items in the shortcuts bar They weren't being selected in the shortcuts bar when those modes were activated programmatically, instead of through the user selecting them from the user interface. --- gtk/gtkfilechooserdefault.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index 90baae4bba..0b7b6ac27a 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -8874,6 +8874,24 @@ stop_operation (GtkFileChooserDefault *impl, OperationMode mode) } } +/* Sometimes we need to frob the selection in the shortcuts list manually */ +static void +shortcuts_select_item_without_activating (GtkFileChooserDefault *impl, int pos) +{ + GtkTreeSelection *selection; + GtkTreePath *path; + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view)); + + g_signal_handlers_block_by_func (selection, G_CALLBACK (shortcuts_selection_changed_cb), impl); + + path = gtk_tree_path_new_from_indices (pos, -1); + gtk_tree_selection_select_path (selection, path); + gtk_tree_path_free (path); + + g_signal_handlers_unblock_by_func (selection, G_CALLBACK (shortcuts_selection_changed_cb), impl); +} + /* Main entry point to the searching functions; this gets called when the user * activates the Search shortcut. */ @@ -8891,6 +8909,8 @@ search_activate (GtkFileChooserDefault *impl) previous_mode = impl->operation_mode; impl->operation_mode = OPERATION_MODE_SEARCH; + shortcuts_select_item_without_activating (impl, shortcuts_get_index (impl, SHORTCUTS_SEARCH)); + stop_operation (impl, previous_mode); g_assert (impl->search_hbox == NULL); @@ -9250,6 +9270,8 @@ recent_activate (GtkFileChooserDefault *impl) previous_mode = impl->operation_mode; impl->operation_mode = OPERATION_MODE_RECENT; + shortcuts_select_item_without_activating (impl, shortcuts_get_index (impl, SHORTCUTS_RECENT)); + stop_operation (impl, previous_mode); recent_hide_entry (impl);