? docs/reference/gtk/tmpl/gtkaccelmap.sgml
? docs/reference/gtk/tmpl/gtkaccessible.sgml
? docs/reference/gtk/tmpl/gtkpacker.sgml
? gtk/foo.ps
? gtk/out
? tests/festival_server
? tests/festival_server.scm
? tests/festival_sleep_pid
? tests/festival_wrapper_pid
Index: docs/reference/gtk/tmpl/gtkmessagedialog.sgml
===================================================================
RCS file: /cvs/gnome/gtk+/docs/reference/gtk/tmpl/gtkmessagedialog.sgml,v
retrieving revision 1.2
diff -u -r1.2 gtkmessagedialog.sgml
--- docs/reference/gtk/tmpl/gtkmessagedialog.sgml 2000/11/01 16:01:17 1.2
+++ docs/reference/gtk/tmpl/gtkmessagedialog.sgml 2001/11/16 22:06:35
@@ -102,3 +102,13 @@
@Returns:
+
+
+
+
+
+
+
+
+
+
Index: docs/reference/gtk/tmpl/gtktreeview.sgml
===================================================================
RCS file: /cvs/gnome/gtk+/docs/reference/gtk/tmpl/gtktreeview.sgml,v
retrieving revision 1.12
diff -u -r1.12 gtktreeview.sgml
--- docs/reference/gtk/tmpl/gtktreeview.sgml 2001/11/15 22:20:16 1.12
+++ docs/reference/gtk/tmpl/gtktreeview.sgml 2001/11/16 22:06:35
@@ -475,7 +475,6 @@
@tree_view:
-@window:
@x:
@y:
@path:
@@ -483,6 +482,8 @@
@cell_x:
@cell_y:
@Returns:
+
+@window:
Index: gtk/gtkrbtree.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkrbtree.c,v
retrieving revision 1.15
diff -u -r1.15 gtkrbtree.c
--- gtk/gtkrbtree.c 2001/11/02 21:47:27 1.15
+++ gtk/gtkrbtree.c 2001/11/16 22:06:36
@@ -571,9 +571,10 @@
GtkRBNode *
-_gtk_rbtree_insert_after (GtkRBTree *tree,
- GtkRBNode *current,
- gint height)
+_gtk_rbtree_insert_after (GtkRBTree *tree,
+ GtkRBNode *current,
+ gint height,
+ gboolean valid)
{
GtkRBNode *node;
gboolean right = TRUE;
@@ -632,14 +633,20 @@
if (gtk_debug_flags & GTK_DEBUG_TREE)
_gtk_rbtree_test (G_STRLOC, tree);
-
+
+ if (valid)
+ _gtk_rbtree_node_mark_valid (tree, node);
+ else
+ _gtk_rbtree_node_mark_invalid (tree, node);
+
return node;
}
GtkRBNode *
-_gtk_rbtree_insert_before (GtkRBTree *tree,
- GtkRBNode *current,
- gint height)
+_gtk_rbtree_insert_before (GtkRBTree *tree,
+ GtkRBNode *current,
+ gint height,
+ gboolean valid)
{
GtkRBNode *node;
gboolean left = TRUE;
@@ -698,7 +705,12 @@
if (gtk_debug_flags & GTK_DEBUG_TREE)
_gtk_rbtree_test (G_STRLOC, tree);
-
+
+ if (valid)
+ _gtk_rbtree_node_mark_valid (tree, node);
+ else
+ _gtk_rbtree_node_mark_invalid (tree, node);
+
return node;
}
@@ -779,6 +791,7 @@
return;
GTK_RBNODE_UNSET_FLAG (node, GTK_RBNODE_INVALID);
+ GTK_RBNODE_UNSET_FLAG (node, GTK_RBNODE_COLUMN_INVALID);
do
{
if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_INVALID) ||
@@ -786,7 +799,7 @@
(node->left && GTK_RBNODE_FLAG_SET (node->left, GTK_RBNODE_DESCENDANTS_INVALID)) ||
(node->right && GTK_RBNODE_FLAG_SET (node->right, GTK_RBNODE_DESCENDANTS_INVALID)))
return;
-
+
GTK_RBNODE_UNSET_FLAG (node, GTK_RBNODE_DESCENDANTS_INVALID);
node = node->parent;
if (node == NULL)
@@ -798,6 +811,32 @@
while (node);
}
+
+/* Assume tree is the root node as it doesn't set DESCENDANTS_INVALID above.
+ */
+void
+_gtk_rbtree_column_invalid (GtkRBTree *tree)
+{
+ GtkRBNode *node;
+
+ node = tree->root;
+ g_assert (node);
+
+ while (node->left != tree->nil)
+ node = node->left;
+
+ do
+ {
+ if (! (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_INVALID)))
+ GTK_RBNODE_SET_FLAG (node, GTK_RBNODE_COLUMN_INVALID);
+ GTK_RBNODE_SET_FLAG (node, GTK_RBNODE_DESCENDANTS_INVALID);
+
+ if (node->children)
+ _gtk_rbtree_column_invalid (node->children);
+ }
+ while ((node = _gtk_rbtree_next (tree, node)) != NULL);
+}
+
typedef struct _GtkRBReorder
{
GtkRBTree *children;
@@ -849,6 +888,14 @@
node->offset += node->children->root->offset;
node->parity += node->children->root->parity;
}
+
+ if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_INVALID) ||
+ (node->right != tree->nil && GTK_RBNODE_FLAG_SET (node->right, GTK_RBNODE_DESCENDANTS_INVALID)) ||
+ (node->left != tree->nil && GTK_RBNODE_FLAG_SET (node->left, GTK_RBNODE_DESCENDANTS_INVALID)) ||
+ (node->children && GTK_RBNODE_FLAG_SET (node->children->root, GTK_RBNODE_DESCENDANTS_INVALID)))
+ GTK_RBNODE_SET_FLAG (node, GTK_RBNODE_DESCENDANTS_INVALID);
+ else
+ GTK_RBNODE_UNSET_FLAG (node, GTK_RBNODE_DESCENDANTS_INVALID);
}
/* It basically pulls everything out of the tree, rearranges it, and puts it
Index: gtk/gtkrbtree.h
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkrbtree.h,v
retrieving revision 1.10
diff -u -r1.10 gtkrbtree.h
--- gtk/gtkrbtree.h 2001/10/25 20:32:40 1.10
+++ gtk/gtkrbtree.h 2001/11/16 22:06:36
@@ -37,8 +37,16 @@
GTK_RBNODE_IS_SEMI_COLLAPSED = 1 << 5,
GTK_RBNODE_IS_SEMI_EXPANDED = 1 << 6,
GTK_RBNODE_INVALID = 1 << 7,
- GTK_RBNODE_DESCENDANTS_INVALID = 1 << 8,
- GTK_RBNODE_NON_COLORS = GTK_RBNODE_IS_PARENT | GTK_RBNODE_IS_SELECTED | GTK_RBNODE_IS_PRELIT | GTK_RBNODE_IS_SEMI_COLLAPSED | GTK_RBNODE_IS_SEMI_EXPANDED | GTK_RBNODE_INVALID | GTK_RBNODE_DESCENDANTS_INVALID
+ GTK_RBNODE_COLUMN_INVALID = 1 << 8,
+ GTK_RBNODE_DESCENDANTS_INVALID = 1 << 9,
+ GTK_RBNODE_NON_COLORS = GTK_RBNODE_IS_PARENT |
+ GTK_RBNODE_IS_SELECTED |
+ GTK_RBNODE_IS_PRELIT |
+ GTK_RBNODE_IS_SEMI_COLLAPSED |
+ GTK_RBNODE_IS_SEMI_EXPANDED |
+ GTK_RBNODE_INVALID |
+ GTK_RBNODE_COLUMN_INVALID |
+ GTK_RBNODE_DESCENDANTS_INVALID
} GtkRBNodeColor;
typedef struct _GtkRBTree GtkRBTree;
@@ -93,6 +101,7 @@
GtkRBTree *children;
};
+
#define GTK_RBNODE_GET_COLOR(node) (node?(((node->flags>K_RBNODE_RED)==GTK_RBNODE_RED)?GTK_RBNODE_RED:GTK_RBNODE_BLACK):GTK_RBNODE_BLACK)
#define GTK_RBNODE_SET_COLOR(node,color) if((node->flags&color)!=color)node->flags=node->flags^(GTK_RBNODE_RED|GTK_RBNODE_BLACK)
#define GTK_RBNODE_GET_HEIGHT(node) (node->offset-(node->left->offset+node->right->offset+(node->children?node->children->root->offset:0)))
@@ -109,10 +118,12 @@
void _gtk_rbtree_destroy (GtkRBTree *tree);
GtkRBNode *_gtk_rbtree_insert_before (GtkRBTree *tree,
GtkRBNode *node,
- gint height);
+ gint height,
+ gboolean valid);
GtkRBNode *_gtk_rbtree_insert_after (GtkRBTree *tree,
GtkRBNode *node,
- gint height);
+ gint height,
+ gboolean valid);
void _gtk_rbtree_remove_node (GtkRBTree *tree,
GtkRBNode *node);
void _gtk_rbtree_reorder (GtkRBTree *tree,
@@ -127,6 +138,7 @@
GtkRBNode *node);
void _gtk_rbtree_node_mark_valid (GtkRBTree *tree,
GtkRBNode *node);
+void _gtk_rbtree_column_invalid (GtkRBTree *tree);
gint _gtk_rbtree_node_find_offset (GtkRBTree *tree,
GtkRBNode *node);
gint _gtk_rbtree_node_find_parity (GtkRBTree *tree,
Index: gtk/gtktreemodel.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtktreemodel.c,v
retrieving revision 1.64
diff -u -r1.64 gtktreemodel.c
--- gtk/gtktreemodel.c 2001/11/10 22:06:36 1.64
+++ gtk/gtktreemodel.c 2001/11/16 22:06:40
@@ -1092,6 +1092,16 @@
g_signal_emit_by_name (tree_model, "row_has_child_toggled", path, iter);
}
+/**
+ * gtk_tree_model_row_deleted:
+ * @tree_model: A #GtkTreeModel
+ * @path: A #GtkTreePath pointing to the previous location of the deleted row.
+ *
+ * Emits the "row_deleted" signal on @tree_model. This should be called by
+ * models after a row has been removed. The location pointed to by @path should
+ * be the location that the row previously was at. It may not be a valid
+ * location anymore.
+ **/
void
gtk_tree_model_row_deleted (GtkTreeModel *tree_model,
GtkTreePath *path)
Index: gtk/gtktreeprivate.h
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtktreeprivate.h,v
retrieving revision 1.34
diff -u -r1.34 gtktreeprivate.h
--- gtk/gtktreeprivate.h 2001/10/22 18:24:26 1.34
+++ gtk/gtktreeprivate.h 2001/11/16 22:06:42
@@ -28,8 +28,6 @@
#include
#include
#include
-
-
#define TREE_VIEW_DRAG_WIDTH 6
@@ -52,8 +50,8 @@
DRAG_COLUMN_WINDOW_STATE_ARROW = 2,
DRAG_COLUMN_WINDOW_STATE_ARROW_LEFT = 3,
DRAG_COLUMN_WINDOW_STATE_ARROW_RIGHT = 4,
-
};
+
#define GTK_TREE_VIEW_SET_FLAG(tree_view, flag) G_STMT_START{ (tree_view->priv->flags|=flag); }G_STMT_END
#define GTK_TREE_VIEW_UNSET_FLAG(tree_view, flag) G_STMT_START{ (tree_view->priv->flags&=~(flag)); }G_STMT_END
#define GTK_TREE_VIEW_FLAG_SET(tree_view, flag) ((tree_view->priv->flags&flag)==flag)
@@ -109,6 +107,7 @@
GtkTreeViewColumn *expander_column;
GtkTreeViewColumn *edited_column;
+ guint presize_handler_timer;
/* Focus code */
GtkTreeViewColumn *focus_column;
@@ -185,8 +184,6 @@
GtkDestroyNotify search_destroy;
};
-#ifdef __GNUC__
-
#define TREE_VIEW_INTERNAL_ASSERT(expr, ret) G_STMT_START{ \
if (!(expr)) \
{ \
@@ -204,7 +201,7 @@
return ret; \
}; }G_STMT_END
-#define TREE_VIEW_INTERNAL_ASSERT_VOID(expr) G_STMT_START{ \
+#define TREE_VIEW_INTERNAL_ASSERT_VOID(expr) G_STMT_START{ \
if (!(expr)) \
{ \
g_log (G_LOG_DOMAIN, \
@@ -220,41 +217,6 @@
#expr); \
return; \
}; }G_STMT_END
-
-#else
-
-#define TREE_VIEW_INTERNAL_ASSERT(expr, ret) G_STMT_START{ \
- if (!(expr)) \
- { \
- g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_CRITICAL, \
- "file %s: line %d: assertion `%s' failed.\n" \
- "There is a disparity between the internal view of the GtkTreeView,\n" \
- "and the GtkTreeModel. This generally means that the model has changed\n"\
- "without letting the view know. Any display from now on is likely to\n" \
- "be incorrect.\n", \
- __FILE__, \
- __LINE__, \
- #expr); \
- return ret; \
- }; }G_STMT_END
-
-#define TREE_VIEW_INTERNAL_ASSERT_VOID(expr) G_STMT_START{ \
- if (!(expr)) \
- { \
- g_log (G_LOG_DOMAIN, \
- G_LOG_LEVEL_CRITICAL, \
- "file %s: line %d: assertion '%s' failed.\n" \
- "There is a disparity between the internal view of the GtkTreeView,\n" \
- "and the GtkTreeModel. This generally means that the model has changed\n"\
- "without letting the view know. Any display from now on is likely to\n" \
- "be incorrect.\n", \
- __FILE__, \
- __LINE__, \
- #expr); \
- return; \
- }; }G_STMT_END
-#endif
/* functions that shouldn't be exported */
Index: gtk/gtktreeview.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtktreeview.c,v
retrieving revision 1.173
diff -u -r1.173 gtktreeview.c
--- gtk/gtktreeview.c 2001/11/15 22:20:17 1.173
+++ gtk/gtktreeview.c 2001/11/16 22:06:44
@@ -248,6 +248,16 @@
gint *new_order,
gpointer data);
+/* Incremental reflow */
+static gboolean validate_row (GtkTreeView *tree_view,
+ GtkRBTree *tree,
+ GtkRBNode *node,
+ GtkTreeIter *iter,
+ GtkTreePath *path);
+static void validate_visible_area (GtkTreeView *tree_view);
+static gboolean validate_rows_handler (GtkTreeView *tree_view);
+static gboolean presize_handler_callback (gpointer data);
+static void install_presize_handler (GtkTreeView *tree_view);
/* Internal functions */
@@ -293,8 +303,7 @@
GtkRBTree *tree,
GtkTreeIter *iter,
gint depth,
- gboolean recurse,
- gboolean calc_bounds);
+ gboolean recurse);
static void gtk_tree_view_calc_size (GtkTreeView *priv,
GtkRBTree *tree,
GtkTreeIter *iter,
@@ -907,6 +916,7 @@
tree_view->priv->press_start_x = -1;
tree_view->priv->press_start_y = -1;
tree_view->priv->reorderable = FALSE;
+ tree_view->priv->presize_handler_timer = 0;
gtk_tree_view_set_adjustments (tree_view, NULL, NULL);
tree_view->priv->selection = _gtk_tree_selection_new_with_tree_view (tree_view);
_gtk_tree_view_update_size (tree_view);
@@ -968,10 +978,10 @@
}
static void
-gtk_tree_view_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+gtk_tree_view_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
GtkTreeView *tree_view;
@@ -1206,7 +1216,7 @@
tree_view = GTK_TREE_VIEW (widget);
- gtk_tree_view_check_dirty_and_clean (GTK_TREE_VIEW (widget));
+ // gtk_tree_view_check_dirty_and_clean (GTK_TREE_VIEW (widget));
GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
/* Make the main, clipping window */
@@ -1322,6 +1332,12 @@
gtk_timeout_remove (tree_view->priv->expand_collapse_timeout);
tree_view->priv->expand_collapse_timeout = 0;
}
+
+ if (tree_view->priv->presize_handler_timer != 0)
+ {
+ gtk_timeout_remove (tree_view->priv->presize_handler_timer);
+ tree_view->priv->presize_handler_timer = 0;
+ }
for (list = tree_view->priv->columns; list; list = list->next)
_gtk_tree_view_column_unrealize_button (GTK_TREE_VIEW_COLUMN (list->data));
@@ -1471,7 +1487,7 @@
tree_view = GTK_TREE_VIEW (widget);
- gtk_tree_view_check_dirty_and_clean (tree_view);
+ // gtk_tree_view_check_dirty_and_clean (tree_view);
tmp_list = tree_view->priv->children;
@@ -2518,9 +2534,9 @@
return TRUE;
}
- gtk_tree_view_check_dirty_and_clean (GTK_TREE_VIEW (widget));
-
- new_y = TREE_WINDOW_Y_TO_RBTREE_Y(tree_view, event->area.y);
+ validate_visible_area (tree_view);
+
+ new_y = TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, event->area.y);
if (new_y < 0)
new_y = 0;
y_offset = -_gtk_rbtree_find_offset (tree_view->priv->tree, new_y, &tree, &node);
@@ -3026,13 +3042,171 @@
gtk_tree_view_search_dialog_destroy (search_dialog, GTK_TREE_VIEW (widget));
return FALSE;
}
+
+
+/* Incremental Reflow
+ */
-/* Incremental Reflow */
+/* Returns TRUE if it updated the size
+ */
+static gboolean
+validate_row (GtkTreeView *tree_view,
+ GtkRBTree *tree,
+ GtkRBNode *node,
+ GtkTreeIter *iter,
+ GtkTreePath *path)
+{
+ GtkTreeViewColumn *column;
+ GList *list;
+ gint height = 0;
+ gint horizontal_separator;
+ gint depth = gtk_tree_path_get_depth (path);
+ gboolean retval = FALSE;
+
+
+ if (! GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_INVALID) &&
+ ! GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_COLUMN_INVALID))
+ return FALSE;
+
+ gtk_widget_style_get (GTK_WIDGET (tree_view),
+ "horizontal_separator", &horizontal_separator,
+ NULL);
+
+ for (list = tree_view->priv->columns; list; list = list->next)
+ {
+ gint tmp_width;
+ gint tmp_height;
+
+ column = list->data;
+
+ if (! column->visible)
+ continue;
+
+ if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_COLUMN_INVALID) && !column->dirty)
+ continue;
+ gtk_tree_view_column_cell_set_cell_data (column, tree_view->priv->model, iter,
+ GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_PARENT),
+ node->children?TRUE:FALSE);
+ gtk_tree_view_column_cell_get_size (column,
+ NULL, NULL, NULL,
+ &tmp_width, &tmp_height);
+ height = MAX (height, tmp_height);
+
+ if (gtk_tree_view_is_expander_column (tree_view, column) && TREE_VIEW_DRAW_EXPANDERS (tree_view))
+ tmp_width = tmp_width + horizontal_separator + depth * tree_view->priv->tab_offset;
+ else
+ tmp_width = tmp_width + horizontal_separator;
+
+ if (tmp_width > column->requested_width)
+ {
+ retval = TRUE;
+ column->requested_width = tmp_width;
+ }
+ }
+
+ if (height != GTK_RBNODE_GET_HEIGHT (node))
+ {
+ retval = TRUE;
+ _gtk_rbtree_node_set_height (tree, node, height);
+ }
+ _gtk_rbtree_node_mark_valid (tree, node);
+
+ return retval;
+}
+
+
static void
validate_visible_area (GtkTreeView *tree_view)
{
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ GtkRBTree *tree;
+ GtkRBNode *node;
+ gint y, height, offset;
+ gboolean validated_area = FALSE;
+
+ if (tree_view->priv->tree == NULL)
+ return;
+
+ if (! GTK_RBNODE_FLAG_SET (tree_view->priv->tree->root, GTK_RBNODE_DESCENDANTS_INVALID))
+ return;
+ height = tree_view->priv->vadjustment->page_size;
+ y = TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, 0);
+ offset = _gtk_rbtree_find_offset (tree_view->priv->tree, y,
+ &tree, &node);
+ if (node == NULL)
+ {
+ path = gtk_tree_path_new_root ();
+ _gtk_tree_view_find_node (tree_view, path, &tree, &node);
+ }
+ else
+ {
+ path = _gtk_tree_view_find_path (tree_view, tree, node);
+ height += offset;
+ }
+
+ gtk_tree_model_get_iter (tree_view->priv->model, &iter, path);
+ do
+ {
+ validated_area = validated_area || validate_row (tree_view, tree, node, &iter, path);
+ height -= GTK_RBNODE_GET_HEIGHT (node);
+ if (node->children)
+ {
+ GtkTreeIter parent = iter;
+ gboolean has_child;
+ tree = node->children;
+ node = tree->root;
+
+ g_assert (node != tree->nil);
+
+ while (node->left != tree->nil)
+ node = node->left;
+ has_child = gtk_tree_model_iter_children (tree_view->priv->model,
+ &iter,
+ &parent);
+ TREE_VIEW_INTERNAL_ASSERT_VOID (has_child);
+ gtk_tree_path_append_index (path, 0);
+ }
+ else
+ {
+ gboolean done = FALSE;
+ do
+ {
+ node = _gtk_rbtree_next (tree, node);
+ if (node != NULL)
+ {
+ gboolean has_next = gtk_tree_model_iter_next (tree_view->priv->model, &iter);
+ done = TRUE;
+
+ /* Sanity Check! */
+ TREE_VIEW_INTERNAL_ASSERT_VOID (has_next);
+ }
+ else
+ {
+ GtkTreeIter parent_iter = iter;
+ gboolean has_parent;
+
+ node = tree->parent_node;
+ tree = tree->parent_tree;
+ if (tree == NULL)
+ break;
+ has_parent = gtk_tree_model_iter_parent (tree_view->priv->model,
+ &iter,
+ &parent_iter);
+
+ /* Sanity check */
+ TREE_VIEW_INTERNAL_ASSERT_VOID (has_parent);
+ }
+ }
+ while (!done);
+ }
+ }
+ while (node && height > 0);
+
+ if (validated_area)
+ _gtk_tree_view_update_size (tree_view);
}
static gboolean
@@ -3052,14 +3226,26 @@
static gboolean
presize_handler_callback (gpointer data)
{
+ GtkTreeView *tree_view = GTK_TREE_VIEW (data);
+ GDK_THREADS_ENTER ();
+
+ validate_visible_area (tree_view);
+ tree_view->priv->presize_handler_timer = 0;
+
+ GDK_THREADS_LEAVE ();
+
return TRUE;
}
static void
install_presize_handler (GtkTreeView *tree_view)
{
-
+ if (tree_view->priv->presize_handler_timer != 0)
+ {
+ tree_view->priv->presize_handler_timer =
+ g_idle_add_full (GTK_PRIORITY_RESIZE - 2, presize_handler_callback, tree_view, NULL);
+ }
}
/* Drag-and-drop */
@@ -4535,12 +4721,12 @@
if (indices[depth - 1] == 0)
{
tmpnode = _gtk_rbtree_find_count (tree, 1);
- _gtk_rbtree_insert_before (tree, tmpnode, max_height);
+ _gtk_rbtree_insert_before (tree, tmpnode, max_height, TRUE);
}
else
{
tmpnode = _gtk_rbtree_find_count (tree, indices[depth - 1]);
- _gtk_rbtree_insert_after (tree, tmpnode, max_height);
+ _gtk_rbtree_insert_after (tree, tmpnode, max_height, TRUE);
}
_gtk_tree_view_update_size (tree_view);
@@ -4899,23 +5085,14 @@
GtkRBTree *tree,
GtkTreeIter *iter,
gint depth,
- gboolean recurse,
- gboolean calc_bounds)
+ gboolean recurse)
{
GtkRBNode *temp = NULL;
- gint max_height;
do
{
- max_height = 0;
- if (calc_bounds)
- max_height = gtk_tree_view_insert_iter_height (tree_view,
- tree,
- iter,
- depth);
-
gtk_tree_model_ref_node (tree_view->priv->model, iter);
- temp = _gtk_rbtree_insert_after (tree, temp, max_height);
+ temp = _gtk_rbtree_insert_after (tree, temp, 0, FALSE);
if (recurse)
{
GtkTreeIter child;
@@ -4925,7 +5102,7 @@
temp->children = _gtk_rbtree_new ();
temp->children->parent_tree = tree;
temp->children->parent_node = temp;
- gtk_tree_view_build_tree (tree_view, temp->children, &child, depth + 1, recurse, calc_bounds);
+ gtk_tree_view_build_tree (tree_view, temp->children, &child, depth + 1, recurse);
}
}
if (gtk_tree_model_iter_has_child (tree_view->priv->model, iter))
@@ -5325,6 +5502,9 @@
{
GList *list;
+ if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_IS_LIST))
+ return FALSE;
+
if (tree_view->priv->expander_column != NULL)
{
if (tree_view->priv->expander_column == column)
@@ -6314,6 +6494,9 @@
else
height = tree_view->priv->tree->root->offset + vertical_separator;
+ if (tree_view->priv->width == width && tree_view->priv->height == height)
+ return;
+
if (tree_view->priv->width != width)
{
tree_view->priv->width = width;
@@ -6552,7 +6735,7 @@
if (gtk_tree_model_get_iter (tree_view->priv->model, &iter, path))
{
tree_view->priv->tree = _gtk_rbtree_new ();
- gtk_tree_view_build_tree (tree_view, tree_view->priv->tree, &iter, 1, FALSE, GTK_WIDGET_REALIZED (tree_view));
+ gtk_tree_view_build_tree (tree_view, tree_view->priv->tree, &iter, 1, FALSE);
}
gtk_tree_path_free (path);
@@ -7432,8 +7615,7 @@
node->children,
&child,
gtk_tree_path_get_depth (path) + 1,
- TRUE,
- GTK_WIDGET_REALIZED (tree_view));
+ TRUE);
gtk_tree_path_free (path);
}
}
@@ -7609,8 +7791,7 @@
node->children,
&temp,
gtk_tree_path_get_depth (path) + 1,
- open_all,
- GTK_WIDGET_REALIZED (tree_view));
+ open_all);
if (tree_view->priv->expand_collapse_timeout)
{
Index: tests/testtreeedit.c
===================================================================
RCS file: /cvs/gnome/gtk+/tests/testtreeedit.c,v
retrieving revision 1.1
diff -u -r1.1 testtreeedit.c
--- tests/testtreeedit.c 2001/09/25 16:44:39 1.1
+++ tests/testtreeedit.c 2001/11/16 22:06:44
@@ -121,7 +121,6 @@
g_object_set (G_OBJECT (renderer),
"xalign", 0.0,
- "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE,
NULL);
gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
-1, "Editable",