summaryrefslogtreecommitdiff
path: root/gtk/gtkrbtree.h
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2001-02-08 23:36:53 +0000
committerHavoc Pennington <hp@src.gnome.org>2001-02-08 23:36:53 +0000
commit4a3c8a367a012a1e098934585d46db8611e12420 (patch)
tree8d94100a2edcec233c24665e82b906f222a97c46 /gtk/gtkrbtree.h
parentea6096cc53f3e23dbe3d9adf33486126077ea94e (diff)
downloadgtk+-4a3c8a367a012a1e098934585d46db8611e12420.tar.gz
remove validation idle
2001-02-08 Havoc Pennington <hp@redhat.com> * gtk/gtktextview.c (gtk_text_view_destroy_layout): remove validation idle * demos/gtk-demo/main.c (create_tree): adjust to changes in text cell renderer * demos/pixbuf-demo.c (timeout): remove deprecated gtk_widget_draw * demos/testpixbuf-save.c (main): remove deprecated gtk_drawing_area_size * gtk/gtktreeview.c (gtk_tree_view_size_allocate): allocate buttons even if the model isn't setup. gtk_tree_view_check_dirty() at the start of the allocation. (gtk_tree_view_check_dirty): handle column->button == NULL, handle unsetup or NULL model. * gtk/gtkstyle.c (gtk_default_draw_flat_box): drawing for the even/odd/sorted cells in the tree view. * gtk/gtktreeselection.c (gtk_tree_selection_real_unselect_all): bugfixes * gtk/gtktreeview.c: assorted bugfixy stuff. Draw the row backgrounds with draw_flat_box using different detail for even/odd rows. * gtk/gtkrbtree.c, gtkrbtree.h: Keep track of the parity of each row, so we can draw the alternating colors thing * gtk/gtktexttag.c (gtk_text_tag_set_property): if we change a property from a synonym property, notify for the synonym. Also, nuke the background_gdk_set and foreground_gdk_set synonyms (gtk_text_tag_get_property): Always return the font, even if all its fields aren't set * gtk/gtkcellrenderertext.h (struct _GtkCellRendererText): don't store the attr list; it leaves us with no way to change attributes in _render according to the render flags, and no way to implement get_property. Instead store all the specific text attributes. Separate whether an attribute is enabled from its value. Sync all properties with GtkTextTag, make them all consistent, etc. * gtk/gtkcellrenderer.h: Add a flag GTK_CELL_RENDERER_SORTED so renderers can highlight the sort row/column * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_get_property): use accessor functions to get values; this has the side effect of showing up which accessor functions were missing. Added those. * gtk/gtktreeviewcolumn.h: Replace set_justification with set_alignment, to be consistent with GtkLabel, GtkMisc * gtk/gtktreeviewcolumn.c: Added code to display sort indicator arrow. * gtk/Makefile.am (gtk_public_h_sources): add gtktreesortable.h * gtk/gtktreesortable.h: updates in here
Diffstat (limited to 'gtk/gtkrbtree.h')
-rw-r--r--gtk/gtkrbtree.h25
1 files changed, 22 insertions, 3 deletions
diff --git a/gtk/gtkrbtree.h b/gtk/gtkrbtree.h
index 40c779320c..eea9160b62 100644
--- a/gtk/gtkrbtree.h
+++ b/gtk/gtkrbtree.h
@@ -33,6 +33,7 @@ typedef enum
GTK_RBNODE_IS_SELECTED = 1 << 3,
GTK_RBNODE_IS_PRELIT = 1 << 4,
GTK_RBNODE_IS_VIEW = 1 << 5
+
} GtkRBNodeColor;
typedef struct _GtkRBTree GtkRBTree;
@@ -53,7 +54,20 @@ struct _GtkRBTree
struct _GtkRBNode
{
- guint flags;
+ guint flags : 14;
+
+ /* We keep track of whether the aggregate count of children plus 1
+ * for the node itself comes to an even number. The parity flag is
+ * the total count of children mod 2, where the total count of
+ * children gets computed in the same way that the total offset gets
+ * computed. i.e. not the same as the "count" field below which
+ * doesn't include children. We could replace parity with a
+ * full-size int field here, and then take % 2 to get the parity flag,
+ * but that would use extra memory.
+ */
+
+ guint parity : 1;
+
GtkRBNode *left;
GtkRBNode *right;
GtkRBNode *parent;
@@ -62,13 +76,15 @@ struct _GtkRBNode
* i.e. node->left->count + node->right->count + 1
*/
gint count;
-
+
/* this is the total of sizes of
* node->left, node->right, our own height, and the height
* of all trees in ->children, iff children exists because
* the thing is expanded.
*/
gint offset;
+
+ /* Child trees */
GtkRBTree *children;
};
@@ -101,6 +117,8 @@ void _gtk_rbtree_node_set_height (GtkRBTree *tree,
gint height);
gint _gtk_rbtree_node_find_offset (GtkRBTree *tree,
GtkRBNode *node);
+gint _gtk_rbtree_node_find_parity (GtkRBTree *tree,
+ GtkRBNode *node);
gint _gtk_rbtree_find_offset (GtkRBTree *tree,
gint offset,
GtkRBTree **new_tree,
@@ -127,7 +145,8 @@ gint _gtk_rbtree_get_depth (GtkRBTree *tree);
/* This func just checks the integrity of the tree */
/* It will go away later. */
-void _gtk_rbtree_test (GtkRBTree *tree);
+void _gtk_rbtree_test (const gchar *where,
+ GtkRBTree *tree);
#ifdef __cplusplus