--- a/talkatu/talkatuactiongroup.c Sat Jul 13 09:05:59 2019 -0500
+++ b/talkatu/talkatuactiongroup.c Sat Jul 13 09:07:50 2019 -0500
@@ -331,27 +331,47 @@
GtkWidget *link_dialog = talkatu_link_dialog_new();
if(gtk_dialog_run(GTK_DIALOG(link_dialog)) == GTK_RESPONSE_ACCEPT) {
- GtkTextChildAnchor *anchor = NULL;
+ GtkTextTagTable *table = gtk_text_buffer_get_tag_table(buffer); + GtkTextTag *anchor, *anchor_data; GtkTextMark *insert_mark = NULL;
- gchar *url = NULL, *label = NULL;
+ gchar *label = NULL, *url = NULL; + /* if any text is selected, delete it */ if(gtk_text_buffer_get_has_selection(buffer)) {
gtk_text_buffer_delete_selection(buffer, TRUE, TRUE);
+ /* grab our inputs from the dialog */ + url = talkatu_link_dialog_get_url(TALKATU_LINK_DIALOG(link_dialog)); + label = talkatu_link_dialog_get_display_text(TALKATU_LINK_DIALOG(link_dialog)); + /* find the anchor tag from the table */ + anchor = gtk_text_tag_table_lookup(table, TALKATU_TAG_ANCHOR); + g_return_if_fail(GTK_IS_TEXT_TAG(anchor)); + /* now create an anonymous tag that will hold the url. + * This should probably be dedupped at some point, but pidgin 2 didn't + anchor_data = gtk_text_tag_new(NULL); + g_object_set_data_full(G_OBJECT(anchor_data), "talkatu-anchor-url", url, g_free); + gtk_text_tag_table_add(table, anchor_data); insert_mark = gtk_text_buffer_get_insert(buffer);
gtk_text_buffer_get_iter_at_mark(buffer, &insert, insert_mark);
- anchor = gtk_text_buffer_create_child_anchor(buffer, &insert);
- url = talkatu_link_dialog_get_url(TALKATU_LINK_DIALOG(link_dialog));
- g_object_set_data_full(G_OBJECT(anchor), "talkatu-url", url, g_free);
+ gtk_text_buffer_insert_with_tags( - label = talkatu_link_dialog_get_display_text(TALKATU_LINK_DIALOG(link_dialog));
- g_object_set_data_full(G_OBJECT(anchor), "talkatu-url-label", label, g_free);
- gtk_text_buffer_insert_child_anchor(buffer, &insert, anchor);
gtk_widget_destroy(link_dialog);