void gtk_text_child_anchor_queue_resize (GtkTextChildAnchor *anchor, GtkTextLayout *layout) { GtkTextIter start; GtkTextIter end; GtkTextLineSegment *seg; g_return_if_fail (GTK_IS_TEXT_CHILD_ANCHOR (anchor)); g_return_if_fail (GTK_IS_TEXT_LAYOUT (layout)); CHECK_IN_BUFFER (anchor); seg = anchor->segment; if (seg->body.child.tree == NULL) return; gtk_text_buffer_get_iter_at_child_anchor (layout->buffer, &start, anchor); end = start; gtk_text_iter_forward_char (&end); gtk_text_layout_invalidate (layout, &start, &end); }
void MergeDialog::on_mergebutton(GtkButton * button) // If a merge button is clicked, it inserts the right text, and deletes // the pair of buttons. { GtkWidget *mybutton = GTK_WIDGET(button); for (unsigned int i = 0; i < buttonpairs.size(); i++) { bool match = false; if (mybutton == buttonpairs[i].button1.button) match = true; if (mybutton == buttonpairs[i].button2.button) match = true; if (match) { ustring text; if (mybutton == buttonpairs[i].button1.button) { text = buttonpairs[i].button1.text; } if (mybutton == buttonpairs[i].button2.button) { text = buttonpairs[i].button2.text; } if (text == empty_text()) text.clear(); GtkTextIter iter, iter2; gtk_text_buffer_get_iter_at_child_anchor(textbuffer, &iter, buttonpairs[i].button1.childanchor); gtk_text_buffer_place_cursor(textbuffer, &iter); iter2 = iter; gtk_text_iter_forward_char(&iter2); gtk_text_buffer_delete(textbuffer, &iter, &iter2); gtk_text_buffer_get_iter_at_child_anchor(textbuffer, &iter, buttonpairs[i].button2.childanchor); iter2 = iter; gtk_text_iter_forward_char(&iter2); gtk_text_buffer_delete(textbuffer, &iter, &iter2); if (!text.empty()) gtk_text_buffer_insert_at_cursor(textbuffer, text.c_str(), -1); } } }