pidgin/gtkimhtml.c

changeset 22703
2cc5d0981559
parent 22596
0854ae660ef4
child 22737
3535c4e90c39
child 22772
34ab3bb905cc
equal deleted inserted replaced
22702:bccd324d76c5 22703:2cc5d0981559
3294 return FALSE; 3294 return FALSE;
3295 } 3295 }
3296 3296
3297 GtkIMHtmlScalable *gtk_imhtml_animation_new(GdkPixbufAnimation *anim, const gchar *filename, int id) 3297 GtkIMHtmlScalable *gtk_imhtml_animation_new(GdkPixbufAnimation *anim, const gchar *filename, int id)
3298 { 3298 {
3299 GtkIMHtmlImage *im_image = g_malloc(sizeof(GtkIMHtmlAnimation)); 3299 GtkIMHtmlImage *im_image = (GtkIMHtmlImage *) g_new0(GtkIMHtmlAnimation, 1);
3300 3300
3301 GTK_IMHTML_SCALABLE(im_image)->scale = gtk_imhtml_image_scale; 3301 GTK_IMHTML_SCALABLE(im_image)->scale = gtk_imhtml_image_scale;
3302 GTK_IMHTML_SCALABLE(im_image)->add_to = gtk_imhtml_image_add_to; 3302 GTK_IMHTML_SCALABLE(im_image)->add_to = gtk_imhtml_image_add_to;
3303 GTK_IMHTML_SCALABLE(im_image)->free = gtk_imhtml_animation_free; 3303 GTK_IMHTML_SCALABLE(im_image)->free = gtk_imhtml_animation_free;
3304 3304
3305 GTK_IMHTML_ANIMATION(im_image)->anim = anim; 3305 GTK_IMHTML_ANIMATION(im_image)->anim = anim;
3306 if (gdk_pixbuf_animation_is_static_image(anim)) { 3306 if (gdk_pixbuf_animation_is_static_image(anim)) {
3307 GTK_IMHTML_ANIMATION(im_image)->iter = NULL;
3308 im_image->pixbuf = gdk_pixbuf_animation_get_static_image(anim); 3307 im_image->pixbuf = gdk_pixbuf_animation_get_static_image(anim);
3309 g_object_ref(im_image->pixbuf); 3308 g_object_ref(im_image->pixbuf);
3310 GTK_IMHTML_ANIMATION(im_image)->timer = 0;
3311 } else { 3309 } else {
3312 int delay; 3310 int delay;
3313 GdkPixbuf *pb; 3311 GdkPixbuf *pb;
3314 GTK_IMHTML_ANIMATION(im_image)->iter = gdk_pixbuf_animation_get_iter(anim, NULL); 3312 GTK_IMHTML_ANIMATION(im_image)->iter = gdk_pixbuf_animation_get_iter(anim, NULL);
3315 pb = gdk_pixbuf_animation_iter_get_pixbuf(GTK_IMHTML_ANIMATION(im_image)->iter); 3313 pb = gdk_pixbuf_animation_iter_get_pixbuf(GTK_IMHTML_ANIMATION(im_image)->iter);
3318 GTK_IMHTML_ANIMATION(im_image)->timer = g_timeout_add(delay, animate_image_cb, im_image); 3316 GTK_IMHTML_ANIMATION(im_image)->timer = g_timeout_add(delay, animate_image_cb, im_image);
3319 } 3317 }
3320 im_image->image = GTK_IMAGE(gtk_image_new_from_pixbuf(im_image->pixbuf)); 3318 im_image->image = GTK_IMAGE(gtk_image_new_from_pixbuf(im_image->pixbuf));
3321 im_image->width = gdk_pixbuf_animation_get_width(anim); 3319 im_image->width = gdk_pixbuf_animation_get_width(anim);
3322 im_image->height = gdk_pixbuf_animation_get_height(anim); 3320 im_image->height = gdk_pixbuf_animation_get_height(anim);
3323 im_image->mark = NULL;
3324 im_image->filename = g_strdup(filename); 3321 im_image->filename = g_strdup(filename);
3325 im_image->id = id; 3322 im_image->id = id;
3326 im_image->filesel = NULL;
3327 3323
3328 g_object_ref(anim); 3324 g_object_ref(anim);
3329 3325
3330 return GTK_IMHTML_SCALABLE(im_image); 3326 return GTK_IMHTML_SCALABLE(im_image);
3331 } 3327 }
3617 if (!anim) 3613 if (!anim)
3618 return FALSE; 3614 return FALSE;
3619 3615
3620 image = gtk_imhtml_animation_new(anim, smiley->smile, 0); 3616 image = gtk_imhtml_animation_new(anim, smiley->smile, 0);
3621 ret = gtk_imhtml_image_clicked(w, event, (GtkIMHtmlImage*)image); 3617 ret = gtk_imhtml_image_clicked(w, event, (GtkIMHtmlImage*)image);
3622 g_object_set_data_full(G_OBJECT(w), "image-data", image, (GDestroyNotify)gtk_imhtml_image_free); 3618 g_object_set_data_full(G_OBJECT(w), "image-data", image, (GDestroyNotify)gtk_imhtml_animation_free);
3623 return ret; 3619 return ret;
3624 } 3620 }
3625 3621
3626 void gtk_imhtml_image_free(GtkIMHtmlScalable *scale) 3622 void gtk_imhtml_image_free(GtkIMHtmlScalable *scale)
3627 { 3623 {

mercurial