From 5d8fd4ee247230e4ab97c223e618791f25f3ba24 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 24 Jun 2013 14:05:27 +0200 Subject: [PATCH] GtkIconHelper: Add set_window() This is a hint on where the icon will be drawn. It will allow us to pre-allocate cairo surfaces for the right target. --- gtk/gtkiconhelper.c | 14 ++++++++++++++ gtk/gtkiconhelperprivate.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/gtk/gtkiconhelper.c b/gtk/gtkiconhelper.c index 1ec7b850e7..629f007827 100644 --- a/gtk/gtkiconhelper.c +++ b/gtk/gtkiconhelper.c @@ -26,6 +26,8 @@ G_DEFINE_TYPE (GtkIconHelper, _gtk_icon_helper, G_TYPE_OBJECT) struct _GtkIconHelperPrivate { GtkImageType storage_type; + GdkWindow *window; + GdkPixbuf *orig_pixbuf; GdkPixbufAnimation *animation; GIcon *gicon; @@ -50,6 +52,7 @@ _gtk_icon_helper_clear (GtkIconHelper *self) g_clear_object (&self->priv->orig_pixbuf); g_clear_object (&self->priv->animation); g_clear_object (&self->priv->rendered_pixbuf); + g_clear_object (&self->priv->window); if (self->priv->icon_set != NULL) { @@ -76,6 +79,17 @@ _gtk_icon_helper_invalidate (GtkIconHelper *self) g_clear_object (&self->priv->rendered_pixbuf); } +void + _gtk_icon_helper_set_window (GtkIconHelper *self, + GdkWindow *window) +{ + if (window) + g_object_ref (window); + g_clear_object (&self->priv->window); + self->priv->window = window; + +} + static void gtk_icon_helper_finalize (GObject *object) { diff --git a/gtk/gtkiconhelperprivate.h b/gtk/gtkiconhelperprivate.h index c2b9f0804f..10467be950 100644 --- a/gtk/gtkiconhelperprivate.h +++ b/gtk/gtkiconhelperprivate.h @@ -70,6 +70,8 @@ GtkIconHelper *_gtk_icon_helper_new (void); void _gtk_icon_helper_clear (GtkIconHelper *self); void _gtk_icon_helper_invalidate (GtkIconHelper *self); +void _gtk_icon_helper_set_window (GtkIconHelper *self, + GdkWindow *window); gboolean _gtk_icon_helper_get_is_empty (GtkIconHelper *self);