From: Olaf Wintermann Date: Sun, 20 Apr 2025 09:22:57 +0000 (+0200) Subject: don't load attachment images twice X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=3a6e91c7e4e0f5f65320af1f25eb17366bcdc0f8;p=note.git don't load attachment images twice --- diff --git a/application/gtk-text.c b/application/gtk-text.c index 070419c..b6e4259 100644 --- a/application/gtk-text.c +++ b/application/gtk-text.c @@ -718,37 +718,29 @@ void editor_apply_styles(Resource *note, UIWIDGET textview, UiText *text, CxList cx_foreach(MDDocStyleSection*, sec, i) { if(sec->length == MDDocStyleSection_IMAGE) { Attachment *attachment = note_get_attachment(note, sec->link); - if(attachment && attachment->bin_content.length > 0) { - // we can use ui_image_load_data to load the image, but we - // need an UiGeneric object for that - UiGeneric imgobj; - memset(&imgobj, 0, sizeof(UiGeneric)); - if(!ui_image_load_data(&imgobj, attachment->bin_content.ptr, attachment->bin_content.length)) { - GdkPixbuf *pixbuf = imgobj.value; + if(attachment && attachment->ui->img->value) { + GdkPixbuf *pixbuf = attachment->ui->img->value; - // TODO: remove code dup - GtkTextIter iter; - gtk_text_buffer_get_iter_at_offset(buffer, &iter, sec->pos); - GtkTextChildAnchor *anchor = gtk_text_buffer_create_child_anchor(buffer, &iter); - GtkWidget *image = embedded_image_create(pixbuf); - gtk_text_view_add_child_at_anchor(GTK_TEXT_VIEW(textview), image, anchor); - - EmbeddedWidget *em = malloc(sizeof(EmbeddedWidget)); - em->widget = image; - em->anchor = anchor; - em->data1 = attachment; - em->data2 = NULL; - em->serialize = md_serialize_image; - g_object_ref(image); - g_object_ref(anchor); - - BufferEmbeddedObjects *embedded_objects = g_object_get_data(G_OBJECT(buffer), "embedded"); - cxListAdd(embedded_objects->objects, em); - - g_object_set_data(G_OBJECT(anchor), "em", em); - } else { - fprintf(stderr, "Error: cannot load image data\n"); - } + // TODO: remove code dup + GtkTextIter iter; + gtk_text_buffer_get_iter_at_offset(buffer, &iter, sec->pos); + GtkTextChildAnchor *anchor = gtk_text_buffer_create_child_anchor(buffer, &iter); + GtkWidget *image = embedded_image_create(pixbuf); + gtk_text_view_add_child_at_anchor(GTK_TEXT_VIEW(textview), image, anchor); + + EmbeddedWidget *em = malloc(sizeof(EmbeddedWidget)); + em->widget = image; + em->anchor = anchor; + em->data1 = attachment; + em->data2 = NULL; + em->serialize = md_serialize_image; + g_object_ref(image); + g_object_ref(anchor); + + BufferEmbeddedObjects *embedded_objects = g_object_get_data(G_OBJECT(buffer), "embedded"); + cxListAdd(embedded_objects->objects, em); + + g_object_set_data(G_OBJECT(anchor), "em", em); } else { // TODO: what do we do in this case? }