Mercurial > pidgin
comparison pidgin/gtkimhtml.c @ 32667:e2a1510da13d
propagate from branch 'im.pidgin.pidgin' (head 5da91575f92c8c13d7a85eef338ec6da55e6fb26)
to branch 'im.pidgin.cpw.qulogic.gtk3' (head 53d36fd22e482079303664b9f3e13fa2a4b6f9b2)
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Mon, 22 Aug 2011 21:27:03 +0000 |
parents | a053474df2e9 323876c34a96 |
children | 3828a61c44da |
comparison
equal
deleted
inserted
replaced
32666:974722699032 | 32667:e2a1510da13d |
---|---|
5093 gpointer data; | 5093 gpointer data; |
5094 size_t len; | 5094 size_t len; |
5095 | 5095 |
5096 data = imhtml->funcs->image_get_data(image); | 5096 data = imhtml->funcs->image_get_data(image); |
5097 len = imhtml->funcs->image_get_size(image); | 5097 len = imhtml->funcs->image_get_size(image); |
5098 | 5098 if (data && len) |
5099 if (data && len) { | 5099 anim = pidgin_pixbuf_anim_from_data(data, len); |
5100 GdkPixbufLoader *loader = gdk_pixbuf_loader_new(); | |
5101 gdk_pixbuf_loader_write(loader, data, len, NULL); | |
5102 gdk_pixbuf_loader_close(loader, NULL); | |
5103 anim = gdk_pixbuf_loader_get_animation(loader); | |
5104 if (anim) | |
5105 g_object_ref(G_OBJECT(anim)); | |
5106 g_object_unref(G_OBJECT(loader)); | |
5107 } | |
5108 | 5100 |
5109 } | 5101 } |
5110 | 5102 |
5111 if (anim) { | 5103 if (anim) { |
5112 struct im_image_data *t = g_new(struct im_image_data, 1); | 5104 struct im_image_data *t = g_new(struct im_image_data, 1); |
5442 tags = g_slist_reverse(tags); | 5434 tags = g_slist_reverse(tags); |
5443 for (sl = tags; sl; sl = sl->next) { | 5435 for (sl = tags; sl; sl = sl->next) { |
5444 tag = sl->data; | 5436 tag = sl->data; |
5445 /** don't worry about non-printing tags ending */ | 5437 /** don't worry about non-printing tags ending */ |
5446 if (tag_ends_here(tag, &iter, &next_iter) && | 5438 if (tag_ends_here(tag, &iter, &next_iter) && |
5447 strlen(tag_to_html_end(tag)) > 0 && | 5439 *tag_to_html_end(tag) && |
5448 strlen(tag_to_html_start(tag)) > 0) { | 5440 *tag_to_html_start(tag)) |
5449 | 5441 { |
5450 PidginTextTagData *tmp; | 5442 PidginTextTagData *tmp; |
5451 GQueue *r = g_queue_new(); | 5443 GQueue *r = g_queue_new(); |
5452 | 5444 |
5453 while ((tmp = g_queue_pop_tail(q)) && tmp->tag != tag) { | 5445 while ((tmp = g_queue_pop_tail(q)) && tmp->tag != tag) { |
5454 g_string_append(str, tmp->end); | 5446 g_string_append(str, tmp->end); |
5766 } | 5758 } |
5767 | 5759 |
5768 static void | 5760 static void |
5769 gtk_custom_smiley_size_prepared(GdkPixbufLoader *loader, gint width, gint height, gpointer data) | 5761 gtk_custom_smiley_size_prepared(GdkPixbufLoader *loader, gint width, gint height, gpointer data) |
5770 { | 5762 { |
5771 #define CUSTOM_SMILEY_SIZE 96 /* XXX: Should this be a theme setting? */ | 5763 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/resize_custom_smileys")) { |
5772 if (width <= CUSTOM_SMILEY_SIZE && height <= CUSTOM_SMILEY_SIZE) | 5764 int custom_smileys_size = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/custom_smileys_size"); |
5773 return; | 5765 if (width <= custom_smileys_size && height <= custom_smileys_size) |
5774 | 5766 return; |
5775 if (width >= height) { | 5767 |
5776 height = height * CUSTOM_SMILEY_SIZE / width; | 5768 if (width >= height) { |
5777 width = CUSTOM_SMILEY_SIZE; | 5769 height = height * custom_smileys_size / width; |
5778 } else { | 5770 width = custom_smileys_size; |
5779 width = width * CUSTOM_SMILEY_SIZE / height; | 5771 } else { |
5780 height = CUSTOM_SMILEY_SIZE; | 5772 width = width * custom_smileys_size / height; |
5781 } | 5773 height = custom_smileys_size; |
5782 | 5774 } |
5775 } | |
5783 gdk_pixbuf_loader_set_size(loader, width, height); | 5776 gdk_pixbuf_loader_set_size(loader, width, height); |
5784 } | 5777 } |
5785 | 5778 |
5786 void | 5779 void |
5787 gtk_imhtml_smiley_reload(GtkIMHtmlSmiley *smiley) | 5780 gtk_imhtml_smiley_reload(GtkIMHtmlSmiley *smiley) |