summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2012-07-15 00:39:02 -0400
committerMatthias Clasen <mclasen@redhat.com>2012-07-15 00:39:02 -0400
commit48872232f7bdd1ab9c5e7b73f92521bc652ce4ad (patch)
tree5e65c81ec105c7198fa436110a9bbf21cd2b82ce
parent523d897550cb302dff11da5e79079127902d75b7 (diff)
downloadgtk+-filechooser-filtered-folders.tar.gz
Clear cached row sensitivity when the filter changesfilechooser-filtered-folders
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.
-rw-r--r--gtk/gtkfilechooserdefault.c24
1 files 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");
}