From dfc55a2b3a3769b3846500136dc393cfde0ae523 Mon Sep 17 00:00:00 2001 From: Jannis Pohlmann <jannis@xfce.org> Date: Tue, 27 Dec 2011 13:12:38 +0100 Subject: [PATCH] Respect ThunarIconFactory::show-thumbnails. Fixes a regression. Whenever show-thumbnails is toggled, we need to either show thumbnails again immediately or cancel any pending requests to put tumbler back into idle mode. --- NEWS | 1 + thunar/thunar-standard-view.c | 52 +++++++++++++++++++++++++++++++---- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index 015a7cf62..c02e6a5a5 100644 --- a/NEWS +++ b/NEWS @@ -20,6 +20,7 @@ Fix by Lionel Le Folgoc<lionel@lefolgoc.net>. - Fix sorting of filenames with large numbers (bug #5356). Patch by Eric Koegel. +- Respect ThunarIconFactory::show-thumbnails. Fixes a regression. 1.3.0 ===== diff --git a/thunar/thunar-standard-view.c b/thunar/thunar-standard-view.c index 2478d7e87..356488d08 100644 --- a/thunar/thunar-standard-view.c +++ b/thunar/thunar-standard-view.c @@ -266,6 +266,9 @@ static void thunar_standard_view_cancel_thumbnailing (Thu static void thunar_standard_view_schedule_thumbnail_timeout (ThunarStandardView *standard_view); static void thunar_standard_view_schedule_thumbnail_idle (ThunarStandardView *standard_view); static gboolean thunar_standard_view_request_thumbnails (ThunarStandardView *standard_view); +static void thunar_standard_view_show_thumbnails_toggled (ThunarStandardView *standard_view, + GParamSpec *pspec, + ThunarIconFactory *icon_factory); static void thunar_standard_view_scrolled (GtkAdjustment *adjustment, ThunarStandardView *standard_view); static void thunar_standard_view_size_allocate (ThunarStandardView *standard_view, @@ -913,7 +916,10 @@ thunar_standard_view_realize (GtkWidget *widget) standard_view->icon_factory = thunar_icon_factory_get_for_icon_theme (icon_theme); /* we need to redraw whenever the "show-thumbnails" property is toggled */ - g_signal_connect_swapped (G_OBJECT (standard_view->icon_factory), "notify::show-thumbnails", G_CALLBACK (gtk_widget_queue_draw), standard_view); + g_signal_connect_swapped (standard_view->icon_factory, + "notify::show-thumbnails", + G_CALLBACK (thunar_standard_view_show_thumbnails_toggled), + standard_view); } @@ -3380,17 +3386,22 @@ thunar_standard_view_request_thumbnails (ThunarStandardView *standard_view) GtkTreePath *path; GtkTreeIter iter; ThunarFile *file; + gboolean show_thumbnails; gboolean valid_iter; GList *visible_files = NULL; _thunar_return_val_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view), FALSE); + /* determine whether the user wants us to create thumbnails */ + g_object_get (standard_view->icon_factory, "show-thumbnails", &show_thumbnails, NULL); + + /* do nothing if we are not supposed to show thumbnails at all */ + if (!show_thumbnails) + return FALSE; + /* reschedule the source if we're still loading the folder */ if (thunar_view_get_loading (THUNAR_VIEW (standard_view))) - { - g_debug ("weird, this should never happen"); - return TRUE; - } + return TRUE; /* compute visible item range */ if ((*THUNAR_STANDARD_VIEW_GET_CLASS (standard_view)->get_visible_range) (standard_view, @@ -3446,6 +3457,37 @@ thunar_standard_view_request_thumbnails (ThunarStandardView *standard_view) +static void +thunar_standard_view_show_thumbnails_toggled (ThunarStandardView *standard_view, + GParamSpec *pspec, + ThunarIconFactory *icon_factory) +{ + GtkAdjustment *vadjustment; + gboolean show_thumbnails; + + _thunar_return_if_fail (THUNAR_IS_STANDARD_VIEW (standard_view)); + _thunar_return_if_fail (THUNAR_IS_ICON_FACTORY (icon_factory)); + + /* check whether the user wants us to generate thumbnails */ + g_object_get (icon_factory, "show-thumbnails", &show_thumbnails, NULL); + if (show_thumbnails) + { + /* get the vertical adjustment of the view */ + vadjustment = + gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (standard_view)); + + /* fake a scroll event to generate thumbnail requests */ + thunar_standard_view_scrolled (vadjustment, standard_view); + } + else + { + /* cancel any pending thumbnail requests */ + thunar_standard_view_cancel_thumbnailing (standard_view); + } +} + + + static void thunar_standard_view_scrolled (GtkAdjustment *adjustment, ThunarStandardView *standard_view) -- GitLab