image: Avoid some unnecessary signal connections

Equivalent if fd9879e5ff but for GtkImage.
This commit is contained in:
Timm Bäder
2018-12-30 20:37:48 +01:00
parent ea8f1469c1
commit c1e1e2da80

View File

@@ -918,15 +918,21 @@ gtk_image_set_from_paintable (GtkImage *image,
if (paintable)
{
const guint flags = gdk_paintable_get_flags (paintable);
_gtk_icon_helper_set_paintable (priv->icon_helper, paintable);
g_signal_connect (paintable,
"invalidate-contents",
G_CALLBACK (gtk_image_paintable_invalidate_contents),
image);
g_signal_connect (paintable,
"invalidate-size",
G_CALLBACK (gtk_image_paintable_invalidate_size),
image);
if ((flags & GDK_PAINTABLE_STATIC_CONTENTS) == 0)
g_signal_connect (paintable,
"invalidate-contents",
G_CALLBACK (gtk_image_paintable_invalidate_contents),
image);
if ((flags & GDK_PAINTABLE_STATIC_SIZE) == 0)
g_signal_connect (paintable,
"invalidate-size",
G_CALLBACK (gtk_image_paintable_invalidate_size),
image);
g_object_unref (paintable);
}
@@ -1215,12 +1221,17 @@ gtk_image_clear (GtkImage *image)
if (storage_type == GTK_IMAGE_PAINTABLE)
{
GdkPaintable *paintable = _gtk_icon_helper_peek_paintable (priv->icon_helper);
g_signal_handlers_disconnect_by_func (paintable,
gtk_image_paintable_invalidate_contents,
image);
g_signal_handlers_disconnect_by_func (paintable,
gtk_image_paintable_invalidate_size,
image);
const guint flags = gdk_paintable_get_flags (paintable);
if ((flags & GDK_PAINTABLE_STATIC_CONTENTS) == 0)
g_signal_handlers_disconnect_by_func (paintable,
gtk_image_paintable_invalidate_contents,
image);
if ((flags & GDK_PAINTABLE_STATIC_SIZE) == 0)
g_signal_handlers_disconnect_by_func (paintable,
gtk_image_paintable_invalidate_size,
image);
}
_gtk_icon_helper_clear (priv->icon_helper);