Make the file property readable. (#170674, Lorenzo Gil Sanchez)

2005-06-08  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkimage.c: Make the file property readable.
	(#170674, Lorenzo Gil Sanchez)
This commit is contained in:
Matthias Clasen 2005-06-08 17:38:25 +00:00 committed by Matthias Clasen
parent 9bdd5b9345
commit e413007784
4 changed files with 42 additions and 11 deletions

View File

@ -1,3 +1,8 @@
2005-06-08 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkimage.c: Make the file property readable.
(#170674, Lorenzo Gil Sanchez)
2005-06-08 Matthias Clasen <mclasen@redhat.com> 2005-06-08 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilesystem.c (gtk_file_info_get_display_key): Use * gtk/gtkfilesystem.c (gtk_file_info_get_display_key): Use

View File

@ -1,3 +1,8 @@
2005-06-08 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkimage.c: Make the file property readable.
(#170674, Lorenzo Gil Sanchez)
2005-06-08 Matthias Clasen <mclasen@redhat.com> 2005-06-08 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilesystem.c (gtk_file_info_get_display_key): Use * gtk/gtkfilesystem.c (gtk_file_info_get_display_key): Use

View File

@ -1,3 +1,8 @@
2005-06-08 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkimage.c: Make the file property readable.
(#170674, Lorenzo Gil Sanchez)
2005-06-08 Matthias Clasen <mclasen@redhat.com> 2005-06-08 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkfilesystem.c (gtk_file_info_get_display_key): Use * gtk/gtkfilesystem.c (gtk_file_info_get_display_key): Use

View File

@ -41,6 +41,9 @@ typedef struct _GtkImagePrivate GtkImagePrivate;
struct _GtkImagePrivate struct _GtkImagePrivate
{ {
/* Only used with GTK_IMAGE_ANIMATION, GTK_IMAGE_PIXBUF */
gchar *filename;
gint pixel_size; gint pixel_size;
}; };
@ -192,7 +195,7 @@ gtk_image_class_init (GtkImageClass *class)
P_("Filename"), P_("Filename"),
P_("Filename to load and display"), P_("Filename to load and display"),
NULL, NULL,
GTK_PARAM_WRITABLE)); GTK_PARAM_READWRITE));
g_object_class_install_property (gobject_class, g_object_class_install_property (gobject_class,
@ -285,6 +288,8 @@ gtk_image_init (GtkImage *image)
image->mask = NULL; image->mask = NULL;
priv->pixel_size = -1; priv->pixel_size = -1;
priv->filename = NULL;
} }
static void static void
@ -349,8 +354,7 @@ gtk_image_set_property (GObject *object,
} }
break; break;
case PROP_FILE: case PROP_FILE:
gtk_image_set_from_file (image, gtk_image_set_from_file (image, g_value_get_string (value));
g_value_get_string (value));
break; break;
case PROP_STOCK: case PROP_STOCK:
gtk_image_set_from_stock (image, g_value_get_string (value), gtk_image_set_from_stock (image, g_value_get_string (value),
@ -439,6 +443,9 @@ gtk_image_get_property (GObject *object,
g_value_set_object (value, g_value_set_object (value,
image->data.image.image); image->data.image.image);
break; break;
case PROP_FILE:
g_value_set_string (value, priv->filename);
break;
case PROP_STOCK: case PROP_STOCK:
if (image->storage_type != GTK_IMAGE_STOCK) if (image->storage_type != GTK_IMAGE_STOCK)
g_value_set_string (value, NULL); g_value_set_string (value, NULL);
@ -827,6 +834,7 @@ void
gtk_image_set_from_file (GtkImage *image, gtk_image_set_from_file (GtkImage *image,
const gchar *filename) const gchar *filename)
{ {
GtkImagePrivate *priv = GTK_IMAGE_GET_PRIVATE (image);
GdkPixbufAnimation *anim; GdkPixbufAnimation *anim;
g_return_if_fail (GTK_IS_IMAGE (image)); g_return_if_fail (GTK_IS_IMAGE (image));
@ -837,10 +845,11 @@ gtk_image_set_from_file (GtkImage *image,
if (filename == NULL) if (filename == NULL)
{ {
priv->filename = NULL;
g_object_thaw_notify (G_OBJECT (image)); g_object_thaw_notify (G_OBJECT (image));
return; return;
} }
anim = gdk_pixbuf_animation_new_from_file (filename, NULL); anim = gdk_pixbuf_animation_new_from_file (filename, NULL);
if (anim == NULL) if (anim == NULL)
@ -858,17 +867,15 @@ gtk_image_set_from_file (GtkImage *image,
*/ */
if (gdk_pixbuf_animation_is_static_image (anim)) if (gdk_pixbuf_animation_is_static_image (anim))
{ gtk_image_set_from_pixbuf (image,
gtk_image_set_from_pixbuf (image, gdk_pixbuf_animation_get_static_image (anim));
gdk_pixbuf_animation_get_static_image (anim));
}
else else
{ gtk_image_set_from_animation (image, anim);
gtk_image_set_from_animation (image, anim);
}
g_object_unref (anim); g_object_unref (anim);
priv->filename = g_strdup (filename);
g_object_thaw_notify (G_OBJECT (image)); g_object_thaw_notify (G_OBJECT (image));
} }
@ -1835,6 +1842,8 @@ gtk_image_expose (GtkWidget *widget,
static void static void
gtk_image_clear (GtkImage *image) gtk_image_clear (GtkImage *image)
{ {
GtkImagePrivate *priv = GTK_IMAGE_GET_PRIVATE (image);
g_object_freeze_notify (G_OBJECT (image)); g_object_freeze_notify (G_OBJECT (image));
if (image->storage_type != GTK_IMAGE_EMPTY) if (image->storage_type != GTK_IMAGE_EMPTY)
@ -1930,6 +1939,13 @@ gtk_image_clear (GtkImage *image)
} }
if (priv->filename)
{
g_free (priv->filename);
priv->filename = NULL;
g_object_notify (G_OBJECT (image), "file");
}
image->storage_type = GTK_IMAGE_EMPTY; image->storage_type = GTK_IMAGE_EMPTY;
memset (&image->data, '\0', sizeof (image->data)); memset (&image->data, '\0', sizeof (image->data));