summaryrefslogtreecommitdiff
path: root/gtk/gtktextbtree.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2001-06-14 22:25:23 +0000
committerHavoc Pennington <hp@src.gnome.org>2001-06-14 22:25:23 +0000
commita00219677324464faef05f66ba7e1d2b97229e12 (patch)
treedf2d58a2f756093c8d2393805e98934ecfcd882b /gtk/gtktextbtree.c
parentcf2fab907731469bc0753b4f73b04c11633d336c (diff)
downloadgtk+-a00219677324464faef05f66ba7e1d2b97229e12.tar.gz
fix other typo
2001-06-14 Havoc Pennington <hp@redhat.com> * gtk/gtkwindow.c (window_group_cleanup_grabs): fix other typo * gtk/gtkwidget.c (gtk_widget_propagate_state): fix typo * gtk/gtktextbtree.c: don't leak node data all over the place. * demos/gtk-demo/main.c (main): create fontify tags for the right buffer * gtk/gtktextbuffer.c, gtk/gtktexttagtable.c: enhance docs to mention tags in the same table can't have the same name, suggested by Skip Montanaro 2001-06-11 Havoc Pennington <hp@redhat.com> * gtk/gtktexttagtable.c (gtk_text_tag_table_add): improve warning for trying to add two tags with same name to the tag table * demos/gtk-demo/main.c (main): fix colors ;-)
Diffstat (limited to 'gtk/gtktextbtree.c')
-rw-r--r--gtk/gtktextbtree.c43
1 files changed, 29 insertions, 14 deletions
diff --git a/gtk/gtktextbtree.c b/gtk/gtktextbtree.c
index a10baa9481..40e6ca022c 100644
--- a/gtk/gtktextbtree.c
+++ b/gtk/gtktextbtree.c
@@ -280,6 +280,8 @@ static void gtk_text_btree_node_remove_view (BTreeView
gpointer view_id);
static void gtk_text_btree_node_destroy (GtkTextBTree *tree,
GtkTextBTreeNode *node);
+static void gtk_text_btree_node_free_empty (GtkTextBTree *tree,
+ GtkTextBTreeNode *node);
static NodeData * gtk_text_btree_node_ensure_data (GtkTextBTreeNode *node,
gpointer view_id);
static void gtk_text_btree_node_remove_data (GtkTextBTreeNode *node,
@@ -736,7 +738,7 @@ _gtk_text_btree_delete (GtkTextIter *start,
prevnode->next = curnode->next;
}
parent->num_children--;
- g_free (curnode);
+ gtk_text_btree_node_free_empty (tree, curnode);
curnode = parent;
}
curnode = curline->parent;
@@ -1361,7 +1363,7 @@ _gtk_text_btree_add_view (GtkTextBTree *tree,
GtkTextLineData *line_data;
g_return_if_fail (tree != NULL);
-
+
view = g_new (BTreeView, 1);
view->view_id = layout;
@@ -1390,14 +1392,14 @@ _gtk_text_btree_add_view (GtkTextBTree *tree,
void
_gtk_text_btree_remove_view (GtkTextBTree *tree,
- gpointer view_id)
+ gpointer view_id)
{
BTreeView *view;
GtkTextLine *last_line;
GtkTextLineData *line_data;
g_return_if_fail (tree != NULL);
-
+
view = tree->views;
while (view != NULL)
@@ -1557,9 +1559,9 @@ queue_tag_redisplay (GtkTextBTree *tree,
void
_gtk_text_btree_tag (const GtkTextIter *start_orig,
- const GtkTextIter *end_orig,
- GtkTextTag *tag,
- gboolean add)
+ const GtkTextIter *end_orig,
+ GtkTextTag *tag,
+ gboolean add)
{
GtkTextLineSegment *seg, *prev;
GtkTextLine *cleanupline;
@@ -1577,7 +1579,8 @@ _gtk_text_btree_tag (const GtkTextIter *start_orig,
g_return_if_fail (GTK_IS_TEXT_TAG (tag));
g_return_if_fail (_gtk_text_iter_get_btree (start_orig) ==
_gtk_text_iter_get_btree (end_orig));
-
+ g_return_if_fail (tag->table == _gtk_text_iter_get_btree (start_orig)->table);
+
#if 0
printf ("%s tag %s from %d to %d\n",
add ? "Adding" : "Removing",
@@ -4408,7 +4411,7 @@ static NodeData*
node_data_new (gpointer view_id)
{
NodeData *nd;
-
+
nd = g_new (NodeData, 1);
nd->view_id = view_id;
@@ -4423,7 +4426,6 @@ node_data_new (gpointer view_id)
static void
node_data_destroy (NodeData *nd)
{
-
g_free (nd);
}
@@ -5113,6 +5115,16 @@ gtk_text_btree_node_destroy (GtkTextBTree *tree, GtkTextBTreeNode *node)
}
}
+ gtk_text_btree_node_free_empty (tree, node);
+}
+
+static void
+gtk_text_btree_node_free_empty (GtkTextBTree *tree,
+ GtkTextBTreeNode *node)
+{
+ g_return_if_fail ((node->level > 0 && node->children.node == NULL) ||
+ (node->level == 0 && node->children.line == NULL));
+
summary_list_destroy (node->summary);
node_data_list_destroy (node->node_data);
g_free (node);
@@ -5410,8 +5422,9 @@ gtk_text_btree_rebalance (GtkTextBTree *tree,
{
tree->root_node = node->children.node;
tree->root_node->parent = NULL;
- summary_list_destroy (node->summary);
- g_free (node);
+
+ node->children.node = NULL;
+ gtk_text_btree_node_free_empty (tree, node);
}
return;
}
@@ -5515,8 +5528,10 @@ gtk_text_btree_rebalance (GtkTextBTree *tree,
recompute_node_counts (tree, node);
node->next = other->next;
node->parent->num_children--;
- summary_list_destroy (other->summary);
- g_free (other);
+
+ other->children.node = NULL;
+ other->children.line = NULL;
+ gtk_text_btree_node_free_empty (tree, other);
continue;
}