diff --git a/app/core/gimpviewable.c b/app/core/gimpviewable.c index 9092dcd2e1..5b547a2be2 100644 --- a/app/core/gimpviewable.c +++ b/app/core/gimpviewable.c @@ -69,6 +69,7 @@ struct _GimpViewablePrivate GdkPixbuf *icon_pixbuf; gint freeze_count; gboolean invalidate_pending; + gboolean size_changed_prending; GimpViewable *parent; gint depth; @@ -604,9 +605,16 @@ gimp_viewable_invalidate_preview (GimpViewable *viewable) void gimp_viewable_size_changed (GimpViewable *viewable) { + GimpViewablePrivate *private; + g_return_if_fail (GIMP_IS_VIEWABLE (viewable)); - g_signal_emit (viewable, viewable_signals[SIZE_CHANGED], 0); + private = GET_PRIVATE (viewable); + + if (private->freeze_count == 0) + g_signal_emit (viewable, viewable_signals[SIZE_CHANGED], 0); + else + private->size_changed_prending = TRUE; } /** @@ -1307,6 +1315,13 @@ gimp_viewable_preview_thaw (GimpViewable *viewable) if (private->freeze_count == 0) { + if (private->size_changed_prending) + { + private->size_changed_prending = FALSE; + + gimp_viewable_size_changed (viewable); + } + if (private->invalidate_pending) { private->invalidate_pending = FALSE;