Example #1
0
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);
}
Example #2
0
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);
    }
  }
}