From 79c1095512eb63151d63700737f6ba9539653731 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 15 Jul 2012 00:39:02 -0400 Subject: [PATCH] Clear cached row sensitivity when the filter changes Now that filters may affect sensitivity of rows, we need to clear the sensitivity column from the cache when the filter changes. This fixes the problem where selecting a different filter does not update the sensitivity of folders until you change directories. --- gtk/gtkfilechooserdefault.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c index 19cd8bb5e0..cec6852d4c 100644 --- a/gtk/gtkfilechooserdefault.c +++ b/gtk/gtkfilechooserdefault.c @@ -6204,13 +6204,6 @@ gtk_file_chooser_default_unmap (GtkWidget *widget) GTK_WIDGET_CLASS (_gtk_file_chooser_default_parent_class)->unmap (widget); } -static void -install_list_model_filter (GtkFileChooserDefault *impl) -{ - _gtk_file_system_model_set_filter (impl->browse_files_model, - impl->current_filter); -} - #define COMPARE_DIRECTORIES \ GtkFileChooserDefault *impl = user_data; \ GtkFileSystemModel *fs_model = GTK_FILE_SYSTEM_MODEL (model); \ @@ -6991,7 +6984,7 @@ set_list_model (GtkFileChooserDefault *impl, g_signal_connect (impl->browse_files_model, "finished-loading", G_CALLBACK (browse_files_model_finished_loading_cb), impl); - install_list_model_filter (impl); + _gtk_file_system_model_set_filter (impl->browse_files_model, impl->current_filter); profile_end ("end", NULL); @@ -9688,13 +9681,22 @@ set_current_filter (GtkFileChooserDefault *impl, filter_index); if (impl->browse_files_model) - install_list_model_filter (impl); + { + _gtk_file_system_model_set_filter (impl->browse_files_model, impl->current_filter); + _gtk_file_system_model_clear_cache (impl->browse_files_model, MODEL_COL_IS_SENSITIVE); + } if (impl->search_model) - _gtk_file_system_model_set_filter (impl->search_model, filter); + { + _gtk_file_system_model_set_filter (impl->search_model, filter); + _gtk_file_system_model_clear_cache (impl->search_model, MODEL_COL_IS_SENSITIVE); + } if (impl->recent_model) - _gtk_file_system_model_set_filter (impl->recent_model, filter); + { + _gtk_file_system_model_set_filter (impl->recent_model, filter); + _gtk_file_system_model_clear_cache (impl->recent_model, MODEL_COL_IS_SENSITIVE); + } g_object_notify (G_OBJECT (impl), "filter"); }