- Original Message
From: Samuel Lidén Borell [EMAIL PROTECTED]
To: gtk-app-devel-list@gnome.org
Sent: Tuesday, October 24, 2006 1:49:54 PM
Subject: GtkTextView: Applying tags at the cursor
Hi,
I'm working on a web site creation software that uses Gtk, Glade and
Python for the UI. I'm using the GtkTextView widget to let the user edit
text with basic formatting but I have a question:
How do I apply a tag at the cursor so that inserted text gets it's
formatting? Right now I surround the cursor with two zero-width spaces
(an invisible Unicode character) and then I apply the tag to the spaces.
This gives new text the right formatting, but it's an ugly solution that
has some bugs...
-
I'm not sure there you can just add a tag at the current cursor position. I'm
creating the GTK2 bindings for the language Pike, and in my tests I created an
array of tags that I need to apply at a certain position, then I added the text
for that position, then applied that tags for that text range. Something like
this:
void insert_text(char *text) {
GtkTextIter *start,*end,*iter;
GtkTextMark *mark;
mark=gtk_text_buffer_get_insert(GTK_TEXT_BUFFER(buffer));
gtk_text_buffer_get_iter_at_mark(GTK_TEXT_BUFFER(buffer),start,mark);
*start=*iter;
gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer),text,-1);
mark=gtk_text_buffer_get_insert(GTK_TEXT_BUFFER(buffer));
gtk_text_buffer_get_iter_at_mark(GTK_TEXT_BUFFER(buffer),end,mark);
/* foreach tag */
gtk_text_buffer_apply_tag(GTK_TEXT_BUFFER(buffer),tag,start,end);
/* end */
}
I fudged on the foreach array iteration. I have it simpler in pike, but
basically the same thing.
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list