diff --git a/capplets/background/ChangeLog b/capplets/background/ChangeLog index 6af0e26f1..48368b6c7 100644 --- a/capplets/background/ChangeLog +++ b/capplets/background/ChangeLog @@ -1,3 +1,20 @@ +2001-07-26 Bradford Hovinen + + * background-properties-capplet.c (property_change_cb): Accept + applier as argument; retrieve property bag from applier + (realize_cb): Retrieve applier from widget + (setup_dialog): Store property bag in applier + + * applier.c (renderer_new): Store applier inside renderer; accept + applier as function parameter + + * background-properties-capplet.c (create_dialog): Store the + applier inside the widget + + * applier.c (struct _ApplierPrivate ): Define preview_widget here + rather than globally + (applier_get_preview_widget): Make this a method of the applier class + 2001-07-25 Chema Celorio * Makefile.am ($(oaffile)): remove the oaffile_IN_RULE macro and copy diff --git a/capplets/background/applier.c b/capplets/background/applier.c index 8538b57bb..9a04e9b59 100644 --- a/capplets/background/applier.c +++ b/capplets/background/applier.c @@ -47,7 +47,6 @@ #define PDEBUG(pix) (g_print ("file %s: line %d (%s): Setting pixbuf to %i %i\n", __FILE__, __LINE__, __PRETTY_FUNCTION__, gdk_pixbuf_get_width (pix), gdk_pixbuf_get_height (pix))) -static GtkWidget *preview_widget = NULL; static gboolean gdk_pixbuf_xlib_inited = FALSE; typedef struct _Renderer Renderer; @@ -59,6 +58,8 @@ enum { struct _ApplierPrivate { + GtkWidget *preview_widget; + ApplierPreferences *root_prefs; ApplierPreferences *preview_prefs; @@ -76,6 +77,7 @@ struct _Renderer gboolean is_root; gboolean is_set; + Applier *applier; ApplierPreferences *prefs; gint x; /* Geometry relative to pixmap */ @@ -150,7 +152,7 @@ static void run_render_pipeline (Renderer *renderer, GdkPixbuf *wallpaper_pixbuf); static void draw_disabled_message (GtkWidget *widget); -static Renderer *renderer_new (gboolean is_root); +static Renderer *renderer_new (Applier *applier, gboolean is_root); static void renderer_destroy (Renderer *renderer); static void renderer_set_prefs (Renderer *renderer, @@ -395,7 +397,7 @@ applier_apply_prefs (Applier *applier, Bonobo_PropertyBag pb, Bonobo_ConfigDatab if (do_preview) { if (applier->private->preview_renderer == NULL) applier->private->preview_renderer = - renderer_new (FALSE); + renderer_new (applier, FALSE); run_render_pipeline (applier->private->preview_renderer, applier->private->preview_prefs, @@ -408,15 +410,15 @@ applier_apply_prefs (Applier *applier, Bonobo_PropertyBag pb, Bonobo_ConfigDatab applier->private->preview_prefs = prefs; applier_preferences_ref (prefs); - if (preview_widget != NULL) - gtk_widget_queue_draw (preview_widget); + if (applier->private->preview_widget != NULL) + gtk_widget_queue_draw (applier->private->preview_widget); } if (do_root) { nice (20); if (applier->private->root_renderer == NULL) - applier->private->root_renderer = renderer_new (TRUE); + applier->private->root_renderer = renderer_new (applier, TRUE); if (!applier->private->nautilus_running) run_render_pipeline (applier->private->root_renderer, @@ -436,7 +438,7 @@ applier_apply_prefs (Applier *applier, Bonobo_PropertyBag pb, Bonobo_ConfigDatab } GtkWidget * -applier_class_get_preview_widget (void) +applier_get_preview_widget (Applier *applier) { GdkPixbuf *pixbuf; GdkPixmap *pixmap; @@ -447,7 +449,7 @@ applier_class_get_preview_widget (void) gchar *filename; GdkGC *gc; - if (preview_widget != NULL) return preview_widget; + if (applier->private->preview_widget != NULL) return applier->private->preview_widget; filename = gnome_pixmap_file ("monitor.png"); visual = gdk_window_get_visual (GDK_ROOT_PARENT ()); @@ -506,25 +508,27 @@ applier_class_get_preview_widget (void) mask = NULL; } - preview_widget = gtk_pixmap_new (pixmap, mask); - gtk_widget_show (preview_widget); + applier->private->preview_widget = gtk_pixmap_new (pixmap, mask); + gtk_widget_show (applier->private->preview_widget); gdk_pixbuf_unref (pixbuf); g_free (filename); gtk_widget_pop_visual (); gtk_widget_pop_colormap (); - return preview_widget; + return applier->private->preview_widget; } void -applier_class_destroy_preview_widget (void) +applier_destroy_preview_widget (Applier *applier) { - if (!preview_widget) + if (applier->private->preview_widget == NULL) return; - if (GTK_IS_WIDGET (preview_widget)) - gtk_widget_destroy (preview_widget); - preview_widget = NULL; + + if (GTK_IS_WIDGET (applier->private->preview_widget)) + gtk_widget_destroy (applier->private->preview_widget); + + applier->private->preview_widget = NULL; } static void @@ -634,7 +638,7 @@ run_render_pipeline (Renderer *renderer, } static Renderer * -renderer_new (gboolean is_root) +renderer_new (Applier *applier, gboolean is_root) { Renderer *renderer; @@ -649,16 +653,17 @@ renderer_new (gboolean is_root) renderer->pixmap = 0; renderer->is_set = FALSE; } else { - if (!GTK_WIDGET_REALIZED (preview_widget)) - gtk_widget_realize (preview_widget); + if (!GTK_WIDGET_REALIZED (applier->private->preview_widget)) + gtk_widget_realize (applier->private->preview_widget); + renderer->applier = applier; renderer->x = MONITOR_CONTENTS_X; renderer->y = MONITOR_CONTENTS_Y; renderer->width = MONITOR_CONTENTS_WIDTH; renderer->height = MONITOR_CONTENTS_HEIGHT; renderer->pixmap = GDK_WINDOW_XWINDOW (GTK_PIXMAP - (preview_widget)->pixmap); + (applier->private->preview_widget)->pixmap); renderer->is_set = TRUE; } @@ -1017,7 +1022,7 @@ renderer_render_to_screen (Renderer *renderer) gdk_window_clear (GDK_ROOT_PARENT ()); } else { gdk_color_alloc (gdk_window_get_colormap - (preview_widget->window), + (renderer->applier->private->preview_widget->window), renderer->prefs->color1); gdk_gc_set_foreground (gc, renderer->prefs->color1); XFillRectangle (GDK_DISPLAY (), renderer->pixmap, xgc, diff --git a/capplets/background/applier.h b/capplets/background/applier.h index 1ee7128ce..0b7ed3b8c 100644 --- a/capplets/background/applier.h +++ b/capplets/background/applier.h @@ -63,7 +63,7 @@ void applier_apply_prefs (Applier *applier, gboolean do_root, gboolean do_preview); -GtkWidget *applier_class_get_preview_widget (void); -void applier_class_destroy_preview_widget (void); +GtkWidget *applier_get_preview_widget (Applier *applier); +void applier_destroy_preview_widget (Applier *applier); #endif /* __APPLIER_H */ diff --git a/capplets/background/background-properties-capplet.c b/capplets/background/background-properties-capplet.c index b27740864..3ad7fe704 100644 --- a/capplets/background/background-properties-capplet.c +++ b/capplets/background/background-properties-capplet.c @@ -184,17 +184,22 @@ property_change_cb (BonoboListener *listener, char *event_name, CORBA_any *any, CORBA_Environment *ev, - Bonobo_PropertyBag pb) + Applier *applier) { + Bonobo_PropertyBag pb; + + pb = gtk_object_get_data (GTK_OBJECT (applier), "property-bag"); applier_apply_prefs (applier, pb, CORBA_OBJECT_NIL, ev, FALSE, TRUE); } static void -realize_cb (GtkWidget *widget, Bonobo_PropertyBag bag) +realize_cb (GtkWidget *widget, Applier *applier) { CORBA_Environment ev; + Bonobo_PropertyBag bag; CORBA_exception_init (&ev); + bag = gtk_object_get_data (GTK_OBJECT (applier), "property-bag"); applier_apply_prefs (applier, bag, CORBA_OBJECT_NIL, &ev, FALSE, TRUE); CORBA_exception_free (&ev); } @@ -212,6 +217,7 @@ setup_dialog (GtkWidget *widget, Bonobo_PropertyBag bag) { BonoboPEditor *ed; GladeXML *dialog; + Applier *applier; dialog = gtk_object_get_data (GTK_OBJECT (widget), "glade-data"); ed = BONOBO_PEDITOR (bonobo_peditor_option_menu_construct (WID ("color_option"))); @@ -228,10 +234,12 @@ setup_dialog (GtkWidget *widget, Bonobo_PropertyBag bag) gtk_widget_hide (WID ("opacity_spin")); gtk_widget_hide (WID ("opacity_label")); + applier = gtk_object_get_data (GTK_OBJECT (widget), "applier"); + gtk_object_set_data (GTK_OBJECT (applier), "property-bag", bag); bonobo_event_source_client_add_listener (bag, (BonoboListenerCallbackFn) property_change_cb, - NULL, NULL, bag); + NULL, NULL, applier); - gtk_signal_connect_after (GTK_OBJECT (applier_class_get_preview_widget ()), "realize", realize_cb, bag); + gtk_signal_connect_after (GTK_OBJECT (applier_get_preview_widget (applier)), "realize", realize_cb, applier); } static GtkWidget* @@ -246,11 +254,12 @@ create_dialog (void) gtk_object_set_data (GTK_OBJECT (widget), "glade-data", dialog); applier = APPLIER (applier_new ()); + gtk_object_set_data (GTK_OBJECT (widget), "applier", applier); /* Minor GUI addition */ holder = WID ("preview_holder"); gtk_box_pack_start (GTK_BOX (holder), - applier_class_get_preview_widget (), + applier_get_preview_widget (applier), TRUE, TRUE, 0); gtk_widget_show_all (holder);