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().
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.
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
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 ... :)
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.
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.
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.
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.
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.
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
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
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
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