summaryrefslogtreecommitdiff
path: root/gtk/gtkrbtree.h
Commit message (Collapse)AuthorAgeFilesLines
* Improve struct packing in various placesMatthias Clasen2013-09-211-4/+5
|
* Change FSF AddressJavier Jardón2012-02-271-3/+1
|
* rbtree: Add _gtk_rbtree_contains()Benjamin Otte2011-12-101-0/+2
| | | | It's useful in a bunch of places, so split it out
* rbtree: Remove the nil memberBenjamin Otte2011-11-221-1/+0
|
* rbtree: Introduce _gtk_rbtree_is_nil()Benjamin Otte2011-11-221-0/+1
| | | | | Makes for more readable code than "== tree->nil" and allows removing the nil member later.
* rbtree: Introduce _gtk_rbtree_first()Benjamin Otte2011-11-221-0/+1
| | | | ... and use it.
* rbtree: Make debug functions privateBenjamin Otte2011-11-211-7/+0
| | | | They're not used elsewhere
* treeview: Add _gtk_rbtree_node_get_index()Benjamin Otte2011-11-161-1/+1
| | | | | | | .. as a replacement for _gtk_rbtree_node_find_parity(). Instead of 1 or 0, the function now returns the index of node in the complete tree (counting from the root). And this is of course identical to the row number.
* treeview: Add _gtk_rbtree_find_index()Benjamin Otte2011-11-161-0/+4
| | | | | Uses the parity to do an O(log N) search for the nth element in the tree in display order of the treeview.
* treeview: Rename "parity" to "total_count"Benjamin Otte2011-11-161-6/+5
| | | | | Now that we use it to actually count the rows instead of just even/odd, it's better to reflect that in the variable name.
* treeview: Make the parity actually store the row numberBenjamin Otte2011-11-161-10/+4
| | | | | | Instead of just storing the least significant bit of the row number, store the full row number. This will soon be useful for accessibility. But CSS could like it, too.
* Remove GTK_RBNODE_IS_SEMI_[COLLAPSED|EXPANDED] flags.Carlos Garnacho2011-01-271-4/+0
| | | | These aren't used anymore.
* get rid of GAllocator usage, allocate and free nodes via the g_slice_*()Tim Janik2005-11-011-2/+0
| | | | | | | | Tue Nov 1 16:18:24 2005 Tim Janik <timj@imendio.com> * gtk/gtkrbtree.[hc]: get rid of GAllocator usage, allocate and free nodes via the g_slice_*() API. _gtk_rbtree_new(): fixed wrong node allocation via g_new().
* Fixes #165034, reported by Jorn Baayen.Kristian Rietveld2005-07-081-1/+2
| | | | | | | | | | | | | | | | | | 2005-07-08 Kristian Rietveld <kris@gtk.org> Fixes #165034, reported by Jorn Baayen. * gtk/gtkrbtree.[ch] (_gtk_rbtree_set_fixed_height): add a mark_valid parameter (so we can mark all nodes as valid when we are setting them to the fixed height). * gtk/gtktreeview.c (initialized_fixed_height_mode): mark all nodes as valid when setting the fixed height, (do_validate_rows): update call to _set_fixed_height, (gtk_tree_view_row_inserted): mark node as valid when fixed height mode is enabled and a height has been set, (gtk_tree_view_build_tree): if fixed height mode is enabled, mark new nodes as valid in addition to setting the height.
* Fix the buildMatthias Clasen2005-06-211-1/+2
|
* Trivial cleanups. (#169647, #303455, Fabricio Barros Cabral, BenoitMatthias Clasen2005-06-211-6/+6
| | | | | | | 2005-06-21 Matthias Clasen <mclasen@redhat.com> * gtk/*.h: Trivial cleanups. (#169647, #303455, Fabricio Barros Cabral, Benoit Carpentier)
* include missing #ifdef G_ENA\BLE_DEBUGJonathan Blandford2002-05-161-1/+2
| | | | | | Thu May 16 17:29:08 2002 Jonathan Blandford <jrb@redhat.com> * gtk/gtkrbtree.c (_gtk_rbtree_remove): include missing #ifdef G_ENA\BLE_DEBUG
* add _gtk_rbtree_set_fixed_height()Kristian Rietveld2002-03-201-0/+2
| | | | | | | | | | | | | | | | | Wed Mar 20 22:59:23 2002 Kristian Rietveld <kris@gtk.org> * gtk/gtkrbtree.[ch]: add _gtk_rbtree_set_fixed_height() * gtk/gtktreeprivate.h: add fixed_height_check field * gtk/gtktreeview.c (gtk_tree_view_init): initialize scroll_sync_timer and fixed_height_check (do_validate_rows): add fixed_height_check. If all validated rows in the first cycle have the same height, then we set that height for the entire tree. This is some sort of 'fake' optimization, but helps a lot for the common case. We keep validating the entire tree in the background though. (gtk_tree_view_set_model): reset fixed_height_check
* add _gtk_rbtree_mark_invalid (my previous commit already needed this ...)Kristian Rietveld2002-01-271-0/+1
| | | | | | | | | Sun Jan 27 23:23:23 Kristian Rietveld <kris@gtk.org> * gtk/gtkrbtree.[ch]: add _gtk_rbtree_mark_invalid (my previous commit already needed this ...) (/me broke the build for the first time ... :)
* get logic right, #66249Jonathan Blandford2001-12-081-2/+2
| | | | | | | | | | | | | | Fri Dec 7 20:06:14 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreeview.c (validate_visible_area): get logic right, #66249 * gtk/gtkrbtree.c (_gtk_rbtree_remove_node): fix bug where removing a node ended up with a corrupt tree. Really really nasty bug. (_gtk_rbtree_debug_spew): new debug helper function (_fixup_validation): new inline function to clean up code readability a lot.
* Minor fix.Jonathan Blandford2001-12-041-4/+16
| | | | | | | | | | | | | | | | Tue Dec 4 18:38:35 2001 Jonathan Blandford <jrb@redhat.com> * demos/gtk-demo/main.c: (create_tree): Minor fix. * docs/tree-column-sizing.txt: Update * gtk/gtkrbtree.[ch]: Massive work to support validation. * gtk/gtktreemodel.c: Doc fixes. * gtk/gtktreeview.c: Incremental reflow added. * gtk/gtktreeviewcolumn.c: ditto * gtk/gtktreeviewcolumn.h: ditto
* Add support for invalid nodes. (_gtk_rbnode_rotate_right): Ditto.Jonathan Blandford2001-10-251-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | Thu Oct 25 16:27:29 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtkrbtree.c (_gtk_rbnode_rotate_left): Add support for invalid nodes. (_gtk_rbnode_rotate_right): Ditto. (_gtk_rbtree_node_mark_invalid): New function. (_gtk_rbtree_node_mark_valid): New function. * gtk/gtktreemodelsort.c (gtk_tree_model_sort_class_init): We're a GObject, not a GtkObject. (gtk_tree_model_sort_row_has_child_toggled): Rewrote to be more correct. (gtk_tree_model_sort_row_deleted): ditto. (gtk_tree_model_sort_{un,}ref_node): Fix. * gtk/gtktreeview.c: Protean incremental reflow support (commented out) * gtk/gtktreeview.h (GtkTreeViewSearchEqualFunc): change char *key to const char *key. * gtk/gtktreemodel.c (gtk_tree_row_reference_unref_path_helper): Important 1 line fix to fix a lot of refcounting woes.
* Removed 'fill' attribute. It was silly b/c that was a property of the cellJonathan Blandford2001-09-081-0/+2
| | | | | | | | | | | | | | | | | Fri Sep 7 20:45:29 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_pack_{start,end}): Removed 'fill' attribute. It was silly b/c that was a property of the cell renderer, anyway. (gtk_tree_view_column_render): Actually render the packed renderers. * doc/tree-column-sizing.txt: initial devel documentation. * gtk/gtktreeview.c (gtk_tree_view_expand_all): Fix bug. * gtk/gtkcellrenderertextpixbuf.[ch]: removed. * tests/testtreefocus.c: fix up to reflect above changes. * tests/testtreeview.c: ditto * demos/gtk-demo/stock_browser.c: ditto
* Add support for animating expanders.Anders Carlsson2001-07-221-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-22 Anders Carlsson <andersca@gnome.org> * gtk/gtktreeview.c (gtk_tree_view_class_init): Replace the expander_height and expander_width properties with a single property, expander_size. (gtk_tree_view_init): Set the tab_offset to expander_size plus some padding. (gtk_tree_view_unrealize): Remove the expand/collapse timeout if it exists. (coords_are_over_arrow): Fix a small bug. (gtk_tree_view_motion_draw_column_motion_arrow): Use expander_size. (gtk_tree_view_draw_focus): Use "treeview" instead of "add-mode" as detail when drawing the focus. (gtk_tree_view_bin_expose): Use "treeview-drop-indicator" instead of "add-mode" as detail when drawing the focus. (gtk_tree_view_deleted): If we have a node currently being expanded or collapsed, remove the timeout and set the node to NULL. (gtk_tree_view_queue_draw_arrow): New function that just redraws the arrow of a node. (gtk_tree_view_draw_arrow): Use expander_size instead of expander_width/expander_height, also pass a different expander_style to gtk_paint_expander depending on the state of the node being drawn. (expand_collapse_timeout): New function for expanding or collapsing a node depending on the previous state. (gtk_tree_view_real_expand_row): Add timeout and set correct state for node being expanded. (gtk_tree_view_real_collapse_row): Add timeout and set correct state for node being collapsed. * gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): Add information about the node currently being expanded or collapsed, and also a timeout id. * gtk/gtkstyle.h (struct _GtkStyleClass): Replace is_open with expander_style for draw_expander. * gtk/gtkstyle.c (gtk_draw_expander): Replace is_open with expander_style. (create_expander_affine): New function for creating an expander affine. (apply_affine_on_point): New function for applying an affine to a point. (gtk_default_draw_expander): Modified to take expander_style instead of is_open, and to draw the rectangle rotated differently depending on the expander style. (gtk_paint_expander): Replace is_open with expander_style. * gtk/gtkrbtree.h: Add expander states to GtkRBNodeColor. * gtk/gtkenums.h: Add expander style enum.
* new function to handle reordering of trees. Seems to mostly work w/ theJonathan Blandford2001-03-281-2/+4
| | | | | | | | | | | Wed Mar 28 17:27:12 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtkrbtree.c (_gtk_rbtree_reorder): new function to handle reordering of trees. Seems to mostly work w/ the exception of the parity flag. * gtk/gtktreeview.c (gtk_tree_view_reordered): handle "reordered" signal.
* Proxy out to _gtk_tree_row_reference_deleted. (inserted_callback): ProxyJonathan Blandford2001-02-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Tue Feb 27 19:32:53 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtktreemodel.c (deleted_callback): Proxy out to _gtk_tree_row_reference_deleted. (inserted_callback): Proxy out to _gtk_tree_row_reference_inserted. (_gtk_tree_row_reference_new_from_view): Somewhat yukky hack to get around signal emission ordering problem. * gtk/gtktreeselection.c (gtk_tree_selection_real_unselect_all): fix to work with SINGLE (_gtk_tree_selection_internal_select_node): Major sanitization on selections. SINGLE now seems to work. * tests/Makefile.am: add testtreecolumn.c: * tests/testtreecolumn.c: New test. Mostly points out selection bugs currently, but will test columns later. * gtk/gtkrbtree.c (_gtk_rbtree_remove_node): Fix really nasty selection bug. I hate touching this code -- it's scary.
* remove validation idleHavoc Pennington2001-02-081-3/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* adapt to handle PangoColorHavoc Pennington2001-01-261-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-01-26 Havoc Pennington <hp@redhat.com> * gtk/gtktextlayout.c (convert_color): adapt to handle PangoColor * gtk/gtktreeview.c (gtk_tree_view_widget_to_tree_coords): fix to not offset by TREE_VIEW_HEADER_HEIGHT (gtk_tree_view_tree_to_widget_coords): fix to not offset by TREE_VIEW_HEADER_HEIGHT * configure.in (included_loaders): for me, --with-included-loaders generates the error "the specified loader yes does not exist", i.e. the arg defaults to "yes", so change test for value "" to test for value "yes", and include all loaders in that case. * gtk/gtkrbtree.c (_gtk_rbtree_get_depth): new function * gtk/gtktreeview.c (gtk_tree_view_get_cell_rect): fix to properly handle TREE_VIEW_VERTICAL_SEPARATOR (gtk_tree_view_bin_expose): fix to consider the row offset as pointing halfway into vertical separator. (gtk_tree_view_draw_node_focus_rect): ditto * gtk/gtkdebug.h, gtk/gtkmain.c (gtk_init_check): Add --gtk-debug=updates, which causes gdk_window_set_debug_updates (TRUE) to be called. * gdk/gdkwindow.c (gdk_window_set_debug_updates): Allow enabling a debug mode where the invalid region is colored in on invalidate, so you can see the flicker and know whether your redraw code is doing a good job. * gtk/gtktreeview.c (gtk_tree_view_queue_draw_node): Work in tree window coordinates (clip rect is in tree window coords) * gtk/Makefile.am: add gtktreednd.[hc] * gtk/gtkliststore.c: implement gtktreednd interfaces. * gtk/gtktreednd.c, gtk/gtktreednd.h: New interface to support drag-and-drop data operations on a model (so we can set up tree drag-and-drop automatically) * gtk/testgtk.c: Add a window to change sensitivity in the GtkLabel test; add a way to change the entry frame in GtkEntry test * gtk/gtkentry.c (gtk_entry_set_has_frame): (gtk_entry_get_has_frame): new functions to remove the frame around an entry (gtk_entry_size_request): shrink requisition if no frame (gtk_entry_draw_focus): don't draw frame if no frame * gtk/gtkstyle.c (gtk_default_draw_check): draw custom look for checks inside a cell renderer (gtk_default_draw_option): ditto for options * gtk/gtktreeviewcolumn.c (update_button_contents): add/remove children from the alignment, not the button (gtk_tree_view_column_init): ref/sink the column, to emulate GObject refcounting. * gtk/gtkcellrenderer.c (gtk_cell_renderer_init): ref/sink * gtk/gtkcellrenderertoggle.c (gtk_cell_renderer_toggle_render): Use theme functions to draw the toggles * gdk/gdkpango.c (gdk_pango_get_gc): use GdkRGB to alloc colors * gdk/gdkpango.h, gdk/gdkpango.c: Add GdkPangoAttrStipple and GdkPangoAttrEmbossed to use in rendering insensitive text * gdk/gdkpango.c (gdk_draw_layout_line): render new properties * gtk/gtkstyle.c (gtk_default_draw_layout): handle sensitivity using new GDK features
* sync to tree changesHavoc Pennington2001-01-191-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-01-19 Havoc Pennington <hp@redhat.com> * demos/gtk-demo/main.c (button_press_event_cb): sync to tree changes * gtk/gtkrbtree.c (_gtk_rbtree_node_find_offset): fix this function * gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_widget): implement * gtk/gtktreeview.c (gtk_tree_view_move_to): rename scroll_to_cell, matches TextView scroll functions better (gtk_tree_view_tree_to_widget_coords): new function (gtk_tree_view_widget_to_tree_coords): new function (gtk_tree_view_get_visible_rect): new function (gtk_tree_view_get_path_at_pos): accept negative coordinates (gtk_tree_view_draw_node_focus_rect): new function moved from draw_focus, also, use width of bin_window as width of the focus rect (gtk_tree_view_expand_row): fix bug where it didn't recognize already-expanded rows (gtk_tree_view_get_cell_rect): new function (gtk_tree_view_get_path_at_pos): return the click position relative to the passed-in cell (gtk_tree_view_set_expander_column): new function * configure.in: remove gtk-config-2.0 chmod * gtk/gtktextview.c (gtk_text_view_drag_motion): small cleanups, and properly handle drags with targets we don't understand (gtk_text_view_drag_end): don't stop scrolling, the source isn't scrolling anyway (gtk_text_view_drag_drop): stop scrolling here though, and set the mark invisible * gtk/gtkdnd.c (gtk_drag_dest_find_target): export as a public function (gtk_drag_dest_get_target_list): new function (gtk_drag_dest_set_target_list): new function * gtk/gtktreeview.c: Add a bunch of drag-and-drop implementation * gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): add fields related to drag-and-drop
* new directory to contain tests, gtk/test* should move here sometime (withHavoc Pennington2000-12-211-2/+2
| | | | | | | | | | | | | | | | 2000-12-20 Havoc Pennington <hp@redhat.com> * tests: new directory to contain tests, gtk/test* should move here sometime (with appropriate on-cvs-server hackery) * tests/testtreeview.c, tests/Makefile.am: a test * configure.in (AC_OUTPUT): add tests/Makefile * gtk/gtktexttag.c (gtk_text_tag_get_property): Add "invisible" and "invisible_set" which were missing * gtk/gtkrbtree.h: some cheesy indentation fix
* Checked in initial draft of the new tree widget.42000-10-051-0/+133
2000-10-04 <jrb@redhat.com> * gtk/gtk{tree,cell}?*.[ch]: Checked in initial draft of the new tree widget.