summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRachel Hestilow <hestilow@ximian.com>2002-04-08 01:53:50 +0000
committerRachel Hestilow <hestgray@src.gnome.org>2002-04-08 01:53:50 +0000
commitb87c01cc34d14e5d17f36d9269b438447060993c (patch)
tree06e6f8dfaada7dc96d04803ef2144cde13dbb411
parent7483d8c6a761c425af41913798f599f2c845ee0c (diff)
downloadgnome-control-center-b87c01cc34d14e5d17f36d9269b438447060993c.tar.gz
Connect to "realize" on preview. (preview_realized_cb): Added function to
2002-04-07 Rachel Hestilow <hestilow@ximian.com> * applier.c (bg_applier_get_preview_widget): Connect to "realize" on preview. (preview_realized_cb): Added function to initialize preview pixmap.
-rw-r--r--libbackground/ChangeLog6
-rw-r--r--libbackground/applier.c32
2 files changed, 38 insertions, 0 deletions
diff --git a/libbackground/ChangeLog b/libbackground/ChangeLog
index 0f389e2e2..1bcf3cc1a 100644
--- a/libbackground/ChangeLog
+++ b/libbackground/ChangeLog
@@ -1,3 +1,9 @@
+2002-04-07 Rachel Hestilow <hestilow@ximian.com>
+
+ * applier.c (bg_applier_get_preview_widget): Connect to "realize"
+ on preview.
+ (preview_realized_cb): Added function to initialize preview pixmap.
+
2002-03-28 Richard Hestilow <hestilow@ximian.com>
* applier.c (bg_applier_set_prop): Only set size for preview modes.
diff --git a/libbackground/applier.c b/libbackground/applier.c
index a257d043b..712c5982e 100644
--- a/libbackground/applier.c
+++ b/libbackground/applier.c
@@ -178,6 +178,9 @@ static gboolean is_nautilus_running (void);
static gboolean cleanup_cb (BGApplier *bg_applier);
+static void preview_realized_cb (GtkWidget *preview,
+ BGApplier *bg_applier);
+
guint
bg_applier_get_type (void)
{
@@ -497,7 +500,15 @@ bg_applier_get_preview_widget (BGApplier *bg_applier)
bg_applier->p->render_geom.height,
-1);
bg_applier->p->preview_widget = gtk_image_new_from_pixmap (pixmap, NULL);
+
+ /* We need to initialize the pixmap, but this
+ * needs GCs, so we have to wait until realize. */
+ g_signal_connect (G_OBJECT (bg_applier->p->preview_widget),
+ "realize",
+ (GCallback) preview_realized_cb,
+ bg_applier);
}
+
return bg_applier->p->preview_widget;
}
@@ -1507,3 +1518,24 @@ cleanup_cb (BGApplier *bg_applier)
return FALSE;
}
+
+static void
+preview_realized_cb (GtkWidget *preview, BGApplier *bg_applier)
+{
+ GdkPixmap *pixmap;
+
+ /* Only draw clean image if no pref set yet */
+ if (bg_applier->p->last_prefs)
+ return;
+
+ gtk_image_get_pixmap (GTK_IMAGE (preview), &pixmap, NULL);
+
+ gdk_draw_rectangle (pixmap,
+ preview->style->bg_gc[preview->state],
+ TRUE,
+ bg_applier->p->render_geom.x,
+ bg_applier->p->render_geom.y,
+ bg_applier->p->render_geom.width,
+ bg_applier->p->render_geom.height);
+}
+