| 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 { |