pidgin/gtkimhtml.c

branch
custom_smiley
changeset 23018
39c5be5ca1e9
parent 23010
6230fac29cee
child 23302
cbe5a85c6c32
equal deleted inserted replaced
23017:82f6abec236d 23018:39c5be5ca1e9
5342 5342
5343 g_object_unref(G_OBJECT(loader)); 5343 g_object_unref(G_OBJECT(loader));
5344 smiley->loader = NULL; 5344 smiley->loader = NULL;
5345 } 5345 }
5346 5346
5347 static void
5348 gtk_custom_smiley_size_prepared(GdkPixbufLoader *loader, gint width, gint height, gpointer data)
5349 {
5350 #define CUSTOM_SMILEY_SIZE 96 /* XXX: Should this be a theme setting? */
5351 if (width <= CUSTOM_SMILEY_SIZE && height <= CUSTOM_SMILEY_SIZE)
5352 return;
5353
5354 if (width >= height) {
5355 height = height * CUSTOM_SMILEY_SIZE / width;
5356 width = CUSTOM_SMILEY_SIZE;
5357 } else {
5358 width = width * CUSTOM_SMILEY_SIZE / height;
5359 height = CUSTOM_SMILEY_SIZE;
5360 }
5361
5362 gdk_pixbuf_loader_set_size(loader, width, height);
5363 }
5364
5347 void 5365 void
5348 gtk_imhtml_smiley_reload(GtkIMHtmlSmiley *smiley) 5366 gtk_imhtml_smiley_reload(GtkIMHtmlSmiley *smiley)
5349 { 5367 {
5350 if (smiley->icon) 5368 if (smiley->icon)
5351 g_object_unref(smiley->icon); 5369 g_object_unref(smiley->icon);
5364 5382
5365 smiley->loader = gdk_pixbuf_loader_new(); 5383 smiley->loader = gdk_pixbuf_loader_new();
5366 5384
5367 g_signal_connect(smiley->loader, "area_prepared", G_CALLBACK(gtk_custom_smiley_allocated), smiley); 5385 g_signal_connect(smiley->loader, "area_prepared", G_CALLBACK(gtk_custom_smiley_allocated), smiley);
5368 g_signal_connect(smiley->loader, "closed", G_CALLBACK(gtk_custom_smiley_closed), smiley); 5386 g_signal_connect(smiley->loader, "closed", G_CALLBACK(gtk_custom_smiley_closed), smiley);
5387 g_signal_connect(smiley->loader, "size_prepared", G_CALLBACK(gtk_custom_smiley_size_prepared), smiley);
5369 } 5388 }
5370 5389
5371 GtkIMHtmlSmiley *gtk_imhtml_smiley_create(const char *file, const char *shortcut, gboolean hide, 5390 GtkIMHtmlSmiley *gtk_imhtml_smiley_create(const char *file, const char *shortcut, gboolean hide,
5372 GtkIMHtmlSmileyFlags flags) 5391 GtkIMHtmlSmileyFlags flags)
5373 { 5392 {

mercurial