aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk/empathy-avatar-chooser.c
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@gmail.com>2007-10-09 17:38:12 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2007-10-09 17:38:12 +0800
commitbfe4734f01b202ae448616e6c711a46c5d0d7f6e (patch)
treefd965564aa48a93b1897ce0d90d912adf5fe8d46 /libempathy-gtk/empathy-avatar-chooser.c
parent0d4e81432f5ace47ac86991aa239e4a55686de00 (diff)
downloadgsoc2013-empathy-bfe4734f01b202ae448616e6c711a46c5d0d7f6e.tar
gsoc2013-empathy-bfe4734f01b202ae448616e6c711a46c5d0d7f6e.tar.gz
gsoc2013-empathy-bfe4734f01b202ae448616e6c711a46c5d0d7f6e.tar.bz2
gsoc2013-empathy-bfe4734f01b202ae448616e6c711a46c5d0d7f6e.tar.lz
gsoc2013-empathy-bfe4734f01b202ae448616e6c711a46c5d0d7f6e.tar.xz
gsoc2013-empathy-bfe4734f01b202ae448616e6c711a46c5d0d7f6e.tar.zst
gsoc2013-empathy-bfe4734f01b202ae448616e6c711a46c5d0d7f6e.zip
Makes avatar looks better in information and edit dialogs.
2007-10-09 Xavier Claessens <xclaesse@gmail.com> * libempathy-gtk/empathy-contact-widget.glade: * libempathy-gtk/empathy-contact-widget.c: * libempathy-gtk/empathy-avatar-chooser.c: * libempathy-gtk/empathy-avatar-image.c: Makes avatar looks better in information and edit dialogs. svn path=/trunk/; revision=364
Diffstat (limited to 'libempathy-gtk/empathy-avatar-chooser.c')
-rw-r--r--libempathy-gtk/empathy-avatar-chooser.c38
1 files changed, 15 insertions, 23 deletions
diff --git a/libempathy-gtk/empathy-avatar-chooser.c b/libempathy-gtk/empathy-avatar-chooser.c
index 2ef3de429..bc5f07e9b 100644
--- a/libempathy-gtk/empathy-avatar-chooser.c
+++ b/libempathy-gtk/empathy-avatar-chooser.c
@@ -40,13 +40,13 @@
#define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EMPATHY_AVATAR_CHOOSER_TYPE, EmpathyAvatarChooserPriv))
-#define AVATAR_MAX 96
+#define AVATAR_SIZE_SAVE 96
+#define AVATAR_SIZE_VIEW 64
#define DEFAULT_DIR DATADIR"/pixmaps/faces"
typedef struct {
- GdkPixbuf *pixbuf;
- gchar *image_data;
- gsize image_data_size;
+ gchar *image_data;
+ gsize image_data_size;
} EmpathyAvatarChooserPriv;
static void avatar_chooser_finalize (GObject *object);
@@ -160,9 +160,6 @@ avatar_chooser_finalize (GObject *object)
priv = GET_PRIV (object);
- if (priv->pixbuf) {
- g_object_unref (priv->pixbuf);
- }
g_free (priv->image_data);
G_OBJECT_CLASS (empathy_avatar_chooser_parent_class)->finalize (object);
@@ -174,22 +171,19 @@ avatar_chooser_set_pixbuf (EmpathyAvatarChooser *chooser,
{
EmpathyAvatarChooserPriv *priv = GET_PRIV (chooser);
GtkWidget *image;
+ GdkPixbuf *pixbuf_view = NULL;
+ GdkPixbuf *pixbuf_save = NULL;
GError *error = NULL;
- if (priv->pixbuf) {
- g_object_unref (priv->pixbuf);
- priv->pixbuf = NULL;
- }
g_free (priv->image_data);
priv->image_data = NULL;
priv->image_data_size = 0;
if (pixbuf) {
- priv->pixbuf = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_MAX);
- }
+ pixbuf_view = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_SIZE_VIEW);
+ pixbuf_save = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_SIZE_SAVE);
- if (priv->pixbuf) {
- if (!gdk_pixbuf_save_to_buffer (priv->pixbuf,
+ if (!gdk_pixbuf_save_to_buffer (pixbuf_save,
&priv->image_data,
&priv->image_data_size,
"png",
@@ -197,16 +191,14 @@ avatar_chooser_set_pixbuf (EmpathyAvatarChooser *chooser,
empathy_debug (DEBUG_DOMAIN, "Failed to save pixbuf: %s",
error ? error->message : "No error given");
g_clear_error (&error);
- g_object_unref (priv->pixbuf);
- priv->pixbuf = NULL;
}
- }
+ image = gtk_image_new_from_pixbuf (pixbuf_view);
- if (!priv->pixbuf) {
+ g_object_unref (pixbuf_save);
+ g_object_unref (pixbuf_view);
+ } else {
image = gtk_image_new_from_icon_name ("stock_person",
GTK_ICON_SIZE_DIALOG);
- } else {
- image = gtk_image_new_from_pixbuf (priv->pixbuf);
}
gtk_button_set_image (GTK_BUTTON (chooser), image);
@@ -399,7 +391,7 @@ avatar_chooser_update_preview_cb (GtkFileChooser *file_chooser,
image = gtk_file_chooser_get_preview_widget (file_chooser);
if (pixbuf) {
- scaled_pixbuf = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_MAX);
+ scaled_pixbuf = empathy_pixbuf_scale_down_if_necessary (pixbuf, AVATAR_SIZE_SAVE);
gtk_image_set_from_pixbuf (GTK_IMAGE (image), scaled_pixbuf);
g_object_unref (scaled_pixbuf);
g_object_unref (pixbuf);
@@ -507,7 +499,7 @@ avatar_chooser_clicked_cb (GtkWidget *button,
/* Setup preview image */
image = gtk_image_new ();
gtk_file_chooser_set_preview_widget (chooser_dialog, image);
- gtk_widget_set_size_request (image, AVATAR_MAX, AVATAR_MAX);
+ gtk_widget_set_size_request (image, AVATAR_SIZE_SAVE, AVATAR_SIZE_SAVE);
gtk_widget_show (image);
gtk_file_chooser_set_use_preview_label (chooser_dialog, FALSE);
g_signal_connect (chooser_dialog, "update-preview",