diff options
author | Rachel Hestilow <hestilow@ximian.com> | 2002-04-08 01:53:50 +0000 |
---|---|---|
committer | Rachel Hestilow <hestgray@src.gnome.org> | 2002-04-08 01:53:50 +0000 |
commit | b87c01cc34d14e5d17f36d9269b438447060993c (patch) | |
tree | 06e6f8dfaada7dc96d04803ef2144cde13dbb411 | |
parent | 7483d8c6a761c425af41913798f599f2c845ee0c (diff) | |
download | gnome-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/ChangeLog | 6 | ||||
-rw-r--r-- | libbackground/applier.c | 32 |
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); +} + |