diff options
Diffstat (limited to 'components/services/nautilus-dependent-shared')
3 files changed, 50 insertions, 6 deletions
diff --git a/components/services/nautilus-dependent-shared/eazel-services-extensions.c b/components/services/nautilus-dependent-shared/eazel-services-extensions.c index 29f4b499e..6a183538f 100644 --- a/components/services/nautilus-dependent-shared/eazel-services-extensions.c +++ b/components/services/nautilus-dependent-shared/eazel-services-extensions.c @@ -126,12 +126,6 @@ eazel_services_image_new_from_uri (const char *uri, g_return_val_if_fail (uri != NULL, NULL); - /* as an optimization, it can be a local file. If it doesn't start with http://, - just pass it on to create_image_widget */ - if (!nautilus_istr_has_prefix (uri, "http://")) { - return eazel_services_image_new (uri, tile_name, background_color); - } - /* load the image - synchronously, at least at first */ pixbuf = nautilus_gdk_pixbuf_load (uri); @@ -154,6 +148,47 @@ eazel_services_image_new_from_uri (const char *uri, return image; } + + +GtkWidget * +eazel_services_clickable_image_new_from_uri (const char *uri, + const char *tile_name, + guint32 background_color, + int max_width, + int max_height) +{ + GtkWidget *image = NULL; + GdkPixbuf *pixbuf; + GdkPixbuf *scaled_pixbuf; + + g_return_val_if_fail (uri != NULL, NULL); + + /* load the image - synchronously, at least at first */ + pixbuf = nautilus_gdk_pixbuf_load (uri); + + /* pin the image to the specified dimensions if necessary */ + if (pixbuf && max_width > 0 && max_height > 0) { + scaled_pixbuf = nautilus_gdk_pixbuf_scale_down_to_fit (pixbuf, max_width, max_height); + gdk_pixbuf_unref (pixbuf); + pixbuf = scaled_pixbuf; + } + + /* create the image widget then release the pixbuf*/ + image = eazel_services_image_new_clickable (NULL, tile_name, background_color); + + if (pixbuf != NULL) { + nautilus_labeled_image_set_pixbuf (NAUTILUS_LABELED_IMAGE (image), + pixbuf); + } + + nautilus_gdk_pixbuf_unref_if_not_null (pixbuf); + + return image; +} + + + + GtkWidget * eazel_services_label_new (const char *text, guint drop_shadow_offset, diff --git a/components/services/nautilus-dependent-shared/eazel-services-extensions.h b/components/services/nautilus-dependent-shared/eazel-services-extensions.h index 68ecb1b6d..818133182 100644 --- a/components/services/nautilus-dependent-shared/eazel-services-extensions.h +++ b/components/services/nautilus-dependent-shared/eazel-services-extensions.h @@ -75,6 +75,11 @@ GtkWidget *eazel_services_image_new_from_uri (const char *uri, guint32 background_color, int max_width, int max_height); +GtkWidget *eazel_services_clickable_image_new_from_uri (const char *uri, + const char *tile_name, + guint32 background_color, + int max_width, + int max_height); GtkWidget *eazel_services_label_new (const char *text, guint drop_shadow_offset, float xalign, diff --git a/components/services/nautilus-dependent-shared/eazel-services-footer.c b/components/services/nautilus-dependent-shared/eazel-services-footer.c index aebcea1d0..1c4220772 100644 --- a/components/services/nautilus-dependent-shared/eazel-services-footer.c +++ b/components/services/nautilus-dependent-shared/eazel-services-footer.c @@ -318,6 +318,10 @@ eazel_services_footer_update (EazelServicesFooter *footer, g_return_if_fail (items != NULL); g_return_if_fail (num_items > 0); + gtk_container_foreach (GTK_CONTAINER (footer), + (GtkCallback) gtk_widget_destroy, + NULL); + for (i = 0; i < num_items; i++) { GtkWidget *item; |