]> uap-core.de Git - note.git/commitdiff
don't load attachment images twice
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 20 Apr 2025 09:22:57 +0000 (11:22 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 20 Apr 2025 09:22:57 +0000 (11:22 +0200)
application/gtk-text.c

index 070419c263a42960e0d719b2ea3991438adfd74b..b6e42590909904a2dc818f3c788959af903c47ed 100644 (file)
@@ -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?
             }