]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtktextbtree.c
remove g_assert_not_reached() that was bogus, since we demand-create the
[~andy/gtk] / gtk / gtktextbtree.c
index 2f03b58079189553ba51ab989e6c13a9c6a29791..87713ff40b41f131f9141c8b0dbf8d2ad558e49e 100644 (file)
@@ -184,7 +184,7 @@ struct _GtkTextBTree {
   BTreeView *views;
   GSList *tag_infos;
   guint tag_changed_handler;
-  guint tag_removed_handler;
+
   /* Incremented when a segment with a byte size > 0
    * is added to or removed from the tree (i.e. the
    * length of a line may have changed, and lines may
@@ -315,9 +315,6 @@ static void tag_changed_cb        (GtkTextTagTable  *table,
                                    GtkTextTag       *tag,
                                    gboolean          size_changed,
                                    GtkTextBTree     *tree);
-static void tag_removed_cb        (GtkTextTagTable  *table,
-                                   GtkTextTag       *tag,
-                                   GtkTextBTree     *tree);
 static void cleanup_line          (GtkTextLine      *line);
 static void recompute_node_counts (GtkTextBTree     *tree,
                                    GtkTextBTreeNode *node);
@@ -436,11 +433,6 @@ _gtk_text_btree_new (GtkTextTagTable *table,
                                                G_CALLBACK (tag_changed_cb),
                                                tree);
 
-  tree->tag_removed_handler = g_signal_connect (G_OBJECT (tree->table),
-                                               "tag_removed",
-                                               G_CALLBACK (tag_removed_cb),
-                                               tree);
-
   tree->mark_table = g_hash_table_new (g_str_hash, g_str_equal);
   tree->child_anchor_table = NULL;
   
@@ -519,9 +511,6 @@ _gtk_text_btree_unref (GtkTextBTree *tree)
       g_signal_handler_disconnect (G_OBJECT (tree->table),
                                    tree->tag_changed_handler);
 
-      g_signal_handler_disconnect (G_OBJECT (tree->table),
-                                   tree->tag_removed_handler);
-
       g_object_unref (G_OBJECT (tree->table));
 
       g_free (tree);
@@ -942,8 +931,8 @@ _gtk_text_btree_delete (GtkTextIter *start,
 
 void
 _gtk_text_btree_insert (GtkTextIter *iter,
-                       const gchar *text,
-                       gint len)
+                        const gchar *text,
+                        gint         len)
 {
   GtkTextLineSegment *prev_seg;     /* The segment just before the first
                                      * new segment (NULL means new segment
@@ -980,10 +969,15 @@ _gtk_text_btree_insert (GtkTextIter *iter,
   /* extract iterator info */
   tree = _gtk_text_iter_get_btree (iter);
   line = _gtk_text_iter_get_text_line (iter);
+  
   start_line = line;
   start_byte_index = gtk_text_iter_get_line_index (iter);
 
-  /* Get our insertion segment split */
+  /* Get our insertion segment split. Note this assumes line allows
+   * char insertions, which isn't true of the "last" line. But iter
+   * should not be on that line, as we assert here.
+   */
+  g_assert (!_gtk_text_line_is_last (line, tree));
   prev_seg = gtk_text_line_segment_split (iter);
   cur_seg = prev_seg;
 
@@ -5475,10 +5469,9 @@ tag_changed_cb (GtkTextTagTable *table,
     }
 }
 
-static void
-tag_removed_cb (GtkTextTagTable *table,
-                GtkTextTag *tag,
-                GtkTextBTree *tree)
+void
+_gtk_text_btree_notify_will_remove_tag (GtkTextBTree    *tree,
+                                        GtkTextTag      *tag)
 {
   /* Remove the tag from the tree */
 
@@ -5847,9 +5840,6 @@ gtk_text_btree_remove_tag_info (GtkTextBTree *tree,
 
       list = g_slist_next (list);
     }
-
-  g_assert_not_reached ();
-  return;
 }
 
 static void