app: defer GimpViewable::size-changed signal emission while frozen
In GimpViewable, defer emission of the size-changed signal while the viewable's preview is frozen, and only emit the signal once thawed.
This commit is contained in:
@ -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;
|
||||
|
Reference in New Issue
Block a user