diff options
author | Havoc Pennington <hp@redhat.com> | 2001-12-05 01:43:48 +0000 |
---|---|---|
committer | Havoc Pennington <hp@src.gnome.org> | 2001-12-05 01:43:48 +0000 |
commit | 6b1407a3eccd772a6ad25e058bd0b0a9881f9ccb (patch) | |
tree | 75861622240b902dfe2e85cc5c2419f7a1abae2f /gtk/gtktextbuffer.c | |
parent | a7bab735ad1ef4d8e5736f58b50c9003aa244e8f (diff) | |
download | gtk+-6b1407a3eccd772a6ad25e058bd0b0a9881f9ccb.tar.gz |
remove g_assert_not_reached() that was bogus, since we demand-create the
2001-12-04 Havoc Pennington <hp@redhat.com>
* gtk/gtktextbtree.c (gtk_text_btree_remove_tag_info): remove
g_assert_not_reached() that was bogus, since we demand-create the
tag info. reported by Chris Phelps
Jump through assorted hoops to fix bug from Chris Phelps where
removing tags from the table resulted in btree trying to
access tag->table
* gtk/gtktextbuffer.c: set up mechanics of adding/removing
ourselves to the tag table
* gtk/gtktexttagtable.c (_gtk_text_tag_table_add_buffer)
(_gtk_text_tag_table_remove_buffer): private cruft to
let us notify buffer of disappearing tags
* gtk/gtktexttag.h: remove BTreeNode typedef from this public
header, put it in tagprivate
* gtk/gtktextbtree.c (_gtk_text_btree_new): don't connect to
tag_removed; it's emitted too late.
(_gtk_text_btree_notify_will_remove_tag): rename tag_remove_cb to
this
Padding for ABI-compat expansion
* gtk/gtktexttag.h (struct _GtkTextAttributes): pad this
(struct _GtkTextAppearance): one pad in here too
* gtk/gtktextlayout.h (struct _GtkTextLayoutClass): padding here
* gtk/gtktextview.h (struct _GtkTextViewClass): more padding,
since action signals etc. seem pretty likely
* gtk/gtktextbuffer.h (struct _GtkTextBufferClass): padding
* gtk/gtktexttag.h (struct _GtkTextTagClass): padding
* gtk/gtktexttagtable.h (struct _GtkTextTagTableClass): padding
Diffstat (limited to 'gtk/gtktextbuffer.c')
-rw-r--r-- | gtk/gtktextbuffer.c | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c index 011bedf73b..715153c9ad 100644 --- a/gtk/gtktextbuffer.c +++ b/gtk/gtktextbuffer.c @@ -327,6 +327,8 @@ gtk_text_buffer_new (GtkTextTagTable *table) text_buffer->tag_table = table; g_object_ref (G_OBJECT (text_buffer->tag_table)); + + _gtk_text_tag_table_add_buffer (table, text_buffer); } return text_buffer; @@ -344,6 +346,7 @@ gtk_text_buffer_finalize (GObject *object) if (buffer->tag_table) { + _gtk_text_tag_table_remove_buffer (buffer->tag_table, buffer); g_object_unref (G_OBJECT (buffer->tag_table)); buffer->tag_table = NULL; } @@ -366,7 +369,10 @@ static GtkTextTagTable* get_table (GtkTextBuffer *buffer) { if (buffer->tag_table == NULL) - buffer->tag_table = gtk_text_tag_table_new (); + { + buffer->tag_table = gtk_text_tag_table_new (); + _gtk_text_tag_table_add_buffer (buffer->tag_table, buffer); + } return buffer->tag_table; } @@ -376,7 +382,7 @@ get_btree (GtkTextBuffer *buffer) { if (buffer->btree == NULL) buffer->btree = _gtk_text_btree_new (gtk_text_buffer_get_tag_table (buffer), - buffer); + buffer); return buffer->btree; } @@ -3502,6 +3508,19 @@ _gtk_text_buffer_get_line_log_attrs (GtkTextBuffer *buffer, return cache->entries[0].attrs; } +void +_gtk_text_buffer_notify_will_remove_tag (GtkTextBuffer *buffer, + GtkTextTag *tag) +{ + /* This removes tag from the buffer, but DOESN'T emit the + * remove_tag signal, because we can't afford to have user + * code messing things up at this point; the tag MUST be removed + * entirely. + */ + if (buffer->btree) + _gtk_text_btree_notify_will_remove_tag (buffer->btree, tag); +} + /* * Debug spew */ @@ -3511,8 +3530,3 @@ _gtk_text_buffer_spew (GtkTextBuffer *buffer) { _gtk_text_btree_spew (get_btree (buffer)); } - - - - - |