Mercurial > pidgin
changeset 23139:55e42ccdca4c
Patch from Masca to restrict the size of incoming custom smileys to a
maximum of 96 pixels on either side. Closes #5231.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sun, 11 May 2008 18:08:57 +0000 |
parents | b37b9e53a31b |
children | a372713e405c |
files | pidgin/gtkimhtml.c |
diffstat | 1 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/pidgin/gtkimhtml.c Sun May 11 04:08:06 2008 +0000 +++ b/pidgin/gtkimhtml.c Sun May 11 18:08:57 2008 +0000 @@ -5344,6 +5344,24 @@ smiley->loader = NULL; } +static void +gtk_custom_smiley_size_prepared(GdkPixbufLoader *loader, gint width, gint height, gpointer data) +{ +#define CUSTOM_SMILEY_SIZE 96 /* XXX: Should this be a theme setting? */ + if (width <= CUSTOM_SMILEY_SIZE && height <= CUSTOM_SMILEY_SIZE) + return; + + if (width >= height) { + height = height * CUSTOM_SMILEY_SIZE / width; + width = CUSTOM_SMILEY_SIZE; + } else { + width = width * CUSTOM_SMILEY_SIZE / height; + height = CUSTOM_SMILEY_SIZE; + } + + gdk_pixbuf_loader_set_size(loader, width, height); +} + void gtk_imhtml_smiley_reload(GtkIMHtmlSmiley *smiley) { @@ -5366,6 +5384,7 @@ g_signal_connect(smiley->loader, "area_prepared", G_CALLBACK(gtk_custom_smiley_allocated), smiley); g_signal_connect(smiley->loader, "closed", G_CALLBACK(gtk_custom_smiley_closed), smiley); + g_signal_connect(smiley->loader, "size_prepared", G_CALLBACK(gtk_custom_smiley_size_prepared), smiley); } GtkIMHtmlSmiley *gtk_imhtml_smiley_create(const char *file, const char *shortcut, gboolean hide,