}
void md_serialize_image(EmbeddedWidget *em, CxBuffer *out) {
- cx_bprintf(out, "", em->name);
+ Attachment *attachment = em->data1;
+ cx_bprintf(out, "", attachment->name);
}
static void editor_attach_image(NoteEditor *editor, GdkPixbuf *pixbuf, char *attachment_path) {
EmbeddedWidget *em = malloc(sizeof(EmbeddedWidget));
em->widget = image;
em->anchor = anchor;
- //em->name = attachment_path ? strdup(util_resource_name(attachment_path)) : NULL;
- //em->path = attachment_path;
- em->data1 = pixbuf;
+ em->data1 = attachment;
em->data2 = NULL;
em->serialize = md_serialize_image;
g_object_ref(image);
struct EmbeddedWidget {
GtkWidget *widget;
GtkTextChildAnchor *anchor;
- char *name;
- char *path;
void *data1;
void *data2;
void (*serialize)(EmbeddedWidget *e, CxBuffer *out);
GdkPixbuf *pixbuf = value->value;
value->value = NULL;
ui_imageviewer_set(value, pixbuf, UI_IMAGE_OBJECT_TYPE);
+ g_object_unref(pixbuf);
}
}
}
GdkPixbuf *pixbuf = value;
+ g_object_ref(pixbuf);
UiImageViewer *imgviewer = g->obj;
g->value = pixbuf;
if(obj->set) {
obj->set(obj, pixbuf, UI_IMAGE_OBJECT_TYPE);
+ g_object_unref(pixbuf);
} else {
obj->value = pixbuf;
}
-
+
return 0;
}
+void ui_image_ref(UIIMAGE img) {
+ g_object_ref(img);
+}
+
+void ui_image_unref(UIIMAGE img) {
+ g_object_unref(img);
+}
+
#if GTK_MAJOR_VERSION >= 4
gboolean ui_imageviewer_scroll(
#define UI_IMAGE_OBJECT_TYPE "image"
+#ifdef UI_GTK
+#define UIIMAGE GdkPixbuf*
+#else
+#define UIIMAGE void*
+#endif
+
+
typedef struct UiImageViewerArgs {
UiTri fill;
UiBool hexpand;
UIEXPORT int ui_image_load_file(UiGeneric *obj, const char *path);
+UIEXPORT void ui_image_ref(UIIMAGE img);
+UIEXPORT void ui_image_unref(UIIMAGE img);
+
#ifdef __cplusplus
}
#endif