Don't save libravatarr avatars to addressbook
authorColin Leroy <colin@colino.net>
Wed, 30 Apr 2014 18:35:47 +0000 (20:35 +0200)
committerColin Leroy <colin@colino.net>
Wed, 30 Apr 2014 18:35:47 +0000 (20:35 +0200)
src/avatars.c
src/avatars.h
src/plugins/libravatar/libravatar.c
src/textview.c
src/textview.h

index 51acba42e34c5b2bbeb2880a77e0b094c3d23cb4..a68286d85478b18d1905234fdc2cfe5ba176f5f0 100644 (file)
@@ -39,6 +39,7 @@ AvatarRender *avatars_avatarrender_new(MsgInfo *msginfo)
        AvatarRender *ar = g_new0(AvatarRender, 1);
        ar->full_msginfo = msginfo;
        ar->image = NULL;
+       ar->type = 0;
 
        return ar;
 }
@@ -76,12 +77,14 @@ gboolean avatars_internal_rendering_hook(gpointer source, gpointer data)
        aface = procmsg_msginfo_get_avatar(avatarr->full_msginfo, AVATAR_FACE);
        if (aface) {
                avatarr->image = face_get_from_header(aface);
+               avatarr->type  = AVATAR_FACE;
        }
 #if HAVE_LIBCOMPFACE
        else {
                aface = procmsg_msginfo_get_avatar(avatarr->full_msginfo, AVATAR_XFACE);
                if (aface) {
                        avatarr->image = xface_get_from_header(aface);
+                       avatarr->type  = AVATAR_XFACE;
                }
        }
 #endif
index d6f304a853f1dcc3c69a01b395101422c443e4be..c7ac1c91f7b82c2b535c241508869f0f53df2f8c 100644 (file)
@@ -33,6 +33,7 @@ struct _AvatarRender
 {
        MsgInfo *full_msginfo;
        GtkWidget *image;
+       gint type;
 };
 
 AvatarRender *avatars_avatarrender_new         (MsgInfo *msginfo);
index 48d3bf3bf34fa4a3a7ded125fc077bcbb6b43b4d..9f225bba184b9274910bd193730ada69da9336ce 100644 (file)
@@ -275,6 +275,7 @@ static gboolean libravatar_image_render_hook(gpointer source, gpointer data)
                        if (ar->image) /* previous plugin set one */
                                gtk_widget_destroy(ar->image);
                        ar->image = image;
+                       ar->type  = AVATAR_LIBRAVATAR;
                        return FALSE;
                }
                /* not cached copy: try network */
@@ -291,6 +292,7 @@ static gboolean libravatar_image_render_hook(gpointer source, gpointer data)
                                if (ar->image) /* previous plugin set one */
                                        gtk_widget_destroy(ar->image);
                                ar->image = image;
+                               ar->type  = AVATAR_LIBRAVATAR;
                        }
                }
                g_free(base);
index ef50dd8f0350085b51d8c594bb5b432fecdeb6b7..e5cdb66b9967f187f945a3df4cd94c86ac3e5f46 100644 (file)
@@ -1757,6 +1757,7 @@ void textview_clear(TextView *textview)
        if (textview->image) 
                gtk_widget_destroy(textview->image);
        textview->image = NULL;
+       textview->avatar_type = 0;
 
        if (textview->messageview->mainwin->cursor_count == 0) {
                textview_set_cursor(window, text_cursor);
@@ -1987,6 +1988,7 @@ static void textview_show_avatar(TextView *textview)
                gtk_widget_destroy(textview->image);
        
        textview->image = avatarr->image;
+       textview->avatar_type = avatarr->type;
        avatarr->image = NULL; /* avoid destroying */
        avatars_avatarrender_free(avatarr);
 
@@ -2005,6 +2007,7 @@ bail:
        if (textview->image) 
                gtk_widget_destroy(textview->image);
        textview->image = NULL; 
+       textview->avatar_type = 0;
 }
 
 void textview_show_icon(TextView *textview, const gchar *stock_id)
@@ -2044,6 +2047,9 @@ static void textview_save_contact_pic(TextView *textview)
        if (!msginfo->extradata || !msginfo->extradata->avatars)
                return;
 
+       if (textview->avatar_type > AVATAR_FACE)
+               return;
+
        if (textview->image) 
                picture = gtk_image_get_pixbuf(GTK_IMAGE(textview->image));
 
@@ -2132,6 +2138,7 @@ bail:
        if (textview->image) 
                gtk_widget_destroy(textview->image);
        textview->image = NULL;
+       textview->avatar_type = 0;
 #else
        /* new address book */
 #endif 
index ed36b0bea756db23ccba93bc1d64e5a23e78ccc1..5d478fdb6723da828f5bb2f969b7cdce33fce136 100644 (file)
@@ -78,6 +78,7 @@ struct _TextView
        GtkTextIter uri_hover_start_iter;
        GtkTextIter uri_hover_end_iter;
        GtkWidget *image;
+       gint avatar_type;
        gboolean loading;
        gboolean stop_loading;
        gint prev_quote_level;