public void Split (Gtk.TextIter iter, Gtk.TextBuffer buffer) { foreach (Gtk.TextTag tag in iter.Tags) { NoteTag noteTag = tag as NoteTag; if (noteTag != null && !noteTag.CanSplit) { Gtk.TextIter start = iter; Gtk.TextIter end = iter; // We only care about enclosing tags if (start.TogglesTag (tag) || end.TogglesTag (tag)) continue; start.BackwardToTagToggle (tag); end.ForwardToTagToggle (tag); AddSplitTag (start, end, tag); buffer.RemoveTag(tag, start, end); } } }
public void Redo (Gtk.TextBuffer buffer) { Gtk.TextIter start_iter, end_iter; start_iter = buffer.GetIterAtOffset (start); end_iter = buffer.GetIterAtOffset (end); buffer.MoveMark (buffer.SelectionBound, start_iter); buffer.RemoveTag (tag, start_iter, end_iter); buffer.MoveMark (buffer.InsertMark, end_iter); }
protected void RemoveSplitTags (Gtk.TextBuffer buffer) { foreach (TagData tag in splitTags) { Gtk.TextIter start = buffer.GetIterAtOffset (tag.start); Gtk.TextIter end = buffer.GetIterAtOffset (tag.end); buffer.RemoveTag(tag.tag, start, end); } }