From: Olaf Wintermann Date: Thu, 20 Mar 2025 20:14:03 +0000 (+0100) Subject: ref GtkTextChildAnchor in EmbeddedWidget X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=1e83ab90587bedcccb9b0a7c8e117baad79dcffe;p=note.git ref GtkTextChildAnchor in EmbeddedWidget --- diff --git a/application/gtk-text.c b/application/gtk-text.c index 1c2ef4a..f95ab26 100644 --- a/application/gtk-text.c +++ b/application/gtk-text.c @@ -200,7 +200,9 @@ static void editor_set_buffer_cb( CxIterator i = cxListIterator(embedded_objects->objects); cx_foreach(EmbeddedWidget *, w, i) { - gtk_text_view_add_child_at_anchor(textview, w->widget, w->anchor); + if(!gtk_text_child_anchor_get_deleted(w->anchor)) { + gtk_text_view_add_child_at_anchor(textview, w->widget, w->anchor); + } } } @@ -224,19 +226,7 @@ static void editor_delete_range_cb( const GtkTextIter *end, NoteEditor *editor) { - BufferEmbeddedObjects *em = g_object_get_data(G_OBJECT(buffer), "embedded"); - if(!em) { - return; - } - GtkTextIter iter = *start; - while (!gtk_text_iter_equal(&iter, end)) { - GtkTextChildAnchor *anchor = gtk_text_iter_get_child_anchor(&iter); - if(anchor) { - em_remove_anchor(em, anchor); - } - gtk_text_iter_forward_cursor_position(&iter); - } } static gboolean path_is_image_file(cxstring path) { @@ -296,6 +286,7 @@ static void editor_attach_image(NoteEditor *editor, GdkPixbuf *pixbuf) { em->anchor = anchor; em->restore = NULL; g_object_ref(image); + g_object_ref(anchor); BufferEmbeddedObjects *embedded_objects = g_object_get_data(G_OBJECT(buffer), "embedded"); cxListAdd(embedded_objects->objects, em); @@ -448,6 +439,7 @@ static void buffer_embedded_objects_free(BufferEmbeddedObjects *em) { static void embedded_widget_free(EmbeddedWidget *w) { g_object_unref(w->widget); + g_object_unref(w->anchor); free(w); }