diff options
author | Tim Janik <timj@gtk.org> | 2000-05-12 15:25:50 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 2000-05-12 15:25:50 +0000 |
commit | 9595c55184932c11e60e840f10f63d73748e3237 (patch) | |
tree | caed3814dcd026830b9cf2c7ff0ee1f5feb48f25 /gtk/gtkctree.c | |
parent | 5ef1e2e970e949e65ed76656fbe9b1ea4a22fbe3 (diff) | |
download | gtk+-9595c55184932c11e60e840f10f63d73748e3237.tar.gz |
documented necessary changes for 1.4 transition.
Fri May 12 17:13:32 2000 Tim Janik <timj@gtk.org>
* docs/Changes-1.4.txt: documented necessary changes for 1.4 transition.
* gtk/gtktext.c: made the adjustments no-construct args, simply
provide default adjustments.
(gtk_text_destroy): release adjustments.
* gtk/gtkprogressbar.c (gtk_progress_bar_class_init): made the
adjustment argument non-construct.
* gtk/gtkprogress.c (gtk_progress_destroy): release adjustment here,
instead of in finalize.
(gtk_progress_get_text_from_value):
(gtk_progress_get_current_text):
(gtk_progress_set_value):
(gtk_progress_get_percentage_from_value):
(gtk_progress_get_current_percentage):
(gtk_progress_set_percentage):
(gtk_progress_configure): ensure an adjustment is present.
Thu May 11 01:24:08 2000 Tim Janik <timj@gtk.org>
* gtk/gtkcolorsel.[hc]:
* gtk/gtkcolorseldialog.[hc]:
* gtk/gtkhsv.[hc]: major code cleanups, destroy handlers need to chain
their parent implementation, use bit fields for boolean values, don't
create unused widgets, usage of glib types, braces go on their own
lines, function argument alignment, #include directives etc. etc. etc..
* gtk/Makefile.am (gtk_public_h_sources): install gtkhsv.h.
Wed May 10 23:29:52 2000 Tim Janik <timj@gtk.org>
* gtk/gtktoolbar.c (gtk_toolbar_destroy): don't unref a NULL tooltips.
* gtk/gtkfilesel.c (gtk_file_selection_destroy): don't free a cmpl_state
of NULL.
* gtk/gtkcombo.c (gtk_combo_item_destroy): don#t keep references
to freed data.
(gtk_combo_destroy): don't keep a pointer to a destroyed window.
* gtk/gtkmenu.c (gtk_menu_init): reset the menu's toplevel pointer
to NULL when the toplevel is getting destroyed.
(gtk_menu_set_tearoff_state): same here for the tearoff_window.
(gtk_menu_destroy):
(gtk_menu_init): store the information of whether we have to
readd the initial child ref_count during destruction in a new
GtkMenu field needs_destruction_ref_count.
* gtk/gtkviewport.c: SHAME! ok this one is tricky, so i note it
here, those reading: learn from my mistake! ;)
in order for set_?adjustment to support a default adjustemnt if
invoked with an adjustment pointer of NULL, the code read (pseudo):
if (v->adjustment) unref (v->adjustment);
if (!adjustment) adjustment = adjustment_new ();
if (v->adjustment != adjustment) v->adjustment = ref (adjustment);
now imagine the first unref to actually free the old adjustment and
adjustment_new() creating a new adjustment from the very same memory
portion. here, the latter comparision will unintendedly fail, and
all hell breaks loose.
(gtk_viewport_set_hadjustment):
(gtk_viewport_set_vadjustment): reset viewport->?adjustment to NULL
after unreferencing it.
* gtk/gtkcontainer.[hc]: removed toplevel registration
functions: gtk_container_register_toplevel(),
gtk_container_unregister_toplevel() and
gtk_container_get_toplevels() which had wrong semantics
anyways: it didn't reference and copy the list.
* gtk/gtkwindow.c: we take over the container toplevel registration
bussiness now. windows are registered across multiple destructions,
untill they are finalized. the initial implicit reference count
users are holding on windows is removed with the first destruction
though.
(gtk_window_init): ref & sink and set has_user_ref_count, got
rid of gtk_container_register_toplevel() call. add window to
toplevel_list.
(gtk_window_destroy): unref the window if has_user_ref_count
is still set, got rid of call to
gtk_container_unregister_toplevel().
(gtk_window_finalize): remove window from toplevel list.
(gtk_window_list_toplevels): new function to return a newly
created list with referenced toplevels.
(gtk_window_read_rcfiles): use gtk_window_list_toplevels().
* gtk/gtkhscale.c (gtk_hscale_class_init): made the GtkRange
adjustment a non-construct arg.
* gtk/gtkvscale.c (gtk_vscale_class_init): likewise.
* gtk/gtkhscrollbar.c (gtk_vscrollbar_class_init): likewise.
* gtk/gtkvscrollbar.c (gtk_vscrollbar_class_init): likewise.
* gtk/gtkrange.c: added some realized checks.
(gtk_range_destroy): get rid of the h/v adjustments in the
destroy handler instead of finalize. remove timer.
(gtk_range_get_adjustment): demand create adjustment.
* gtk/gtkviewport.c: made h/v adjustment non-construct args.
we simply create them on demand now and get rid of them in
the destroy handler.
(gtk_viewport_destroy): get rid of the h/v adjustments in the
destroy handler instead of finalize.
(gtk_viewport_get_hadjustment):
(gtk_viewport_get_vadjustment):
(gtk_viewport_size_allocate): demand create h/v adjustment
if required.
* gtk/gtkwidget.c (gtk_widget_finalize): duplicate part of the
gtk_widget_real_destroy () functionality.
(gtk_widget_real_destroy): reinitialize with a new style, instead
of setting widget->style to NULL.
Fri May 5 13:02:09 2000 Tim Janik <timj@gtk.org>
* gtk/gtkcalendar.c:
* gtk/gtkbutton.c: ported _get_type() implementation over to
GType, either to preserve memchunks allocation facilities,
or because Gtk+ 1.0 GtkTypeInfo was still being used.
* gtk/gtkobject.[hc]: derive from GObject. ported various functions
over. prepare for ::destroy to be emitted multiple times.
removed reference tracer magic. chain into GObjectClass.shutdown()
to emit ::destroy signal.
* gtk/gtksignal.c: removed assumptions about GTK_TYPE_OBJECT being
fundamental.
* gtk/gtkmain.c: removed gtk_object_post_arg_parsing_init()
cludge.
* gtk/gtksocket.c:
* gtk/gtkplug.c:
* gtk/gtklayout.c:
* gtk/gtklabel.c:
* gtk/gtkargcollector.c:
* gtk/gtkarg.c: various fixups to work with GTK_TYPE_OBJECT
not being a fundamental anymore, and to work with the new
type system (nuked fundamental type varargs clutter).
* gtk/*.c: install finalize handlers in the GObjectClass
part of the class structure.
changed direct GTK_OBJECT()->klass accesses to
GTK_*_GET_CLASS().
changed direct object_class->type accesses to GTK_CLASS_TYPE().
* gtktypeutils.[hc]: use the reserved fundamental ids provided by
GType. made most of the GTK_*() type macros and Gtk* typedefs
simple wrappers around macros and types provided by GType.
most notably, a significant portion of the old API vanished:
GTK_TYPE_MAKE(),
GTK_TYPE_SEQNO(),
GTK_TYPE_FLAT_FIRST, GTK_TYPE_FLAT_LAST,
GTK_TYPE_STRUCTURED_FIRST, GTK_TYPE_STRUCTURED_LAST,
GTK_TYPE_ARGS,
GTK_TYPE_CALLBACK,
GTK_TYPE_C_CALLBACK,
GTK_TYPE_FOREIGN,
GtkTypeQuery,
gtk_type_query(),
gtk_type_set_varargs_type(),
gtk_type_get_varargs_type(),
gtk_type_check_object_cast(),
gtk_type_check_class_cast(),
gtk_type_describe_tree(),
gtk_type_describe_heritage(),
gtk_type_free(),
gtk_type_children_types(),
gtk_type_set_chunk_alloc(),
gtk_type_register_enum(),
gtk_type_register_flags(),
gtk_type_parent_class().
replacements, where available are described in ../docs/Changes-1.4.txt.
implemented compatibility functions for the remaining API.
* configure.in: depend on glib 1.3.1, use gobject module.
Diffstat (limited to 'gtk/gtkctree.c')
-rw-r--r-- | gtk/gtkctree.c | 1479 |
1 files changed, 739 insertions, 740 deletions
diff --git a/gtk/gtkctree.c b/gtk/gtkctree.c index 8532317b0e..79ebafed39 100644 --- a/gtk/gtkctree.c +++ b/gtk/gtkctree.c @@ -56,26 +56,25 @@ COLUMN_FROM_XPIXEL (GtkCList * clist, gint x) { gint i, cx; - + for (i = 0; i < clist->columns; i++) if (clist->column[i].visible) { cx = clist->column[i].area.x + clist->hoffset; - + if (x >= (cx - (COLUMN_INSET + CELL_SPACING)) && x <= (cx + clist->column[i].area.width + COLUMN_INSET)) return i; } - + /* no match */ return -1; } -#define GTK_CLIST_CLASS_FW(_widget_) GTK_CLIST_CLASS (((GtkObject*) (_widget_))->klass) #define CLIST_UNFROZEN(clist) (((GtkCList*) (clist))->freeze_count == 0) #define CLIST_REFRESH(clist) G_STMT_START { \ if (CLIST_UNFROZEN (clist)) \ - GTK_CLIST_CLASS_FW (clist)->refresh ((GtkCList*) (clist)); \ + GTK_CLIST_GET_CLASS (clist)->refresh ((GtkCList*) (clist)); \ } G_STMT_END @@ -319,7 +318,7 @@ GtkType gtk_ctree_get_type (void) { static GtkType ctree_type = 0; - + if (!ctree_type) { static const GtkTypeInfo ctree_info = @@ -333,10 +332,10 @@ gtk_ctree_get_type (void) /* reserved_2 */ NULL, (GtkClassInitFunc) NULL, }; - + ctree_type = gtk_type_unique (GTK_TYPE_CLIST, &ctree_info); } - + return ctree_type; } @@ -347,15 +346,15 @@ gtk_ctree_class_init (GtkCTreeClass *klass) GtkWidgetClass *widget_class; GtkCListClass *clist_class; GtkBindingSet *binding_set; - + object_class = (GtkObjectClass *) klass; widget_class = (GtkWidgetClass *) klass; container_class = (GtkContainerClass *) klass; clist_class = (GtkCListClass *) klass; - + parent_class = gtk_type_class (GTK_TYPE_CLIST); container_class = gtk_type_class (GTK_TYPE_CONTAINER); - + gtk_object_add_arg_type ("GtkCTree::n_columns", GTK_TYPE_UINT, GTK_ARG_READWRITE | GTK_ARG_CONSTRUCT_ONLY, @@ -386,39 +385,39 @@ gtk_ctree_class_init (GtkCTreeClass *klass) ARG_EXPANDER_STYLE); object_class->set_arg = gtk_ctree_set_arg; object_class->get_arg = gtk_ctree_get_arg; - + ctree_signals[TREE_SELECT_ROW] = gtk_signal_new ("tree_select_row", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE (object_class), GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_select_row), gtk_marshal_NONE__POINTER_INT, GTK_TYPE_NONE, 2, GTK_TYPE_CTREE_NODE, GTK_TYPE_INT); ctree_signals[TREE_UNSELECT_ROW] = gtk_signal_new ("tree_unselect_row", GTK_RUN_FIRST, - object_class->type, + GTK_CLASS_TYPE (object_class), GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_unselect_row), gtk_marshal_NONE__POINTER_INT, GTK_TYPE_NONE, 2, GTK_TYPE_CTREE_NODE, GTK_TYPE_INT); ctree_signals[TREE_EXPAND] = gtk_signal_new ("tree_expand", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE (object_class), GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_expand), gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, GTK_TYPE_CTREE_NODE); ctree_signals[TREE_COLLAPSE] = gtk_signal_new ("tree_collapse", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE (object_class), GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_collapse), gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, GTK_TYPE_CTREE_NODE); ctree_signals[TREE_MOVE] = gtk_signal_new ("tree_move", GTK_RUN_LAST, - object_class->type, + GTK_CLASS_TYPE (object_class), GTK_SIGNAL_OFFSET (GtkCTreeClass, tree_move), gtk_marshal_NONE__POINTER_POINTER_POINTER, GTK_TYPE_NONE, 3, GTK_TYPE_CTREE_NODE, @@ -426,21 +425,21 @@ gtk_ctree_class_init (GtkCTreeClass *klass) ctree_signals[CHANGE_FOCUS_ROW_EXPANSION] = gtk_signal_new ("change_focus_row_expansion", GTK_RUN_LAST | GTK_RUN_ACTION, - object_class->type, + GTK_CLASS_TYPE (object_class), GTK_SIGNAL_OFFSET (GtkCTreeClass, change_focus_row_expansion), gtk_marshal_NONE__ENUM, GTK_TYPE_NONE, 1, GTK_TYPE_CTREE_EXPANSION_TYPE); gtk_object_class_add_signals (object_class, ctree_signals, LAST_SIGNAL); - + widget_class->realize = gtk_ctree_realize; widget_class->unrealize = gtk_ctree_unrealize; widget_class->button_press_event = gtk_ctree_button_press; - + widget_class->drag_begin = gtk_ctree_drag_begin; widget_class->drag_motion = gtk_ctree_drag_motion; widget_class->drag_data_received = gtk_ctree_drag_data_received; - + clist_class->select_row = real_select_row; clist_class->unselect_row = real_unselect_row; clist_class->row_move = real_row_move; @@ -459,14 +458,14 @@ gtk_ctree_class_init (GtkCTreeClass *klass) clist_class->sort_list = real_sort_list; clist_class->set_cell_contents = set_cell_contents; clist_class->cell_size_request = cell_size_request; - + klass->tree_select_row = real_tree_select; klass->tree_unselect_row = real_tree_unselect; klass->tree_expand = real_tree_expand; klass->tree_collapse = real_tree_collapse; klass->tree_move = real_tree_move; klass->change_focus_row_expansion = change_focus_row_expansion; - + binding_set = gtk_binding_set_by_class (klass); gtk_binding_entry_add_signal (binding_set, '+', GDK_SHIFT_MASK, @@ -515,9 +514,9 @@ gtk_ctree_set_arg (GtkObject *object, guint arg_id) { GtkCTree *ctree; - + ctree = GTK_CTREE (object); - + switch (arg_id) { case ARG_N_COLUMNS: /* construct-only arg, only set when !GTK_CONSTRUCTED */ @@ -563,9 +562,9 @@ gtk_ctree_get_arg (GtkObject *object, guint arg_id) { GtkCTree *ctree; - + ctree = GTK_CTREE (object); - + switch (arg_id) { case ARG_N_COLUMNS: @@ -599,12 +598,12 @@ static void gtk_ctree_init (GtkCTree *ctree) { GtkCList *clist; - + GTK_CLIST_SET_FLAG (ctree, CLIST_DRAW_DRAG_RECT); GTK_CLIST_SET_FLAG (ctree, CLIST_DRAW_DRAG_LINE); - + clist = GTK_CLIST (ctree); - + ctree->tree_indent = 20; ctree->tree_spacing = 5; ctree->tree_column = 0; @@ -612,7 +611,7 @@ gtk_ctree_init (GtkCTree *ctree) ctree->expander_style = GTK_CTREE_EXPANDER_SQUARE; ctree->drag_compare = NULL; ctree->show_stub = TRUE; - + clist->button_actions[0] |= GTK_BUTTON_EXPANDS; } @@ -623,24 +622,24 @@ ctree_attach_styles (GtkCTree *ctree, { GtkCList *clist; gint i; - + clist = GTK_CLIST (ctree); - + if (GTK_CTREE_ROW (node)->row.style) GTK_CTREE_ROW (node)->row.style = gtk_style_attach (GTK_CTREE_ROW (node)->row.style, clist->clist_window); - + if (GTK_CTREE_ROW (node)->row.fg_set || GTK_CTREE_ROW (node)->row.bg_set) { GdkColormap *colormap; - + colormap = gtk_widget_get_colormap (GTK_WIDGET (ctree)); if (GTK_CTREE_ROW (node)->row.fg_set) gdk_color_alloc (colormap, &(GTK_CTREE_ROW (node)->row.foreground)); if (GTK_CTREE_ROW (node)->row.bg_set) gdk_color_alloc (colormap, &(GTK_CTREE_ROW (node)->row.background)); } - + for (i = 0; i < clist->columns; i++) if (GTK_CTREE_ROW (node)->row.cell[i].style) GTK_CTREE_ROW (node)->row.cell[i].style = @@ -655,9 +654,9 @@ ctree_detach_styles (GtkCTree *ctree, { GtkCList *clist; gint i; - + clist = GTK_CLIST (ctree); - + if (GTK_CTREE_ROW (node)->row.style) gtk_style_detach (GTK_CTREE_ROW (node)->row.style); for (i = 0; i < clist->columns; i++) @@ -674,15 +673,15 @@ gtk_ctree_realize (GtkWidget *widget) GtkCTreeNode *node; GtkCTreeNode *child; gint i; - + g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_CTREE (widget)); - + GTK_WIDGET_CLASS (parent_class)->realize (widget); - + ctree = GTK_CTREE (widget); clist = GTK_CLIST (widget); - + node = GTK_CTREE_NODE (clist->row_list); for (i = 0; i < clist->rows; i++) { @@ -692,7 +691,7 @@ gtk_ctree_realize (GtkWidget *widget) gtk_ctree_pre_recursive (ctree, child, ctree_attach_styles, NULL); node = GTK_CTREE_NODE_NEXT (node); } - + values.foreground = widget->style->fg[GTK_STATE_NORMAL]; values.background = widget->style->base[GTK_STATE_NORMAL]; values.subwindow_mode = GDK_INCLUDE_INFERIORS; @@ -703,7 +702,7 @@ gtk_ctree_realize (GtkWidget *widget) GDK_GC_BACKGROUND | GDK_GC_SUBWINDOW | GDK_GC_LINE_STYLE); - + if (ctree->line_style == GTK_CTREE_LINES_DOTTED) { gdk_gc_set_line_attributes (ctree->lines_gc, 1, @@ -717,21 +716,21 @@ gtk_ctree_unrealize (GtkWidget *widget) { GtkCTree *ctree; GtkCList *clist; - + g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_CTREE (widget)); - + GTK_WIDGET_CLASS (parent_class)->unrealize (widget); - + ctree = GTK_CTREE (widget); clist = GTK_CLIST (widget); - + if (GTK_WIDGET_REALIZED (widget)) { GtkCTreeNode *node; GtkCTreeNode *child; gint i; - + node = GTK_CTREE_NODE (clist->row_list); for (i = 0; i < clist->rows; i++) { @@ -743,7 +742,7 @@ gtk_ctree_unrealize (GtkWidget *widget) node = GTK_CTREE_NODE_NEXT (node); } } - + gdk_gc_destroy (ctree->lines_gc); } @@ -754,19 +753,19 @@ gtk_ctree_button_press (GtkWidget *widget, GtkCTree *ctree; GtkCList *clist; gint button_actions; - + g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_CTREE (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); - + ctree = GTK_CTREE (widget); clist = GTK_CLIST (widget); - + button_actions = clist->button_actions[event->button - 1]; - + if (button_actions == GTK_BUTTON_IGNORED) return FALSE; - + if (event->window == clist->clist_window) { GtkCTreeNode *work; @@ -774,15 +773,15 @@ gtk_ctree_button_press (GtkWidget *widget, gint y; gint row; gint column; - + x = event->x; y = event->y; - + if (!gtk_clist_get_selection_info (clist, x, y, &row, &column)) return FALSE; - + work = GTK_CTREE_NODE (g_list_nth (clist->row_list, row)); - + if (button_actions & GTK_BUTTON_EXPANDS && (GTK_CTREE_ROW (work)->children && !GTK_CTREE_ROW (work)->is_leaf && (event->type == GDK_2BUTTON_PRESS || @@ -792,7 +791,7 @@ gtk_ctree_button_press (GtkWidget *widget, gtk_ctree_collapse (ctree, work); else gtk_ctree_expand (ctree, work); - + return FALSE; } } @@ -810,16 +809,16 @@ draw_drag_highlight (GtkCList *clist, gint level; gint i; gint y = 0; - + g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CTREE (clist)); - + ctree = GTK_CTREE (clist); - + level = ((GtkCTreeRow *)(dest_row))->level; - + y = ROW_TOP_YPIXEL (clist, dest_row_number) - 1; - + switch (drag_pos) { case GTK_CLIST_DRAG_NONE: @@ -840,7 +839,7 @@ draw_drag_highlight (GtkCList *clist, COLUMN_LEFT_XPIXEL(clist, ctree->tree_column - 1)+ clist->column[ctree->tree_column - 1].area.width, y); - + gdk_draw_line (clist->clist_window, clist->xor_gc, COLUMN_LEFT_XPIXEL(clist, ctree->tree_column) + ctree->tree_indent * level - @@ -854,7 +853,7 @@ draw_drag_highlight (GtkCList *clist, y, COLUMN_LEFT_XPIXEL(clist, clist->columns - 1) + clist->column[clist->columns - 1].area.width, y); - + gdk_draw_line (clist->clist_window, clist->xor_gc, 0, y, COLUMN_LEFT_XPIXEL(clist, ctree->tree_column) + clist->column[ctree->tree_column].area.width - @@ -868,7 +867,7 @@ draw_drag_highlight (GtkCList *clist, break; case GTK_CLIST_DRAG_INTO: y = ROW_TOP_YPIXEL (clist, dest_row_number) + clist->row_height; - + if (clist->column[ctree->tree_column].visible) switch (clist->column[ctree->tree_column].justification) { @@ -884,12 +883,12 @@ draw_drag_highlight (GtkCList *clist, points[1].y = points[0].y; points[2].x = points[1].x; points[2].y = points[3].y; - + for (i = 0; i < 3; i++) gdk_draw_line (clist->clist_window, clist->xor_gc, points[i].x, points[i].y, points[i+1].x, points[i+1].y); - + if (ctree->tree_column > 0) { points[0].x = COLUMN_LEFT_XPIXEL(clist, @@ -902,7 +901,7 @@ draw_drag_highlight (GtkCList *clist, points[1].y = points[0].y; points[2].x = 0; points[2].y = points[3].y; - + for (i = 0; i < 3; i++) gdk_draw_line (clist->clist_window, clist->xor_gc, points[i].x, points[i].y, points[i+1].x, @@ -920,12 +919,12 @@ draw_drag_highlight (GtkCList *clist, points[1].y = points[0].y; points[2].x = 0; points[2].y = points[3].y; - + for (i = 0; i < 3; i++) gdk_draw_line (clist->clist_window, clist->xor_gc, points[i].x, points[i].y, points[i+1].x, points[i+1].y); - + if (ctree->tree_column < clist->columns - 1) { points[0].x = COLUMN_LEFT_XPIXEL(clist, ctree->tree_column +1); @@ -936,7 +935,7 @@ draw_drag_highlight (GtkCList *clist, points[1].y = points[0].y; points[2].x = points[1].x; points[2].y = points[3].y; - + for (i = 0; i < 3; i++) gdk_draw_line (clist->clist_window, clist->xor_gc, points[i].x, points[i].y, @@ -965,7 +964,7 @@ draw_cell_pixmap (GdkWindow *window, { gint xsrc = 0; gint ysrc = 0; - + if (mask) { gdk_gc_set_clip_mask (fg_gc, mask); @@ -979,7 +978,7 @@ draw_cell_pixmap (GdkWindow *window, } if (x + width > clip_rectangle->x + clip_rectangle->width) width = clip_rectangle->x + clip_rectangle->width - x; - + if (y < clip_rectangle->y) { ysrc = clip_rectangle->y - y; @@ -988,16 +987,16 @@ draw_cell_pixmap (GdkWindow *window, } if (y + height > clip_rectangle->y + clip_rectangle->height) height = clip_rectangle->y + clip_rectangle->height - y; - + if (width > 0 && height > 0) gdk_draw_pixmap (window, fg_gc, pixmap, xsrc, ysrc, x, y, width, height); - + if (mask) { gdk_gc_set_clip_rectangle (fg_gc, NULL); gdk_gc_set_clip_origin (fg_gc, 0, 0); } - + return x + MAX (width, 0); } @@ -1011,13 +1010,13 @@ get_cell_style (GtkCList *clist, GdkGC **bg_gc) { gint fg_state; - + if ((state == GTK_STATE_NORMAL) && (GTK_WIDGET (clist)->state == GTK_STATE_INSENSITIVE)) fg_state = GTK_STATE_INSENSITIVE; else fg_state = state; - + if (clist_row->cell[column].style) { if (style) @@ -1056,7 +1055,7 @@ get_cell_style (GtkCList *clist, else *bg_gc = GTK_WIDGET (clist)->style->base_gc[state]; } - + if (state != GTK_STATE_SELECTED) { if (fg_gc && clist_row->fg_set) @@ -1078,10 +1077,10 @@ gtk_ctree_draw_expander (GtkCTree *ctree, GdkPoint points[3]; gint justification_factor; gint y; - - if (ctree->expander_style == GTK_CTREE_EXPANDER_NONE) - return x; - + + if (ctree->expander_style == GTK_CTREE_EXPANDER_NONE) + return x; + clist = GTK_CLIST (ctree); if (clist->column[ctree->tree_column].justification == GTK_JUSTIFY_RIGHT) justification_factor = -1; @@ -1089,7 +1088,7 @@ gtk_ctree_draw_expander (GtkCTree *ctree, justification_factor = 1; y = (clip_rectangle->y + (clip_rectangle->height - PM_SIZE) / 2 - (clip_rectangle->height + 1) % 2); - + if (!ctree_row->children) { switch (ctree->expander_style) @@ -1103,10 +1102,10 @@ gtk_ctree_draw_expander (GtkCTree *ctree, return x + justification_factor * (PM_SIZE + 1); } } - + gdk_gc_set_clip_rectangle (style->fg_gc[GTK_STATE_NORMAL], clip_rectangle); gdk_gc_set_clip_rectangle (style->base_gc[GTK_STATE_NORMAL], clip_rectangle); - + switch (ctree->expander_style) { case GTK_CTREE_EXPANDER_NONE: @@ -1132,19 +1131,19 @@ gtk_ctree_draw_expander (GtkCTree *ctree, justification_factor * (2 * (PM_SIZE + 2) / 3 - 1)); points[2].y = points[0].y + (PM_SIZE + 2) / 2; } - + gdk_draw_polygon (clist->clist_window, style->base_gc[GTK_STATE_NORMAL], TRUE, points, 3); gdk_draw_polygon (clist->clist_window, style->fg_gc[GTK_STATE_NORMAL], FALSE, points, 3); - + x += justification_factor * (PM_SIZE + 3); break; case GTK_CTREE_EXPANDER_SQUARE: case GTK_CTREE_EXPANDER_CIRCULAR: if (justification_factor == -1) x += justification_factor * (PM_SIZE + 1); - + if (ctree->expander_style == GTK_CTREE_EXPANDER_CIRCULAR) { gdk_draw_arc (clist->clist_window, style->base_gc[GTK_STATE_NORMAL], @@ -1161,23 +1160,23 @@ gtk_ctree_draw_expander (GtkCTree *ctree, style->fg_gc[GTK_STATE_NORMAL], FALSE, x, y, PM_SIZE, PM_SIZE); } - + gdk_draw_line (clist->clist_window, style->fg_gc[GTK_STATE_NORMAL], x + 2, y + PM_SIZE / 2, x + PM_SIZE - 2, y + PM_SIZE / 2); - + if (!ctree_row->expanded) gdk_draw_line (clist->clist_window, style->fg_gc[GTK_STATE_NORMAL], x + PM_SIZE / 2, y + 2, x + PM_SIZE / 2, y + PM_SIZE - 2); - + if (justification_factor == 1) x += justification_factor * (PM_SIZE + 1); break; } - + gdk_gc_set_clip_rectangle (style->fg_gc[GTK_STATE_NORMAL], NULL); gdk_gc_set_clip_rectangle (style->base_gc[GTK_STATE_NORMAL], NULL); - + return x; } @@ -1214,7 +1213,7 @@ gtk_ctree_draw_lines (GtkCTree *ctree, clist = GTK_CLIST (ctree); ycenter = clip_rectangle->y + (clip_rectangle->height / 2); justify_right = (clist->column[column].justification == GTK_JUSTIFY_RIGHT); - + if (justify_right) { offset = (clip_rectangle->x + clip_rectangle->width - 1 - @@ -1226,25 +1225,25 @@ gtk_ctree_draw_lines (GtkCTree *ctree, offset = clip_rectangle->x + ctree->tree_indent * (ctree_row->level - 1); justification_factor = 1; } - + switch (ctree->line_style) { case GTK_CTREE_LINES_NONE: break; case GTK_CTREE_LINES_TABBED: xcenter = offset + justification_factor * TAB_SIZE; - + column_right = (COLUMN_LEFT_XPIXEL (clist, ctree->tree_column) + clist->column[ctree->tree_column].area.width + COLUMN_INSET); column_left = (COLUMN_LEFT_XPIXEL (clist, ctree->tree_column) - COLUMN_INSET - CELL_SPACING); - + if (area) { tree_rectangle.y = crect->y; tree_rectangle.height = crect->height; - + if (justify_right) { tree_rectangle.x = xcenter; @@ -1255,18 +1254,18 @@ gtk_ctree_draw_lines (GtkCTree *ctree, tree_rectangle.x = column_left; tree_rectangle.width = xcenter - column_left; } - + if (!gdk_rectangle_intersect (area, &tree_rectangle, &tc_rectangle)) { offset += justification_factor * 3; break; } } - + gdk_gc_set_clip_rectangle (ctree->lines_gc, crect); - + next_level = ctree_row->level; - + if (!ctree_row->sibling || (ctree_row->children && ctree_row->expanded)) { node = gtk_ctree_find_node_ptr (ctree, ctree_row); @@ -1275,21 +1274,21 @@ gtk_ctree_draw_lines (GtkCTree *ctree, else next_level = 0; } - + if (ctree->tree_indent > 0) { node = ctree_row->parent; while (node) { xcenter -= (justification_factor * ctree->tree_indent); - + if ((justify_right && xcenter < column_left) || (!justify_right && xcenter > column_right)) { node = GTK_CTREE_ROW (node)->parent; continue; } - + tree_rectangle.y = cell_rectangle->y; tree_rectangle.height = cell_rectangle->height; if (justify_right) @@ -1305,17 +1304,17 @@ gtk_ctree_draw_lines (GtkCTree *ctree, tree_rectangle.width = MIN (column_right - xcenter, ctree->tree_indent); } - + if (!area || gdk_rectangle_intersect (area, &tree_rectangle, &tc_rectangle)) { get_cell_style (clist, >K_CTREE_ROW (node)->row, state, column, NULL, NULL, &bg_gc); - + if (bg_gc == clist->bg_gc) gdk_gc_set_foreground (clist->bg_gc, >K_CTREE_ROW (node)->row.background); - + if (!area) gdk_draw_rectangle (clist->clist_window, bg_gc, TRUE, tree_rectangle.x, @@ -1336,16 +1335,16 @@ gtk_ctree_draw_lines (GtkCTree *ctree, else { gint width; - + offset_x = MIN (ctree->tree_indent, 2 * TAB_SIZE); width = offset_x / 2 + offset_x % 2; - + parent = GTK_CTREE_ROW (node)->parent; - + tree_rectangle.y = ycenter; tree_rectangle.height = (cell_rectangle->y - ycenter + cell_rectangle->height); - + if (justify_right) { tree_rectangle.x = MAX(xcenter + 1 - width, column_left); @@ -1358,7 +1357,7 @@ gtk_ctree_draw_lines (GtkCTree *ctree, tree_rectangle.width = MIN (column_right - xcenter, width); } - + if (!area || gdk_rectangle_intersect (area, &tree_rectangle, &tc_rectangle)) @@ -1376,7 +1375,7 @@ gtk_ctree_draw_lines (GtkCTree *ctree, bg_gc = style->base_gc[state]; else bg_gc = GTK_WIDGET (clist)->style->base_gc[state]; - + if (!area) gdk_draw_rectangle (clist->clist_window, bg_gc, TRUE, tree_rectangle.x, @@ -1391,13 +1390,13 @@ gtk_ctree_draw_lines (GtkCTree *ctree, tc_rectangle.width, tc_rectangle.height); } - + get_cell_style (clist, >K_CTREE_ROW (node)->row, state, column, NULL, NULL, &bg_gc); if (bg_gc == clist->bg_gc) gdk_gc_set_foreground (clist->bg_gc, >K_CTREE_ROW (node)->row.background); - + gdk_gc_set_clip_rectangle (bg_gc, crect); gdk_draw_arc (clist->clist_window, bg_gc, TRUE, xcenter - (justify_right * offset_x), @@ -1405,10 +1404,10 @@ gtk_ctree_draw_lines (GtkCTree *ctree, offset_x, clist->row_height, (180 + (justify_right * 90)) * 64, 90 * 64); gdk_gc_set_clip_rectangle (bg_gc, NULL); - + gdk_draw_line (clist->clist_window, ctree->lines_gc, xcenter, cell_rectangle->y, xcenter, ycenter); - + if (justify_right) gdk_draw_arc (clist->clist_window, ctree->lines_gc, FALSE, xcenter - offset_x, cell_rectangle->y, @@ -1423,7 +1422,7 @@ gtk_ctree_draw_lines (GtkCTree *ctree, node = GTK_CTREE_ROW (node)->parent; } } - + if (state != GTK_STATE_SELECTED) { tree_rectangle.y = clip_rectangle->y; @@ -1431,12 +1430,12 @@ gtk_ctree_draw_lines (GtkCTree *ctree, tree_rectangle.width = COLUMN_INSET + CELL_SPACING + MIN (clist->column[ctree->tree_column].area.width + COLUMN_INSET, TAB_SIZE); - + if (justify_right) tree_rectangle.x = MAX (xcenter + 1, column_left); else tree_rectangle.x = column_left; - + if (!area) gdk_draw_rectangle (clist->clist_window, GTK_WIDGET @@ -1457,37 +1456,37 @@ gtk_ctree_draw_lines (GtkCTree *ctree, tc_rectangle.width, tc_rectangle.height); } - + xcenter = offset + (justification_factor * ctree->tree_indent / 2); - + get_cell_style (clist, &ctree_row->row, state, column, NULL, NULL, &bg_gc); if (bg_gc == clist->bg_gc) gdk_gc_set_foreground (clist->bg_gc, &ctree_row->row.background); - + gdk_gc_set_clip_rectangle (bg_gc, crect); if (ctree_row->is_leaf) { GdkPoint points[6]; - + points[0].x = offset + justification_factor * TAB_SIZE; points[0].y = cell_rectangle->y; - + points[1].x = points[0].x - justification_factor * 4; points[1].y = points[0].y; - + points[2].x = points[1].x - justification_factor * 2; points[2].y = points[1].y + 3; - + points[3].x = points[2].x; points[3].y = points[2].y + clist->row_height - 5; - + points[4].x = points[3].x + justification_factor * 2; points[4].y = points[3].y + 3; - + points[5].x = points[4].x + justification_factor * 4; points[5].y = points[4].y; - + gdk_draw_polygon (clist->clist_window, bg_gc, TRUE, points, 6); gdk_draw_lines (clist->clist_window, ctree->lines_gc, points, 6); } @@ -1506,17 +1505,17 @@ gtk_ctree_draw_lines (GtkCTree *ctree, } gdk_gc_set_clip_rectangle (bg_gc, NULL); gdk_gc_set_clip_rectangle (ctree->lines_gc, NULL); - + offset += justification_factor * 3; break; default: xcenter = offset + justification_factor * PM_SIZE / 2; - + if (area) { tree_rectangle.y = crect->y; tree_rectangle.height = crect->height; - + if (justify_right) { tree_rectangle.x = xcenter - PM_SIZE / 2 - 2; @@ -1529,11 +1528,11 @@ gtk_ctree_draw_lines (GtkCTree *ctree, tree_rectangle.width = (xcenter + PM_SIZE / 2 + 2 - clip_rectangle->x); } - + if (!gdk_rectangle_intersect (area, &tree_rectangle, &tc_rectangle)) break; } - + offset_x = 1; offset_y = 0; if (ctree->line_style == GTK_CTREE_LINES_DOTTED) @@ -1541,7 +1540,7 @@ gtk_ctree_draw_lines (GtkCTree *ctree, offset_x += abs((clip_rectangle->x + clist->hoffset) % 2); offset_y = abs((cell_rectangle->y + clist->voffset) % 2); } - + clip_rectangle->y--; clip_rectangle->height++; gdk_gc_set_clip_rectangle (ctree->lines_gc, clip_rectangle); @@ -1551,17 +1550,17 @@ gtk_ctree_draw_lines (GtkCTree *ctree, cell_rectangle->y + offset_y : ycenter, xcenter, (ctree_row->sibling) ? crect->y +crect->height : ycenter); - + gdk_draw_line (clist->clist_window, ctree->lines_gc, xcenter + (justification_factor * offset_x), ycenter, xcenter + (justification_factor * (PM_SIZE / 2 + 2)), ycenter); - + node = ctree_row->parent; while (node) { xcenter -= (justification_factor * ctree->tree_indent); - + if (GTK_CTREE_ROW (node)->sibling) gdk_draw_line (clist->clist_window, ctree->lines_gc, xcenter, cell_rectangle->y + offset_y, @@ -1596,40 +1595,40 @@ draw_row (GtkCList *clist, gint offset = 0; gint state; gint i; - + g_return_if_fail (clist != NULL); - + /* bail now if we arn't drawable yet */ if (!GTK_WIDGET_DRAWABLE (clist) || row < 0 || row >= clist->rows) return; - + widget = GTK_WIDGET (clist); ctree = GTK_CTREE (clist); - + /* if the function is passed the pointer to the row instead of null, * it avoids this expensive lookup */ if (!clist_row) clist_row = (g_list_nth (clist->row_list, row))->data; - + /* rectangle of the entire row */ row_rectangle.x = 0; row_rectangle.y = ROW_TOP_YPIXEL (clist, row); row_rectangle.width = clist->clist_window_width; row_rectangle.height = clist->row_height; - + /* rectangle of the cell spacing above the row */ cell_rectangle.x = 0; cell_rectangle.y = row_rectangle.y - CELL_SPACING; cell_rectangle.width = row_rectangle.width; cell_rectangle.height = CELL_SPACING; - + /* rectangle used to clip drawing operations, its y and height * positions only need to be set once, so we set them once here. * the x and width are set withing the drawing loop below once per * column */ clip_rectangle.y = row_rectangle.y; clip_rectangle.height = row_rectangle.height; - + if (clist_row->state == GTK_STATE_NORMAL) { if (clist_row->fg_set) @@ -1639,16 +1638,16 @@ draw_row (GtkCList *clist, } state = clist_row->state; - + gdk_gc_set_foreground (ctree->lines_gc, &widget->style->fg[clist_row->state]); - + /* draw the cell borders */ if (area) { rect = &intersect_rectangle; crect = &intersect_rectangle; - + if (gdk_rectangle_intersect (area, &cell_rectangle, crect)) gdk_draw_rectangle (clist->clist_window, widget->style->base_gc[GTK_STATE_ACTIVE], TRUE, @@ -1658,22 +1657,22 @@ draw_row (GtkCList *clist, { rect = &clip_rectangle; crect = &cell_rectangle; - + gdk_draw_rectangle (clist->clist_window, widget->style->base_gc[GTK_STATE_ACTIVE], TRUE, crect->x, crect->y, crect->width, crect->height); } - + /* horizontal black lines */ if (ctree->line_style == GTK_CTREE_LINES_TABBED) { - + column_right = (COLUMN_LEFT_XPIXEL (clist, ctree->tree_column) + clist->column[ctree->tree_column].area.width + COLUMN_INSET); column_left = (COLUMN_LEFT_XPIXEL (clist, ctree->tree_column) - COLUMN_INSET - (ctree->tree_column != 0) * CELL_SPACING); - + switch (clist->column[ctree->tree_column].justification) { case GTK_JUSTIFY_CENTER: @@ -1681,7 +1680,7 @@ draw_row (GtkCList *clist, case GTK_JUSTIFY_LEFT: offset = (column_left + ctree->tree_indent * (((GtkCTreeRow *)clist_row)->level - 1)); - + gdk_draw_line (clist->clist_window, ctree->lines_gc, MIN (offset + TAB_SIZE, column_right), cell_rectangle.y, @@ -1690,7 +1689,7 @@ draw_row (GtkCList *clist, case GTK_JUSTIFY_RIGHT: offset = (column_right - 1 - ctree->tree_indent * (((GtkCTreeRow *)clist_row)->level - 1)); - + gdk_draw_line (clist->clist_window, ctree->lines_gc, -1, cell_rectangle.y, MAX (offset - TAB_SIZE, column_left), @@ -1698,18 +1697,18 @@ draw_row (GtkCList *clist, break; } } - + /* the last row has to clear its bottom cell spacing too */ if (clist_row == clist->row_list_end->data) { cell_rectangle.y += clist->row_height + CELL_SPACING; - + if (!area || gdk_rectangle_intersect (area, &cell_rectangle, crect)) { gdk_draw_rectangle (clist->clist_window, widget->style->base_gc[GTK_STATE_ACTIVE], TRUE, crect->x, crect->y, crect->width, crect->height); - + /* horizontal black lines */ if (ctree->line_style == GTK_CTREE_LINES_TABBED) { @@ -1739,43 +1738,43 @@ draw_row (GtkCList *clist, } } } - + for (last_column = clist->columns - 1; last_column >= 0 && !clist->column[last_column].visible; last_column--) ; - + /* iterate and draw all the columns (row cells) and draw their contents */ for (i = 0; i < clist->columns; i++) { GtkStyle *style; GdkGC *fg_gc; GdkGC *bg_gc; - + gint width; gint height; gint pixmap_width; gint string_width; gint old_offset; gint row_center_offset; - + if (!clist->column[i].visible) continue; - + get_cell_style (clist, clist_row, state, i, &style, &fg_gc, &bg_gc); - + /* calculate clipping region */ clip_rectangle.x = clist->column[i].area.x + clist->hoffset; clip_rectangle.width = clist->column[i].area.width; - + cell_rectangle.x = clip_rectangle.x - COLUMN_INSET - CELL_SPACING; cell_rectangle.width = (clip_rectangle.width + 2 * COLUMN_INSET + (1 + (i == last_column)) * CELL_SPACING); cell_rectangle.y = clip_rectangle.y; cell_rectangle.height = clip_rectangle.height; - + string_width = 0; pixmap_width = 0; - + if (area && !gdk_rectangle_intersect (area, &cell_rectangle, &intersect_rectangle)) { @@ -1786,7 +1785,7 @@ draw_row (GtkCList *clist, { gdk_draw_rectangle (clist->clist_window, bg_gc, TRUE, crect->x, crect->y, crect->width, crect->height); - + /* calculate real width for column justification */ switch (clist_row->cell[i].type) { @@ -1805,20 +1804,20 @@ draw_row (GtkCList *clist, gdk_window_get_size (GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap, &pixmap_width, &height); - + width = pixmap_width; - + if (GTK_CELL_PIXTEXT (clist_row->cell[i])->text) { string_width = gdk_string_width (style->font, GTK_CELL_PIXTEXT (clist_row->cell[i])->text); width += string_width; } - + if (GTK_CELL_PIXTEXT (clist_row->cell[i])->text && GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap) width += GTK_CELL_PIXTEXT (clist_row->cell[i])->spacing; - + if (i == ctree->tree_column) width += (ctree->tree_indent * ((GtkCTreeRow *)clist_row)->level); @@ -1827,7 +1826,7 @@ draw_row (GtkCList *clist, continue; break; } - + switch (clist->column[i].justification) { case GTK_JUSTIFY_LEFT: @@ -1843,7 +1842,7 @@ draw_row (GtkCList *clist, (clip_rectangle.width / 2) - (width / 2)); break; }; - + if (i != ctree->tree_column) { offset += clist_row->cell[i].horizontal; @@ -1877,7 +1876,7 @@ draw_row (GtkCList *clist, 1.5 + style->font->ascent); else row_center_offset = clist->row_center_offset; - + gdk_gc_set_clip_rectangle (fg_gc, &clip_rectangle); gdk_draw_string (clist->clist_window, style->font, fg_gc, @@ -1895,37 +1894,37 @@ draw_row (GtkCList *clist, continue; } } - + if (bg_gc == clist->bg_gc) gdk_gc_set_background (ctree->lines_gc, &clist_row->background); - + /* draw ctree->tree_column */ cell_rectangle.y -= CELL_SPACING; cell_rectangle.height += CELL_SPACING; - + if (area && !gdk_rectangle_intersect (area, &cell_rectangle, &intersect_rectangle)) continue; - + /* draw lines */ offset = gtk_ctree_draw_lines (ctree, (GtkCTreeRow *)clist_row, row, i, state, &clip_rectangle, &cell_rectangle, crect, area, style); - + /* draw expander */ offset = gtk_ctree_draw_expander (ctree, (GtkCTreeRow *)clist_row, style, &clip_rectangle, offset); - + if (clist->column[i].justification == GTK_JUSTIFY_RIGHT) offset -= ctree->tree_spacing; else offset += ctree->tree_spacing; - + if (clist->column[i].justification == GTK_JUSTIFY_RIGHT) offset -= (pixmap_width + clist_row->cell[i].horizontal); else offset += clist_row->cell[i].horizontal; - + old_offset = offset; offset = draw_cell_pixmap (clist->clist_window, &clip_rectangle, fg_gc, GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap, @@ -1934,7 +1933,7 @@ draw_row (GtkCList *clist, clip_rectangle.y + clist_row->cell[i].vertical + (clip_rectangle.height - height) / 2, pixmap_width, height); - + if (string_width) { if (clist->column[i].justification == GTK_JUSTIFY_RIGHT) @@ -1948,7 +1947,7 @@ draw_row (GtkCList *clist, if (GTK_CELL_PIXTEXT (clist_row->cell[i])->pixmap) offset += GTK_CELL_PIXTEXT (clist_row->cell[i])->spacing; } - + if (style != GTK_WIDGET (clist)->style) row_center_offset = (((clist->row_height - style->font->ascent - style->font->descent - 1) / 2) + @@ -1964,7 +1963,7 @@ draw_row (GtkCList *clist, } gdk_gc_set_clip_rectangle (fg_gc, NULL); } - + /* draw focus rectangle */ if (clist->focus_row == row && GTK_WIDGET_CAN_FOCUS (widget) && GTK_WIDGET_HAS_FOCUS (widget)) @@ -1993,7 +1992,7 @@ tree_draw_node (GtkCTree *ctree, GtkCList *clist; clist = GTK_CLIST (ctree); - + if (CLIST_UNFROZEN (clist) && gtk_ctree_is_viewable (ctree, node)) { GtkCTreeNode *work; @@ -2006,7 +2005,7 @@ tree_draw_node (GtkCTree *ctree, num++; } if (work && gtk_clist_row_is_visible (clist, num) != GTK_VISIBILITY_NONE) - GTK_CLIST_CLASS_FW (clist)->draw_row + GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, num, GTK_CLIST_ROW ((GList *) node)); } } @@ -2019,15 +2018,15 @@ gtk_ctree_last_visible (GtkCTree *ctree, if (!node) return NULL; - + work = GTK_CTREE_ROW (node)->children; - + if (!work || !GTK_CTREE_ROW (node)->expanded) return node; - + while (GTK_CTREE_ROW (work)->sibling) work = GTK_CTREE_ROW (work)->sibling; - + return gtk_ctree_last_visible (ctree, work); } @@ -2050,38 +2049,38 @@ gtk_ctree_link (GtkCTree *ctree, g_return_if_fail (node != NULL); g_return_if_fail (node != sibling); g_return_if_fail (node != parent); - + clist = GTK_CLIST (ctree); - + if (update_focus_row && clist->selection_mode == GTK_SELECTION_EXTENDED) { - GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL); + GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL); g_list_free (clist->undo_selection); g_list_free (clist->undo_unselection); clist->undo_selection = NULL; clist->undo_unselection = NULL; } - + for (rows = 1, list_end = (GList *)node; list_end->next; list_end = list_end->next) rows++; - + GTK_CTREE_ROW (node)->parent = parent; GTK_CTREE_ROW (node)->sibling = sibling; - + if (!parent || (parent && (gtk_ctree_is_viewable (ctree, parent) && GTK_CTREE_ROW (parent)->expanded))) { visible = TRUE; clist->rows += rows; } - + if (parent) work = (GList *)(GTK_CTREE_ROW (parent)->children); else work = clist->row_list; - + if (sibling) { if (work != (GList *)sibling) @@ -2090,7 +2089,7 @@ gtk_ctree_link (GtkCTree *ctree, work = (GList *)(GTK_CTREE_ROW (work)->sibling); GTK_CTREE_ROW (work)->sibling = node; } - + if (sibling == GTK_CTREE_NODE (clist->row_list)) clist->row_list = (GList *) node; if (GTK_CTREE_NODE_PREV (sibling) && @@ -2158,19 +2157,19 @@ gtk_ctree_link (GtkCTree *ctree, } } } - + gtk_ctree_pre_recursive (ctree, node, tree_update_level, NULL); - + if (clist->row_list_end == NULL || clist->row_list_end->next == (GList *)node) clist->row_list_end = list_end; - + if (visible && update_focus_row) { gint pos; - + pos = g_list_position (clist->row_list, (GList *)node); - + if (pos <= clist->focus_row) { clist->focus_row += rows; @@ -2191,25 +2190,25 @@ gtk_ctree_unlink (GtkCTree *ctree, GtkCTreeNode *work; GtkCTreeNode *parent; GList *list; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); - + clist = GTK_CLIST (ctree); if (update_focus_row && clist->selection_mode == GTK_SELECTION_EXTENDED) { - GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL); + GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL); g_list_free (clist->undo_selection); g_list_free (clist->undo_unselection); clist->undo_selection = NULL; clist->undo_unselection = NULL; } - + visible = gtk_ctree_is_viewable (ctree, node); - + /* clist->row_list_end unlinked ? */ if (visible && (GTK_CTREE_NODE_NEXT (node) == NULL || @@ -2217,7 +2216,7 @@ gtk_ctree_unlink (GtkCTree *ctree, gtk_ctree_is_ancestor (ctree, node, GTK_CTREE_NODE (clist->row_list_end))))) clist->row_list_end = (GList *) (GTK_CTREE_NODE_PREV (node)); - + /* update list */ rows = 0; level = GTK_CTREE_ROW (node)->level; @@ -2227,11 +2226,11 @@ gtk_ctree_unlink (GtkCTree *ctree, work = GTK_CTREE_NODE_NEXT (work); rows++; } - + if (visible) { clist->rows -= (rows + 1); - + if (update_focus_row) { gint pos; @@ -2251,7 +2250,7 @@ gtk_ctree_unlink (GtkCTree *ctree, clist->undo_anchor = clist->focus_row; } } - + if (work) { list = (GList *)GTK_CTREE_NODE_PREV (work); @@ -2259,14 +2258,14 @@ gtk_ctree_unlink (GtkCTree *ctree, list = (GList *)work; list->prev = (GList *)GTK_CTREE_NODE_PREV (node); } - + if (GTK_CTREE_NODE_PREV (node) && GTK_CTREE_NODE_NEXT (GTK_CTREE_NODE_PREV (node)) == node) { list = (GList *)GTK_CTREE_NODE_PREV (node); list->next = (GList *)work; } - + /* update tree */ parent = GTK_CTREE_ROW (node)->parent; if (parent) @@ -2280,7 +2279,7 @@ gtk_ctree_unlink (GtkCTree *ctree, else { GtkCTreeNode *sibling; - + sibling = GTK_CTREE_ROW (parent)->children; while (GTK_CTREE_ROW (sibling)->sibling != node) sibling = GTK_CTREE_ROW (sibling)->sibling; @@ -2294,7 +2293,7 @@ gtk_ctree_unlink (GtkCTree *ctree, else { GtkCTreeNode *sibling; - + sibling = GTK_CTREE_NODE (clist->row_list); while (GTK_CTREE_ROW (sibling)->sibling != node) sibling = GTK_CTREE_ROW (sibling)->sibling; @@ -2310,42 +2309,42 @@ real_row_move (GtkCList *clist, { GtkCTree *ctree; GtkCTreeNode *node; - + g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CTREE (clist)); - + if (GTK_CLIST_AUTO_SORT (clist)) return; - + if (source_row < 0 || source_row >= clist->rows || dest_row < 0 || dest_row >= clist->rows || source_row == dest_row) return; - + ctree = GTK_CTREE (clist); node = GTK_CTREE_NODE (g_list_nth (clist->row_list, source_row)); - + if (source_row < dest_row) { GtkCTreeNode *work; - + dest_row++; work = GTK_CTREE_ROW (node)->children; - + while (work && GTK_CTREE_ROW (work)->level > GTK_CTREE_ROW (node)->level) { work = GTK_CTREE_NODE_NEXT (work); dest_row++; } - + if (dest_row > clist->rows) dest_row = clist->rows; } - + if (dest_row < clist->rows) { GtkCTreeNode *sibling; - + sibling = GTK_CTREE_NODE (g_list_nth (clist->row_list, dest_row)); gtk_ctree_move (ctree, node, GTK_CTREE_ROW (sibling)->parent, sibling); } @@ -2362,34 +2361,34 @@ real_tree_move (GtkCTree *ctree, GtkCList *clist; GtkCTreeNode *work; gboolean visible = FALSE; - + g_return_if_fail (ctree != NULL); g_return_if_fail (node != NULL); g_return_if_fail (!new_sibling || GTK_CTREE_ROW (new_sibling)->parent == new_parent); - + if (new_parent && GTK_CTREE_ROW (new_parent)->is_leaf) return; - + /* new_parent != child of child */ for (work = new_parent; work; work = GTK_CTREE_ROW (work)->parent) if (work == node) return; - + clist = GTK_CLIST (ctree); - + visible = gtk_ctree_is_viewable (ctree, node); - + if (clist->selection_mode == GTK_SELECTION_EXTENDED) { - GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL); + GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL); g_list_free (clist->undo_selection); g_list_free (clist->undo_unselection); clist->undo_selection = NULL; clist->undo_unselection = NULL; } - + if (GTK_CLIST_AUTO_SORT (clist)) { if (new_parent == GTK_CTREE_ROW (node)->parent) @@ -2399,23 +2398,23 @@ real_tree_move (GtkCTree *ctree, new_sibling = GTK_CTREE_ROW (new_parent)->children; else new_sibling = GTK_CTREE_NODE (clist->row_list); - + while (new_sibling && clist->compare (clist, GTK_CTREE_ROW (node), GTK_CTREE_ROW (new_sibling)) > 0) new_sibling = GTK_CTREE_ROW (new_sibling)->sibling; } - + if (new_parent == GTK_CTREE_ROW (node)->parent && new_sibling == GTK_CTREE_ROW (node)->sibling) return; - + gtk_clist_freeze (clist); - + work = NULL; if (gtk_ctree_is_viewable (ctree, node) || gtk_ctree_is_viewable (ctree, new_sibling)) work = GTK_CTREE_NODE (g_list_nth (clist->row_list, clist->focus_row)); - + gtk_ctree_unlink (ctree, node, FALSE); gtk_ctree_link (ctree, node, new_parent, new_sibling, FALSE); @@ -2426,14 +2425,14 @@ real_tree_move (GtkCTree *ctree, clist->focus_row = g_list_position (clist->row_list, (GList *)work); clist->undo_anchor = clist->focus_row; } - + if (clist->column[ctree->tree_column].auto_resize && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist) && (visible || gtk_ctree_is_viewable (ctree, node))) gtk_clist_set_column_width (clist, ctree->tree_column, gtk_clist_optimal_column_width (clist, ctree->tree_column)); - + gtk_clist_thaw (clist); } @@ -2443,12 +2442,12 @@ change_focus_row_expansion (GtkCTree *ctree, { GtkCList *clist; GtkCTreeNode *node; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + clist = GTK_CLIST (ctree); - + if (gdk_pointer_is_grabbed () && GTK_WIDGET_HAS_GRAB (ctree)) return; @@ -2456,7 +2455,7 @@ change_focus_row_expansion (GtkCTree *ctree, GTK_CTREE_NODE (g_list_nth (clist->row_list, clist->focus_row))) || GTK_CTREE_ROW (node)->is_leaf || !(GTK_CTREE_ROW (node)->children)) return; - + switch (action) { case GTK_CTREE_EXPANSION_EXPAND: @@ -2489,27 +2488,27 @@ real_tree_expand (GtkCTree *ctree, GtkRequisition requisition; gboolean visible; gint level; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + if (!node || GTK_CTREE_ROW (node)->expanded || GTK_CTREE_ROW (node)->is_leaf) return; - + clist = GTK_CLIST (ctree); - GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL); - + GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL); + GTK_CTREE_ROW (node)->expanded = TRUE; level = GTK_CTREE_ROW (node)->level; - + visible = gtk_ctree_is_viewable (ctree, node); /* get cell width if tree_column is auto resized */ if (visible && clist->column[ctree->tree_column].auto_resize && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist)) - GTK_CLIST_CLASS_FW (clist)->cell_size_request + GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, >K_CTREE_ROW (node)->row, ctree->tree_column, &requisition); - + /* unref/unset closed pixmap */ if (GTK_CELL_PIXTEXT (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap) @@ -2531,21 +2530,21 @@ real_tree_expand (GtkCTree *ctree, (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask = NULL; } } - + /* set/ref opened pixmap */ if (GTK_CTREE_ROW (node)->pixmap_opened) { GTK_CELL_PIXTEXT (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap = gdk_pixmap_ref (GTK_CTREE_ROW (node)->pixmap_opened); - + if (GTK_CTREE_ROW (node)->mask_opened) GTK_CELL_PIXTEXT (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask = gdk_pixmap_ref (GTK_CTREE_ROW (node)->mask_opened); } - - + + work = GTK_CTREE_ROW (node)->children; if (work) { @@ -2559,19 +2558,19 @@ real_tree_expand (GtkCTree *ctree, { cell_width = g_new0 (gint, clist->columns); if (clist->column[ctree->tree_column].auto_resize) - cell_width[ctree->tree_column] = requisition.width; - + cell_width[ctree->tree_column] = requisition.width; + while (work) { /* search maximum cell widths of auto_resize columns */ for (i = 0; i < clist->columns; i++) if (clist->column[i].auto_resize) { - GTK_CLIST_CLASS_FW (clist)->cell_size_request + GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, >K_CTREE_ROW (work)->row, i, &requisition); cell_width[i] = MAX (requisition.width, cell_width[i]); } - + list = (GList *)work; work = GTK_CTREE_NODE_NEXT (work); tmp++; @@ -2584,22 +2583,22 @@ real_tree_expand (GtkCTree *ctree, work = GTK_CTREE_NODE_NEXT (work); tmp++; } - + list->next = (GList *)GTK_CTREE_NODE_NEXT (node); - + if (GTK_CTREE_NODE_NEXT (node)) { GList *tmp_list; - + tmp_list = (GList *)GTK_CTREE_NODE_NEXT (node); tmp_list->prev = list; } else clist->row_list_end = list; - + list = (GList *)node; list->next = (GList *)(GTK_CTREE_ROW (node)->children); - + if (visible) { /* resize auto_resize columns if needed */ @@ -2608,12 +2607,12 @@ real_tree_expand (GtkCTree *ctree, cell_width[i] > clist->column[i].width) gtk_clist_set_column_width (clist, i, cell_width[i]); g_free (cell_width); - + /* update focus_row position */ row = g_list_position (clist->row_list, (GList *)node); if (row < clist->focus_row) clist->focus_row += tmp; - + clist->rows += tmp; CLIST_REFRESH (clist); } @@ -2633,28 +2632,28 @@ real_tree_collapse (GtkCTree *ctree, GtkRequisition requisition; gboolean visible; gint level; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + if (!node || !GTK_CTREE_ROW (node)->expanded || GTK_CTREE_ROW (node)->is_leaf) return; - + clist = GTK_CLIST (ctree); - - GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL); + + GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL); GTK_CTREE_ROW (node)->expanded = FALSE; level = GTK_CTREE_ROW (node)->level; - + visible = gtk_ctree_is_viewable (ctree, node); /* get cell width if tree_column is auto resized */ if (visible && clist->column[ctree->tree_column].auto_resize && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist)) - GTK_CLIST_CLASS_FW (clist)->cell_size_request + GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, >K_CTREE_ROW (node)->row, ctree->tree_column, &requisition); - + /* unref/unset opened pixmap */ if (GTK_CELL_PIXTEXT (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap) @@ -2676,33 +2675,33 @@ real_tree_collapse (GtkCTree *ctree, (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask = NULL; } } - + /* set/ref closed pixmap */ if (GTK_CTREE_ROW (node)->pixmap_closed) { GTK_CELL_PIXTEXT (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->pixmap = gdk_pixmap_ref (GTK_CTREE_ROW (node)->pixmap_closed); - + if (GTK_CTREE_ROW (node)->mask_closed) GTK_CELL_PIXTEXT (GTK_CTREE_ROW (node)->row.cell[ctree->tree_column])->mask = gdk_pixmap_ref (GTK_CTREE_ROW (node)->mask_closed); } - + work = GTK_CTREE_ROW (node)->children; if (work) { gint tmp = 0; gint row; GList *list; - + while (work && GTK_CTREE_ROW (work)->level > level) { work = GTK_CTREE_NODE_NEXT (work); tmp++; } - + if (work) { list = (GList *)node; @@ -2718,12 +2717,12 @@ real_tree_collapse (GtkCTree *ctree, list->next = NULL; clist->row_list_end = (GList *)node; } - + if (visible) { /* resize auto_resize columns if needed */ auto_resize_columns (clist); - + row = g_list_position (clist->row_list, (GList *)node); if (row < clist->focus_row) clist->focus_row -= tmp; @@ -2736,7 +2735,7 @@ real_tree_collapse (GtkCTree *ctree, /* resize tree_column if needed */ column_auto_resize (clist, >K_CTREE_ROW (node)->row, ctree->tree_column, requisition.width); - + } static void @@ -2747,17 +2746,17 @@ column_auto_resize (GtkCList *clist, { /* resize column if needed for auto_resize */ GtkRequisition requisition; - + if (!clist->column[column].auto_resize || GTK_CLIST_AUTO_RESIZE_BLOCKED (clist)) return; - + if (clist_row) - GTK_CLIST_CLASS_FW (clist)->cell_size_request (clist, clist_row, - column, &requisition); + GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, clist_row, + column, &requisition); else requisition.width = 0; - + if (requisition.width > clist->column[column].width) gtk_clist_set_column_width (clist, column, requisition.width); else if (requisition.width < old_width && @@ -2765,7 +2764,7 @@ column_auto_resize (GtkCList *clist, { GList *list; gint new_width; - + /* run a "gtk_clist_optimal_column_width" but break, if * the column doesn't shrink */ if (GTK_CLIST_SHOW_TITLES (clist) && clist->column[column].button) @@ -2773,10 +2772,10 @@ column_auto_resize (GtkCList *clist, (CELL_SPACING + (2 * COLUMN_INSET))); else new_width = 0; - + for (list = clist->row_list; list; list = list->next) { - GTK_CLIST_CLASS_FW (clist)->cell_size_request + GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, GTK_CLIST_ROW (list), column, &requisition); new_width = MAX (new_width, requisition.width); if (new_width == clist->column[column].width) @@ -2791,10 +2790,10 @@ static void auto_resize_columns (GtkCList *clist) { gint i; - + if (GTK_CLIST_AUTO_RESIZE_BLOCKED (clist)) return; - + for (i = 0; i < clist->columns; i++) column_auto_resize (clist, NULL, i, clist->column[i].width); } @@ -2809,16 +2808,16 @@ cell_size_request (GtkCList *clist, GtkStyle *style; gint width; gint height; - + g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CTREE (clist)); g_return_if_fail (requisition != NULL); - + ctree = GTK_CTREE (clist); - + get_cell_style (clist, clist_row, GTK_STATE_NORMAL, column, &style, NULL, NULL); - + switch (clist_row->cell[column].type) { case GTK_CELL_TEXT: @@ -2837,11 +2836,11 @@ cell_size_request (GtkCList *clist, } else width = height = 0; - + requisition->width = width + gdk_string_width (style->font, GTK_CELL_TEXT (clist_row->cell[column])->text); - + requisition->height = MAX (style->font->ascent + style->font->descent, height); if (column == ctree->tree_column) @@ -2875,7 +2874,7 @@ cell_size_request (GtkCList *clist, requisition->height = 0; break; } - + requisition->width += clist_row->cell[column].horizontal; requisition->height += clist_row->cell[column].vertical; } @@ -2893,28 +2892,28 @@ set_cell_contents (GtkCList *clist, gboolean visible = FALSE; GtkCTree *ctree; GtkRequisition requisition; - + g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CTREE (clist)); g_return_if_fail (clist_row != NULL); - + ctree = GTK_CTREE (clist); - + if (clist->column[column].auto_resize && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist)) { GtkCTreeNode *parent; - + parent = ((GtkCTreeRow *)clist_row)->parent; if (!parent || (parent && GTK_CTREE_ROW (parent)->expanded && gtk_ctree_is_viewable (ctree, parent))) { visible = TRUE; - GTK_CLIST_CLASS_FW (clist)->cell_size_request (clist, clist_row, - column, &requisition); + GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, clist_row, + column, &requisition); } } - + switch (clist_row->cell[column].type) { case GTK_CELL_EMPTY: @@ -2947,11 +2946,11 @@ set_cell_contents (GtkCList *clist, default: break; } - + clist_row->cell[column].type = GTK_CELL_EMPTY; if (column == ctree->tree_column && type != GTK_CELL_EMPTY) type = GTK_CELL_PIXTEXT; - + switch (type) { case GTK_CELL_TEXT: @@ -3032,12 +3031,12 @@ set_node_info (GtkCTree *ctree, if (GTK_CTREE_ROW (node)->mask_closed) gdk_bitmap_unref (GTK_CTREE_ROW (node)->mask_closed); } - + GTK_CTREE_ROW (node)->pixmap_opened = NULL; GTK_CTREE_ROW (node)->mask_opened = NULL; GTK_CTREE_ROW (node)->pixmap_closed = NULL; GTK_CTREE_ROW (node)->mask_closed = NULL; - + if (pixmap_closed) { GTK_CTREE_ROW (node)->pixmap_closed = gdk_pixmap_ref (pixmap_closed); @@ -3050,10 +3049,10 @@ set_node_info (GtkCTree *ctree, if (mask_opened) GTK_CTREE_ROW (node)->mask_opened = gdk_bitmap_ref (mask_opened); } - + GTK_CTREE_ROW (node)->is_leaf = is_leaf; GTK_CTREE_ROW (node)->expanded = (is_leaf) ? FALSE : expanded; - + if (GTK_CTREE_ROW (node)->expanded) gtk_ctree_node_set_pixtext (ctree, node, ctree->tree_column, text, spacing, pixmap_opened, mask_opened); @@ -3088,12 +3087,12 @@ tree_update_level (GtkCTree *ctree, { if (!node) return; - + if (GTK_CTREE_ROW (node)->parent) - GTK_CTREE_ROW (node)->level = - GTK_CTREE_ROW (GTK_CTREE_ROW (node)->parent)->level + 1; + GTK_CTREE_ROW (node)->level = + GTK_CTREE_ROW (GTK_CTREE_ROW (node)->parent)->level + 1; else - GTK_CTREE_ROW (node)->level = 1; + GTK_CTREE_ROW (node)->level = 1; } static void @@ -3151,7 +3150,7 @@ tree_toggle_expansion (GtkCTree *ctree, { if (!node) return; - + if (GTK_CTREE_ROW (node)->expanded) gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_COLLAPSE], node); else @@ -3164,11 +3163,11 @@ row_new (GtkCTree *ctree) GtkCList *clist; GtkCTreeRow *ctree_row; int i; - + clist = GTK_CLIST (ctree); ctree_row = g_chunk_new (GtkCTreeRow, clist->row_mem_chunk); ctree_row->row.cell = g_chunk_new (GtkCell, clist->cell_mem_chunk); - + for (i = 0; i < clist->columns; i++) { ctree_row->row.cell[i].type = GTK_CELL_EMPTY; @@ -3176,9 +3175,9 @@ row_new (GtkCTree *ctree) ctree_row->row.cell[i].horizontal = 0; ctree_row->row.cell[i].style = NULL; } - + GTK_CELL_PIXTEXT (ctree_row->row.cell[ctree->tree_column])->text = NULL; - + ctree_row->row.fg_set = FALSE; ctree_row->row.bg_set = FALSE; ctree_row->row.style = NULL; @@ -3186,7 +3185,7 @@ row_new (GtkCTree *ctree) ctree_row->row.state = GTK_STATE_NORMAL; ctree_row->row.data = NULL; ctree_row->row.destroy = NULL; - + ctree_row->level = 0; ctree_row->expanded = FALSE; ctree_row->parent = NULL; @@ -3206,12 +3205,12 @@ row_delete (GtkCTree *ctree, { GtkCList *clist; gint i; - + clist = GTK_CLIST (ctree); - + for (i = 0; i < clist->columns; i++) { - GTK_CLIST_CLASS_FW (clist)->set_cell_contents + GTK_CLIST_GET_CLASS (clist)->set_cell_contents (clist, &(ctree_row->row), i, GTK_CELL_EMPTY, NULL, 0, NULL, NULL); if (ctree_row->row.cell[i].style) { @@ -3220,39 +3219,39 @@ row_delete (GtkCTree *ctree, gtk_style_unref (ctree_row->row.cell[i].style); } } - + if (ctree_row->row.style) { if (GTK_WIDGET_REALIZED (ctree)) gtk_style_detach (ctree_row->row.style); gtk_style_unref (ctree_row->row.style); } - + if (ctree_row->pixmap_closed) { gdk_pixmap_unref (ctree_row->pixmap_closed); if (ctree_row->mask_closed) gdk_bitmap_unref (ctree_row->mask_closed); } - + if (ctree_row->pixmap_opened) { gdk_pixmap_unref (ctree_row->pixmap_opened); if (ctree_row->mask_opened) gdk_bitmap_unref (ctree_row->mask_opened); } - + if (ctree_row->row.destroy) { GtkDestroyNotify dnotify = ctree_row->row.destroy; gpointer ddata = ctree_row->row.data; - + ctree_row->row.destroy = NULL; ctree_row->row.data = NULL; - + dnotify (ddata); } - + g_mem_chunk_free (clist->cell_mem_chunk, ctree_row->row.cell); g_mem_chunk_free (clist->row_mem_chunk, ctree_row); } @@ -3264,7 +3263,7 @@ real_select_row (GtkCList *clist, GdkEvent *event) { GList *node; - + g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CTREE (clist)); @@ -3281,10 +3280,10 @@ real_unselect_row (GtkCList *clist, GdkEvent *event) { GList *node; - + g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CTREE (clist)); - + if ((node = g_list_nth (clist->row_list, row))) gtk_signal_emit (GTK_OBJECT (clist), ctree_signals[TREE_UNSELECT_ROW], node, column); @@ -3299,24 +3298,24 @@ real_tree_select (GtkCTree *ctree, GList *list; GtkCTreeNode *sel_row; gboolean node_selected; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + if (!node || GTK_CTREE_ROW (node)->row.state == GTK_STATE_SELECTED || !GTK_CTREE_ROW (node)->row.selectable) return; - + clist = GTK_CLIST (ctree); - + switch (clist->selection_mode) { case GTK_SELECTION_SINGLE: case GTK_SELECTION_BROWSE: - + node_selected = FALSE; list = clist->selection; - + while (list) { sel_row = list->data; @@ -3328,16 +3327,16 @@ real_tree_select (GtkCTree *ctree, gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_UNSELECT_ROW], sel_row, column); } - + if (node_selected) return; - + default: break; } - + GTK_CTREE_ROW (node)->row.state = GTK_STATE_SELECTED; - + if (!clist->selection) { clist->selection = g_list_append (clist->selection, node); @@ -3345,7 +3344,7 @@ real_tree_select (GtkCTree *ctree, } else clist->selection_end = g_list_append (clist->selection_end, node)->next; - + tree_draw_node (ctree, node); } @@ -3355,22 +3354,22 @@ real_tree_unselect (GtkCTree *ctree, gint column) { GtkCList *clist; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + if (!node || GTK_CTREE_ROW (node)->row.state != GTK_STATE_SELECTED) return; - + clist = GTK_CLIST (ctree); - + if (clist->selection_end && clist->selection_end->data == node) clist->selection_end = clist->selection_end->prev; - + clist->selection = g_list_remove (clist->selection, node); GTK_CTREE_ROW (node)->row.state = GTK_STATE_NORMAL; - + tree_draw_node (ctree, node); } @@ -3382,7 +3381,7 @@ select_row_recursive (GtkCTree *ctree, if (!node || GTK_CTREE_ROW (node)->row.state == GTK_STATE_SELECTED || !GTK_CTREE_ROW (node)->row.selectable) return; - + GTK_CLIST (ctree)->undo_unselection = g_list_prepend (GTK_CLIST (ctree)->undo_unselection, node); gtk_ctree_select (ctree, node); @@ -3396,40 +3395,40 @@ real_select_all (GtkCList *clist) g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CTREE (clist)); - + ctree = GTK_CTREE (clist); - + switch (clist->selection_mode) { case GTK_SELECTION_SINGLE: case GTK_SELECTION_BROWSE: return; - + case GTK_SELECTION_EXTENDED: - + gtk_clist_freeze (clist); - + g_list_free (clist->undo_selection); g_list_free (clist->undo_unselection); clist->undo_selection = NULL; clist->undo_unselection = NULL; - + clist->anchor_state = GTK_STATE_SELECTED; clist->anchor = -1; clist->drag_pos = -1; clist->undo_anchor = clist->focus_row; - + for (node = GTK_CTREE_NODE (clist->row_list); node; node = GTK_CTREE_NODE_NEXT (node)) gtk_ctree_pre_recursive (ctree, node, select_row_recursive, NULL); - + gtk_clist_thaw (clist); break; - + case GTK_SELECTION_MULTIPLE: gtk_ctree_select_recursive (ctree, NULL); break; - + default: /* do nothing */ break; @@ -3442,12 +3441,12 @@ real_unselect_all (GtkCList *clist) GtkCTree *ctree; GtkCTreeNode *node; GList *list; - + g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CTREE (clist)); ctree = GTK_CTREE (clist); - + switch (clist->selection_mode) { case GTK_SELECTION_BROWSE: @@ -3459,24 +3458,24 @@ real_unselect_all (GtkCList *clist) return; } break; - + case GTK_SELECTION_EXTENDED: g_list_free (clist->undo_selection); g_list_free (clist->undo_unselection); clist->undo_selection = NULL; clist->undo_unselection = NULL; - + clist->anchor = -1; clist->drag_pos = -1; clist->undo_anchor = clist->focus_row; break; - + default: break; } - + list = clist->selection; - + while (list) { node = list->data; @@ -3501,20 +3500,20 @@ ctree_is_hot_spot (GtkCTree *ctree, g_return_val_if_fail (ctree != NULL, FALSE); g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE); g_return_val_if_fail (node != NULL, FALSE); - + clist = GTK_CLIST (ctree); - + if (!clist->column[ctree->tree_column].visible || ctree->expander_style == GTK_CTREE_EXPANDER_NONE) return FALSE; - + tree_row = GTK_CTREE_ROW (node); - + cell = GTK_CELL_PIXTEXT(tree_row->row.cell[ctree->tree_column]); - + yu = (ROW_TOP_YPIXEL (clist, row) + (clist->row_height - PM_SIZE) / 2 - (clist->row_height - 1) % 2); - + if (clist->column[ctree->tree_column].justification == GTK_JUSTIFY_RIGHT) xl = (clist->column[ctree->tree_column].area.x + clist->column[ctree->tree_column].area.width - 1 + clist->hoffset - @@ -3524,7 +3523,7 @@ ctree_is_hot_spot (GtkCTree *ctree, xl = (clist->column[ctree->tree_column].area.x + clist->hoffset + (tree_row->level - 1) * ctree->tree_indent + (ctree->line_style == GTK_CTREE_LINES_TABBED) * 3); - + return (x >= xl && x <= xl + PM_SIZE && y >= yu && y <= yu + PM_SIZE); } @@ -3546,27 +3545,27 @@ gtk_ctree_construct (GtkCTree *ctree, gchar *titles[]) { GtkCList *clist; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (GTK_OBJECT_CONSTRUCTED (ctree) == FALSE); - + clist = GTK_CLIST (ctree); - + clist->row_mem_chunk = g_mem_chunk_new ("ctree row mem chunk", sizeof (GtkCTreeRow), sizeof (GtkCTreeRow) * CLIST_OPTIMUM_SIZE, G_ALLOC_AND_FREE); - + clist->cell_mem_chunk = g_mem_chunk_new ("ctree cell mem chunk", sizeof (GtkCell) * columns, sizeof (GtkCell) * columns * CLIST_OPTIMUM_SIZE, G_ALLOC_AND_FREE); - + ctree->tree_column = tree_column; - + gtk_clist_construct (clist, columns, titles); } @@ -3576,13 +3575,13 @@ gtk_ctree_new_with_titles (gint columns, gchar *titles[]) { GtkWidget *widget; - + g_return_val_if_fail (columns > 0, NULL); g_return_val_if_fail (tree_column >= 0 && tree_column < columns, NULL); - + widget = gtk_type_new (GTK_TYPE_CTREE); gtk_ctree_construct (GTK_CTREE (widget), columns, tree_column, titles); - + return widget; } @@ -3601,17 +3600,17 @@ real_insert_row (GtkCList *clist, GtkCTreeNode *parent = NULL; GtkCTreeNode *sibling; GtkCTreeNode *node; - + g_return_val_if_fail (clist != NULL, -1); g_return_val_if_fail (GTK_IS_CTREE (clist), -1); - + sibling = GTK_CTREE_NODE (g_list_nth (clist->row_list, row)); if (sibling) parent = GTK_CTREE_ROW (sibling)->parent; - + node = gtk_ctree_insert_node (GTK_CTREE (clist), parent, sibling, text, 5, NULL, NULL, NULL, NULL, TRUE, FALSE); - + if (GTK_CLIST_AUTO_SORT (clist) || !sibling) return g_list_position (clist->row_list, (GList *) node); @@ -3636,33 +3635,33 @@ gtk_ctree_insert_node (GtkCTree *ctree, GtkCTreeNode *node; GList *list; gint i; - + g_return_val_if_fail (ctree != NULL, NULL); g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL); if (sibling) g_return_val_if_fail (GTK_CTREE_ROW (sibling)->parent == parent, NULL); - + if (parent && GTK_CTREE_ROW (parent)->is_leaf) return NULL; - + clist = GTK_CLIST (ctree); - + /* create the row */ new_row = row_new (ctree); list = g_list_alloc (); list->data = new_row; node = GTK_CTREE_NODE (list); - + if (text) for (i = 0; i < clist->columns; i++) if (text[i] && i != ctree->tree_column) - GTK_CLIST_CLASS_FW (clist)->set_cell_contents + GTK_CLIST_GET_CLASS (clist)->set_cell_contents (clist, &(new_row->row), i, GTK_CELL_TEXT, text[i], 0, NULL, NULL); - + set_node_info (ctree, node, text ? text[ctree->tree_column] : NULL, spacing, pixmap_closed, mask_closed, pixmap_opened, mask_opened, is_leaf, expanded); - + /* sorted insertion */ if (GTK_CLIST_AUTO_SORT (clist)) { @@ -3670,14 +3669,14 @@ gtk_ctree_insert_node (GtkCTree *ctree, sibling = GTK_CTREE_ROW (parent)->children; else sibling = GTK_CTREE_NODE (clist->row_list); - + while (sibling && clist->compare (clist, GTK_CTREE_ROW (node), GTK_CTREE_ROW (sibling)) > 0) sibling = GTK_CTREE_ROW (sibling)->sibling; } - + gtk_ctree_link (ctree, node, parent, sibling, TRUE); - + if (text && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist) && gtk_ctree_is_viewable (ctree, node)) { @@ -3685,17 +3684,17 @@ gtk_ctree_insert_node (GtkCTree *ctree, if (clist->column[i].auto_resize) column_auto_resize (clist, &(new_row->row), i, 0); } - + if (clist->rows == 1) { clist->focus_row = 0; if (clist->selection_mode == GTK_SELECTION_BROWSE) gtk_ctree_select (ctree, node); } - - + + CLIST_REFRESH (clist); - + return node; } @@ -3714,7 +3713,7 @@ gtk_ctree_insert_gnode (GtkCTree *ctree, GList *list; GNode *work; guint depth = 1; - + g_return_val_if_fail (ctree != NULL, NULL); g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL); g_return_val_if_fail (gnode != NULL, NULL); @@ -3723,38 +3722,38 @@ gtk_ctree_insert_gnode (GtkCTree *ctree, g_return_val_if_fail (GTK_CTREE_ROW (sibling)->parent == parent, NULL); clist = GTK_CLIST (ctree); - + if (parent) depth = GTK_CTREE_ROW (parent)->level + 1; - + list = g_list_alloc (); list->data = row_new (ctree); cnode = GTK_CTREE_NODE (list); - + gtk_clist_freeze (clist); - + set_node_info (ctree, cnode, "", 0, NULL, NULL, NULL, NULL, TRUE, FALSE); - + if (!func (ctree, depth, gnode, cnode, data)) { tree_delete_row (ctree, cnode, NULL); return NULL; } - + if (GTK_CLIST_AUTO_SORT (clist)) { if (parent) sibling = GTK_CTREE_ROW (parent)->children; else sibling = GTK_CTREE_NODE (clist->row_list); - + while (sibling && clist->compare (clist, GTK_CTREE_ROW (cnode), GTK_CTREE_ROW (sibling)) > 0) sibling = GTK_CTREE_ROW (sibling)->sibling; } - + gtk_ctree_link (ctree, cnode, parent, sibling, TRUE); - + for (work = g_node_last_child (gnode); work; work = work->prev) { new_child = gtk_ctree_insert_gnode (ctree, cnode, child, @@ -3764,7 +3763,7 @@ gtk_ctree_insert_gnode (GtkCTree *ctree, } gtk_clist_thaw (clist); - + return cnode; } @@ -3779,7 +3778,7 @@ gtk_ctree_export_to_gnode (GtkCTree *ctree, GtkCTreeNode *work; GNode *gnode; gint depth; - + g_return_val_if_fail (ctree != NULL, NULL); g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL); g_return_val_if_fail (node != NULL, NULL); @@ -3789,7 +3788,7 @@ gtk_ctree_export_to_gnode (GtkCTree *ctree, g_return_val_if_fail (parent != NULL, NULL); g_return_val_if_fail (sibling->parent == parent, NULL); } - + gnode = g_node_new (NULL); depth = g_node_depth (parent) + 1; @@ -3798,36 +3797,36 @@ gtk_ctree_export_to_gnode (GtkCTree *ctree, g_node_destroy (gnode); return NULL; } - + if (parent) g_node_insert_before (parent, sibling, gnode); - + if (!GTK_CTREE_ROW (node)->is_leaf) { GNode *new_sibling = NULL; - + for (work = GTK_CTREE_ROW (node)->children; work; work = GTK_CTREE_ROW (work)->sibling) new_sibling = gtk_ctree_export_to_gnode (ctree, gnode, new_sibling, work, func, data); - + g_node_reverse_children (gnode); } - + return gnode; } - + static void real_remove_row (GtkCList *clist, gint row) { GtkCTreeNode *node; - + g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CTREE (clist)); - + node = GTK_CTREE_NODE (g_list_nth (clist->row_list, row)); - + if (node) gtk_ctree_remove_node (GTK_CTREE (clist), node); } @@ -3837,18 +3836,18 @@ gtk_ctree_remove_node (GtkCTree *ctree, GtkCTreeNode *node) { GtkCList *clist; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + clist = GTK_CLIST (ctree); - + gtk_clist_freeze (clist); - + if (node) { gboolean visible; - + visible = gtk_ctree_is_viewable (ctree, node); gtk_ctree_unlink (ctree, node, TRUE); gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_delete), @@ -3856,12 +3855,12 @@ gtk_ctree_remove_node (GtkCTree *ctree, if (clist->selection_mode == GTK_SELECTION_BROWSE && !clist->selection && clist->focus_row >= 0) gtk_clist_select_row (clist, clist->focus_row, -1); - + auto_resize_columns (clist); } else gtk_clist_clear (clist); - + gtk_clist_thaw (clist); } @@ -3871,17 +3870,17 @@ real_clear (GtkCList *clist) GtkCTree *ctree; GtkCTreeNode *work; GtkCTreeNode *ptr; - + g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CTREE (clist)); - + ctree = GTK_CTREE (clist); - + /* remove all rows */ work = GTK_CTREE_NODE (clist->row_list); clist->row_list = NULL; clist->row_list_end = NULL; - + GTK_CLIST_SET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED); while (work) { @@ -3891,7 +3890,7 @@ real_clear (GtkCList *clist) NULL); } GTK_CLIST_UNSET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED); - + parent_class->clear (clist); } @@ -3910,23 +3909,23 @@ gtk_ctree_post_recursive (GtkCTree *ctree, { GtkCTreeNode *work; GtkCTreeNode *tmp; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (func != NULL); - + if (node) work = GTK_CTREE_ROW (node)->children; else work = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list); - + while (work) { tmp = GTK_CTREE_ROW (work)->sibling; gtk_ctree_post_recursive (ctree, work, func, data); work = tmp; } - + if (node) func (ctree, node, data); } @@ -3940,22 +3939,22 @@ gtk_ctree_post_recursive_to_depth (GtkCTree *ctree, { GtkCTreeNode *work; GtkCTreeNode *tmp; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (func != NULL); - + if (depth < 0) { gtk_ctree_post_recursive (ctree, node, func, data); return; } - + if (node) work = GTK_CTREE_ROW (node)->children; else work = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list); - + if (work && GTK_CTREE_ROW (work)->level <= depth) { while (work) @@ -3965,7 +3964,7 @@ gtk_ctree_post_recursive_to_depth (GtkCTree *ctree, work = tmp; } } - + if (node && GTK_CTREE_ROW (node)->level <= depth) func (ctree, node, data); } @@ -3978,11 +3977,11 @@ gtk_ctree_pre_recursive (GtkCTree *ctree, { GtkCTreeNode *work; GtkCTreeNode *tmp; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (func != NULL); - + if (node) { work = GTK_CTREE_ROW (node)->children; @@ -3990,7 +3989,7 @@ gtk_ctree_pre_recursive (GtkCTree *ctree, } else work = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list); - + while (work) { tmp = GTK_CTREE_ROW (work)->sibling; @@ -4008,17 +4007,17 @@ gtk_ctree_pre_recursive_to_depth (GtkCTree *ctree, { GtkCTreeNode *work; GtkCTreeNode *tmp; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (func != NULL); - + if (depth < 0) { gtk_ctree_pre_recursive (ctree, node, func, data); return; } - + if (node) { work = GTK_CTREE_ROW (node)->children; @@ -4027,7 +4026,7 @@ gtk_ctree_pre_recursive_to_depth (GtkCTree *ctree, } else work = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list); - + if (work && GTK_CTREE_ROW (work)->level <= depth) { while (work) @@ -4044,19 +4043,19 @@ gtk_ctree_is_viewable (GtkCTree *ctree, GtkCTreeNode *node) { GtkCTreeRow *work; - + g_return_val_if_fail (ctree != NULL, FALSE); g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE); g_return_val_if_fail (node != NULL, FALSE); - + work = GTK_CTREE_ROW (node); - + while (work->parent && GTK_CTREE_ROW (work->parent)->expanded) work = GTK_CTREE_ROW (work->parent); - + if (!work->parent) return TRUE; - + return FALSE; } @@ -4066,10 +4065,10 @@ gtk_ctree_last (GtkCTree *ctree, { g_return_val_if_fail (ctree != NULL, NULL); g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL); - + if (!node) return NULL; - + while (GTK_CTREE_ROW (node)->sibling) node = GTK_CTREE_ROW (node)->sibling; @@ -4093,7 +4092,7 @@ gtk_ctree_find_node_ptr (GtkCTree *ctree, node = GTK_CTREE_ROW(ctree_row->parent)->children; else node = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list); - + while (GTK_CTREE_ROW (node) != ctree_row) node = GTK_CTREE_ROW (node)->sibling; @@ -4106,10 +4105,10 @@ gtk_ctree_node_nth (GtkCTree *ctree, { g_return_val_if_fail (ctree != NULL, NULL); g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL); - + if ((row < 0) || (row >= GTK_CLIST(ctree)->rows)) return NULL; - + return GTK_CTREE_NODE (g_list_nth (GTK_CLIST (ctree)->row_list, row)); } @@ -4120,10 +4119,10 @@ gtk_ctree_find (GtkCTree *ctree, { if (!child) return FALSE; - + if (!node) node = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list); - + while (node) { if (node == child) @@ -4145,10 +4144,10 @@ gtk_ctree_is_ancestor (GtkCTree *ctree, { g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE); g_return_val_if_fail (node != NULL, FALSE); - + if (GTK_CTREE_ROW (node)->children) return gtk_ctree_find (ctree, GTK_CTREE_ROW (node)->children, child); - + return FALSE; } @@ -4181,23 +4180,23 @@ gtk_ctree_find_all_by_row_data (GtkCTree *ctree, gpointer data) { GList *list = NULL; - + g_return_val_if_fail (ctree != NULL, NULL); g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL); - + /* if node == NULL then look in the whole tree */ if (!node) node = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list); - + while (node) { if (GTK_CTREE_ROW (node)->row.data == data) list = g_list_append (list, node); - + if (GTK_CTREE_ROW (node)->children) { GList *sub_list; - + sub_list = gtk_ctree_find_all_by_row_data (ctree, GTK_CTREE_ROW (node)->children, @@ -4216,12 +4215,12 @@ gtk_ctree_find_by_row_data_custom (GtkCTree *ctree, GCompareFunc func) { GtkCTreeNode *work; - + g_return_val_if_fail (func != NULL, NULL); - + if (!node) node = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list); - + while (node) { if (!func (GTK_CTREE_ROW (node)->row.data, data)) @@ -4242,24 +4241,24 @@ gtk_ctree_find_all_by_row_data_custom (GtkCTree *ctree, GCompareFunc func) { GList *list = NULL; - + g_return_val_if_fail (ctree != NULL, NULL); g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL); g_return_val_if_fail (func != NULL, NULL); - + /* if node == NULL then look in the whole tree */ if (!node) node = GTK_CTREE_NODE (GTK_CLIST (ctree)->row_list); - + while (node) { if (!func (GTK_CTREE_ROW (node)->row.data, data)) list = g_list_append (list, node); - + if (GTK_CTREE_ROW (node)->children) { GList *sub_list; - + sub_list = gtk_ctree_find_all_by_row_data_custom (ctree, GTK_CTREE_ROW (node)->children, @@ -4283,11 +4282,11 @@ gtk_ctree_is_hot_spot (GtkCTree *ctree, g_return_val_if_fail (ctree != NULL, FALSE); g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE); - + if (gtk_clist_get_selection_info (GTK_CLIST (ctree), x, y, &row, &column)) if ((node = GTK_CTREE_NODE(g_list_nth (GTK_CLIST (ctree)->row_list, row)))) return ctree_is_hot_spot (ctree, node, row, x, y); - + return FALSE; } @@ -4321,7 +4320,7 @@ gtk_ctree_expand (GtkCTree *ctree, if (GTK_CTREE_ROW (node)->is_leaf) return; - + gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_EXPAND], node); } @@ -4331,23 +4330,23 @@ gtk_ctree_expand_recursive (GtkCTree *ctree, { GtkCList *clist; gboolean thaw = FALSE; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + clist = GTK_CLIST (ctree); - + if (node && GTK_CTREE_ROW (node)->is_leaf) return; - + if (CLIST_UNFROZEN (clist) && (!node || gtk_ctree_is_viewable (ctree, node))) { gtk_clist_freeze (clist); thaw = TRUE; } - + gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_expand), NULL); - + if (thaw) gtk_clist_thaw (clist); } @@ -4359,24 +4358,24 @@ gtk_ctree_expand_to_depth (GtkCTree *ctree, { GtkCList *clist; gboolean thaw = FALSE; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + clist = GTK_CLIST (ctree); - + if (node && GTK_CTREE_ROW (node)->is_leaf) return; - + if (CLIST_UNFROZEN (clist) && (!node || gtk_ctree_is_viewable (ctree, node))) { gtk_clist_freeze (clist); thaw = TRUE; } - + gtk_ctree_post_recursive_to_depth (ctree, node, depth, GTK_CTREE_FUNC (tree_expand), NULL); - + if (thaw) gtk_clist_thaw (clist); } @@ -4391,7 +4390,7 @@ gtk_ctree_collapse (GtkCTree *ctree, if (GTK_CTREE_ROW (node)->is_leaf) return; - + gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_COLLAPSE], node); } @@ -4402,21 +4401,21 @@ gtk_ctree_collapse_recursive (GtkCTree *ctree, GtkCList *clist; gboolean thaw = FALSE; gint i; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + if (node && GTK_CTREE_ROW (node)->is_leaf) return; - + clist = GTK_CLIST (ctree); - + if (CLIST_UNFROZEN (clist) && (!node || gtk_ctree_is_viewable (ctree, node))) { gtk_clist_freeze (clist); thaw = TRUE; } - + GTK_CLIST_SET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED); gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_collapse), NULL); GTK_CLIST_UNSET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED); @@ -4424,7 +4423,7 @@ gtk_ctree_collapse_recursive (GtkCTree *ctree, if (clist->column[i].auto_resize) gtk_clist_set_column_width (clist, i, gtk_clist_optimal_column_width (clist, i)); - + if (thaw) gtk_clist_thaw (clist); } @@ -4437,21 +4436,21 @@ gtk_ctree_collapse_to_depth (GtkCTree *ctree, GtkCList *clist; gboolean thaw = FALSE; gint i; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + if (node && GTK_CTREE_ROW (node)->is_leaf) return; - + clist = GTK_CLIST (ctree); - + if (CLIST_UNFROZEN (clist) && (!node || gtk_ctree_is_viewable (ctree, node))) { gtk_clist_freeze (clist); thaw = TRUE; } - + GTK_CLIST_SET_FLAG (clist, CLIST_AUTO_RESIZE_BLOCKED); gtk_ctree_post_recursive_to_depth (ctree, node, depth, GTK_CTREE_FUNC (tree_collapse_to_depth), @@ -4461,7 +4460,7 @@ gtk_ctree_collapse_to_depth (GtkCTree *ctree, if (clist->column[i].auto_resize) gtk_clist_set_column_width (clist, i, gtk_clist_optimal_column_width (clist, i)); - + if (thaw) gtk_clist_thaw (clist); } @@ -4476,7 +4475,7 @@ gtk_ctree_toggle_expansion (GtkCTree *ctree, if (GTK_CTREE_ROW (node)->is_leaf) return; - + tree_toggle_expansion (ctree, node, NULL); } @@ -4486,15 +4485,15 @@ gtk_ctree_toggle_expansion_recursive (GtkCTree *ctree, { GtkCList *clist; gboolean thaw = FALSE; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); if (node && GTK_CTREE_ROW (node)->is_leaf) return; - + clist = GTK_CLIST (ctree); - + if (CLIST_UNFROZEN (clist) && (!node || gtk_ctree_is_viewable (ctree, node))) { gtk_clist_freeze (clist); @@ -4503,7 +4502,7 @@ gtk_ctree_toggle_expansion_recursive (GtkCTree *ctree, gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_toggle_expansion), NULL); - + if (thaw) gtk_clist_thaw (clist); } @@ -4515,7 +4514,7 @@ gtk_ctree_select (GtkCTree *ctree, g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); - + if (GTK_CTREE_ROW (node)->row.selectable) gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_SELECT_ROW], node, -1); @@ -4528,7 +4527,7 @@ gtk_ctree_unselect (GtkCTree *ctree, g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); - + gtk_signal_emit (GTK_OBJECT (ctree), ctree_signals[TREE_UNSELECT_ROW], node, -1); } @@ -4554,34 +4553,34 @@ gtk_ctree_real_select_recursive (GtkCTree *ctree, { GtkCList *clist; gboolean thaw = FALSE; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + clist = GTK_CLIST (ctree); - + if ((state && (clist->selection_mode == GTK_SELECTION_BROWSE || clist->selection_mode == GTK_SELECTION_SINGLE)) || (!state && clist->selection_mode == GTK_SELECTION_BROWSE)) return; - + if (CLIST_UNFROZEN (clist) && (!node || gtk_ctree_is_viewable (ctree, node))) { gtk_clist_freeze (clist); thaw = TRUE; } - + if (clist->selection_mode == GTK_SELECTION_EXTENDED) { - GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL); + GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL); g_list_free (clist->undo_selection); g_list_free (clist->undo_unselection); clist->undo_selection = NULL; clist->undo_unselection = NULL; } - + if (state) gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_select), NULL); @@ -4606,20 +4605,20 @@ gtk_ctree_node_set_text (GtkCTree *ctree, const gchar *text) { GtkCList *clist; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); - + if (column < 0 || column >= GTK_CLIST (ctree)->columns) return; clist = GTK_CLIST (ctree); - - GTK_CLIST_CLASS_FW (clist)->set_cell_contents + + GTK_CLIST_GET_CLASS (clist)->set_cell_contents (clist, &(GTK_CTREE_ROW(node)->row), column, GTK_CELL_TEXT, text, 0, NULL, NULL); - + tree_draw_node (ctree, node); } @@ -4631,25 +4630,25 @@ gtk_ctree_node_set_pixmap (GtkCTree *ctree, GdkBitmap *mask) { GtkCList *clist; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); g_return_if_fail (pixmap != NULL); - + if (column < 0 || column >= GTK_CLIST (ctree)->columns) return; - + gdk_pixmap_ref (pixmap); if (mask) gdk_pixmap_ref (mask); - + clist = GTK_CLIST (ctree); - - GTK_CLIST_CLASS_FW (clist)->set_cell_contents + + GTK_CLIST_GET_CLASS (clist)->set_cell_contents (clist, &(GTK_CTREE_ROW (node)->row), column, GTK_CELL_PIXMAP, NULL, 0, pixmap, mask); - + tree_draw_node (ctree, node); } @@ -4663,7 +4662,7 @@ gtk_ctree_node_set_pixtext (GtkCTree *ctree, GdkBitmap *mask) { GtkCList *clist; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); @@ -4671,20 +4670,20 @@ gtk_ctree_node_set_pixtext (GtkCTree *ctree, g_return_if_fail (pixmap != NULL); if (column < 0 || column >= GTK_CLIST (ctree)->columns) return; - + clist = GTK_CLIST (ctree); - + if (pixmap) { gdk_pixmap_ref (pixmap); if (mask) gdk_pixmap_ref (mask); } - - GTK_CLIST_CLASS_FW (clist)->set_cell_contents + + GTK_CLIST_GET_CLASS (clist)->set_cell_contents (clist, &(GTK_CTREE_ROW (node)->row), column, GTK_CELL_PIXTEXT, text, spacing, pixmap, mask); - + tree_draw_node (ctree, node); } @@ -4702,14 +4701,14 @@ gtk_ctree_set_node_info (GtkCTree *ctree, { gboolean old_leaf; gboolean old_expanded; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); - + old_leaf = GTK_CTREE_ROW (node)->is_leaf; old_expanded = GTK_CTREE_ROW (node)->expanded; - + if (is_leaf && GTK_CTREE_ROW (node)->children) { GtkCTreeNode *work; @@ -4723,10 +4722,10 @@ gtk_ctree_set_node_info (GtkCTree *ctree, gtk_ctree_remove_node (ctree, ptr); } } - + set_node_info (ctree, node, text, spacing, pixmap_closed, mask_closed, pixmap_opened, mask_opened, is_leaf, expanded); - + if (!is_leaf && !old_leaf) { GTK_CTREE_ROW (node)->expanded = old_expanded; @@ -4735,7 +4734,7 @@ gtk_ctree_set_node_info (GtkCTree *ctree, else if (!expanded && old_expanded) gtk_ctree_collapse (ctree, node); } - + GTK_CTREE_ROW (node)->expanded = (is_leaf) ? FALSE : expanded; tree_draw_node (ctree, node); @@ -4751,32 +4750,32 @@ gtk_ctree_node_set_shift (GtkCTree *ctree, GtkCList *clist; GtkRequisition requisition; gboolean visible = FALSE; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); - + if (column < 0 || column >= GTK_CLIST (ctree)->columns) return; - + clist = GTK_CLIST (ctree); - + if (clist->column[column].auto_resize && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist)) { visible = gtk_ctree_is_viewable (ctree, node); if (visible) - GTK_CLIST_CLASS_FW (clist)->cell_size_request + GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, >K_CTREE_ROW (node)->row, column, &requisition); } - + GTK_CTREE_ROW (node)->row.cell[column].vertical = vertical; GTK_CTREE_ROW (node)->row.cell[column].horizontal = horizontal; - + if (visible) column_auto_resize (clist, >K_CTREE_ROW (node)->row, column, requisition.width); - + tree_draw_node (ctree, node); } @@ -4788,13 +4787,13 @@ remove_grab (GtkCList *clist) gtk_grab_remove (GTK_WIDGET (clist)); gdk_pointer_ungrab (GDK_CURRENT_TIME); } - + if (clist->htimer) { gtk_timeout_remove (clist->htimer); clist->htimer = 0; } - + if (clist->vtimer) { gtk_timeout_remove (clist->vtimer); @@ -4810,25 +4809,25 @@ gtk_ctree_node_set_selectable (GtkCTree *ctree, g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); - + if (selectable == GTK_CTREE_ROW (node)->row.selectable) return; - + GTK_CTREE_ROW (node)->row.selectable = selectable; - + if (!selectable && GTK_CTREE_ROW (node)->row.state == GTK_STATE_SELECTED) { GtkCList *clist; - + clist = GTK_CLIST (ctree); - + if (clist->anchor >= 0 && clist->selection_mode == GTK_SELECTION_EXTENDED) { clist->drag_button = 0; remove_grab (clist); - - GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL); + + GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL); } gtk_ctree_unselect (ctree, node); } @@ -4839,7 +4838,7 @@ gtk_ctree_node_get_selectable (GtkCTree *ctree, GtkCTreeNode *node) { g_return_val_if_fail (node != NULL, FALSE); - + return GTK_CTREE_ROW (node)->row.selectable; } @@ -4851,10 +4850,10 @@ gtk_ctree_node_get_cell_type (GtkCTree *ctree, g_return_val_if_fail (ctree != NULL, -1); g_return_val_if_fail (GTK_IS_CTREE (ctree), -1); g_return_val_if_fail (node != NULL, -1); - + if (column < 0 || column >= GTK_CLIST (ctree)->columns) return -1; - + return GTK_CTREE_ROW (node)->row.cell[column].type; } @@ -4867,16 +4866,16 @@ gtk_ctree_node_get_text (GtkCTree *ctree, g_return_val_if_fail (ctree != NULL, 0); g_return_val_if_fail (GTK_IS_CTREE (ctree), 0); g_return_val_if_fail (node != NULL, 0); - + if (column < 0 || column >= GTK_CLIST (ctree)->columns) return 0; - + if (GTK_CTREE_ROW (node)->row.cell[column].type != GTK_CELL_TEXT) return 0; - + if (text) *text = GTK_CELL_TEXT (GTK_CTREE_ROW (node)->row.cell[column])->text; - + return 1; } @@ -4890,18 +4889,18 @@ gtk_ctree_node_get_pixmap (GtkCTree *ctree, g_return_val_if_fail (ctree != NULL, 0); g_return_val_if_fail (GTK_IS_CTREE (ctree), 0); g_return_val_if_fail (node != NULL, 0); - + if (column < 0 || column >= GTK_CLIST (ctree)->columns) return 0; - + if (GTK_CTREE_ROW (node)->row.cell[column].type != GTK_CELL_PIXMAP) return 0; - + if (pixmap) *pixmap = GTK_CELL_PIXMAP (GTK_CTREE_ROW(node)->row.cell[column])->pixmap; if (mask) *mask = GTK_CELL_PIXMAP (GTK_CTREE_ROW (node)->row.cell[column])->mask; - + return 1; } @@ -4985,37 +4984,37 @@ gtk_ctree_node_set_cell_style (GtkCTree *ctree, GtkCList *clist; GtkRequisition requisition; gboolean visible = FALSE; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); - + clist = GTK_CLIST (ctree); - + if (column < 0 || column >= clist->columns) return; - + if (GTK_CTREE_ROW (node)->row.cell[column].style == style) return; - + if (clist->column[column].auto_resize && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist)) { visible = gtk_ctree_is_viewable (ctree, node); if (visible) - GTK_CLIST_CLASS_FW (clist)->cell_size_request + GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, >K_CTREE_ROW (node)->row, column, &requisition); } - + if (GTK_CTREE_ROW (node)->row.cell[column].style) { if (GTK_WIDGET_REALIZED (ctree)) gtk_style_detach (GTK_CTREE_ROW (node)->row.cell[column].style); gtk_style_unref (GTK_CTREE_ROW (node)->row.cell[column].style); } - + GTK_CTREE_ROW (node)->row.cell[column].style = style; - + if (GTK_CTREE_ROW (node)->row.cell[column].style) { gtk_style_ref (GTK_CTREE_ROW (node)->row.cell[column].style); @@ -5025,11 +5024,11 @@ gtk_ctree_node_set_cell_style (GtkCTree *ctree, gtk_style_attach (GTK_CTREE_ROW (node)->row.cell[column].style, clist->clist_window); } - + if (visible) column_auto_resize (clist, >K_CTREE_ROW (node)->row, column, requisition.width); - + tree_draw_node (ctree, node); } @@ -5041,10 +5040,10 @@ gtk_ctree_node_get_cell_style (GtkCTree *ctree, g_return_val_if_fail (ctree != NULL, NULL); g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL); g_return_val_if_fail (node != NULL, NULL); - + if (column < 0 || column >= GTK_CLIST (ctree)->columns) return NULL; - + return GTK_CTREE_ROW (node)->row.cell[column].style; } @@ -5058,13 +5057,13 @@ gtk_ctree_node_set_row_style (GtkCTree *ctree, gboolean visible; gint *old_width = NULL; gint i; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); - + clist = GTK_CLIST (ctree); - + if (GTK_CTREE_ROW (node)->row.style == style) return; @@ -5075,21 +5074,21 @@ gtk_ctree_node_set_row_style (GtkCTree *ctree, for (i = 0; i < clist->columns; i++) if (clist->column[i].auto_resize) { - GTK_CLIST_CLASS_FW (clist)->cell_size_request + GTK_CLIST_GET_CLASS (clist)->cell_size_request (clist, >K_CTREE_ROW (node)->row, i, &requisition); old_width[i] = requisition.width; } } - + if (GTK_CTREE_ROW (node)->row.style) { if (GTK_WIDGET_REALIZED (ctree)) gtk_style_detach (GTK_CTREE_ROW (node)->row.style); gtk_style_unref (GTK_CTREE_ROW (node)->row.style); } - + GTK_CTREE_ROW (node)->row.style = style; - + if (GTK_CTREE_ROW (node)->row.style) { gtk_style_ref (GTK_CTREE_ROW (node)->row.style); @@ -5099,7 +5098,7 @@ gtk_ctree_node_set_row_style (GtkCTree *ctree, gtk_style_attach (GTK_CTREE_ROW (node)->row.style, clist->clist_window); } - + if (visible && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist)) { for (i = 0; i < clist->columns; i++) @@ -5118,7 +5117,7 @@ gtk_ctree_node_get_row_style (GtkCTree *ctree, g_return_val_if_fail (ctree != NULL, NULL); g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL); g_return_val_if_fail (node != NULL, NULL); - + return GTK_CTREE_ROW (node)->row.style; } @@ -5130,7 +5129,7 @@ gtk_ctree_node_set_foreground (GtkCTree *ctree, g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); - + if (color) { GTK_CTREE_ROW (node)->row.foreground = *color; @@ -5141,7 +5140,7 @@ gtk_ctree_node_set_foreground (GtkCTree *ctree, } else GTK_CTREE_ROW (node)->row.fg_set = FALSE; - + tree_draw_node (ctree, node); } @@ -5153,7 +5152,7 @@ gtk_ctree_node_set_background (GtkCTree *ctree, g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); - + if (color) { GTK_CTREE_ROW (node)->row.background = *color; @@ -5164,7 +5163,7 @@ gtk_ctree_node_set_background (GtkCTree *ctree, } else GTK_CTREE_ROW (node)->row.bg_set = FALSE; - + tree_draw_node (ctree, node); } @@ -5188,13 +5187,13 @@ gtk_ctree_node_set_row_data_full (GtkCTree *ctree, g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (node != NULL); - + dnotify = GTK_CTREE_ROW (node)->row.destroy; ddata = GTK_CTREE_ROW (node)->row.data; GTK_CTREE_ROW (node)->row.data = data; GTK_CTREE_ROW (node)->row.destroy = destroy; - + if (dnotify) dnotify (ddata); } @@ -5205,7 +5204,7 @@ gtk_ctree_node_get_row_data (GtkCTree *ctree, { g_return_val_if_fail (ctree != NULL, NULL); g_return_val_if_fail (GTK_IS_CTREE (ctree), NULL); - + return node ? GTK_CTREE_ROW (node)->row.data : NULL; } @@ -5218,15 +5217,15 @@ gtk_ctree_node_moveto (GtkCTree *ctree, { gint row = -1; GtkCList *clist; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + clist = GTK_CLIST (ctree); - + while (node && !gtk_ctree_is_viewable (ctree, node)) node = GTK_CTREE_ROW (node)->parent; - + if (node) row = g_list_position (clist->row_list, (GList *)node); @@ -5255,17 +5254,17 @@ gtk_ctree_set_indent (GtkCTree *ctree, gint indent) { GtkCList *clist; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (indent >= 0); - + if (indent == ctree->tree_indent) return; - + clist = GTK_CLIST (ctree); ctree->tree_indent = indent; - + if (clist->column[ctree->tree_column].auto_resize && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist)) gtk_clist_set_column_width @@ -5281,19 +5280,19 @@ gtk_ctree_set_spacing (GtkCTree *ctree, { GtkCList *clist; gint old_spacing; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); g_return_if_fail (spacing >= 0); - + if (spacing == ctree->tree_spacing) return; - + clist = GTK_CLIST (ctree); - + old_spacing = ctree->tree_spacing; ctree->tree_spacing = spacing; - + if (clist->column[ctree->tree_column].auto_resize && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist)) gtk_clist_set_column_width (clist, ctree->tree_column, @@ -5309,19 +5308,19 @@ gtk_ctree_set_show_stub (GtkCTree *ctree, { g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + show_stub = show_stub != FALSE; - + if (show_stub != ctree->show_stub) { GtkCList *clist; - + clist = GTK_CLIST (ctree); ctree->show_stub = show_stub; - + if (CLIST_UNFROZEN (clist) && clist->rows && gtk_clist_row_is_visible (clist, 0) != GTK_VISIBILITY_NONE) - GTK_CLIST_CLASS_FW (clist)->draw_row + GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, 0, GTK_CLIST_ROW (clist->row_list)); } } @@ -5332,18 +5331,18 @@ gtk_ctree_set_line_style (GtkCTree *ctree, { GtkCList *clist; GtkCTreeLineStyle old_style; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + if (line_style == ctree->line_style) return; - + clist = GTK_CLIST (ctree); - + old_style = ctree->line_style; ctree->line_style = line_style; - + if (clist->column[ctree->tree_column].auto_resize && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist)) { @@ -5356,7 +5355,7 @@ gtk_ctree_set_line_style (GtkCTree *ctree, (clist, ctree->tree_column, clist->column[ctree->tree_column].width + 3); } - + if (GTK_WIDGET_REALIZED (ctree)) { switch (line_style) @@ -5392,23 +5391,23 @@ gtk_ctree_set_expander_style (GtkCTree *ctree, { GtkCList *clist; GtkCTreeExpanderStyle old_style; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + if (expander_style == ctree->expander_style) return; - + clist = GTK_CLIST (ctree); - + old_style = ctree->expander_style; ctree->expander_style = expander_style; - + if (clist->column[ctree->tree_column].auto_resize && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist)) { gint new_width; - + new_width = clist->column[ctree->tree_column].width; switch (old_style) { @@ -5422,7 +5421,7 @@ gtk_ctree_set_expander_style (GtkCTree *ctree, new_width -= PM_SIZE + 1; break; } - + switch (expander_style) { case GTK_CTREE_EXPANDER_NONE: @@ -5435,10 +5434,10 @@ gtk_ctree_set_expander_style (GtkCTree *ctree, new_width += PM_SIZE + 1; break; } - + gtk_clist_set_column_width (clist, ctree->tree_column, new_width); } - + if (GTK_WIDGET_DRAWABLE (clist)) CLIST_REFRESH (clist); } @@ -5458,14 +5457,14 @@ tree_sort (GtkCTree *ctree, GtkCTreeNode *cmp; GtkCTreeNode *work; GtkCList *clist; - + clist = GTK_CLIST (ctree); - + if (node) list_start = GTK_CTREE_ROW (node)->children; else list_start = GTK_CTREE_NODE (clist->row_list); - + while (list_start) { cmp = list_start; @@ -5502,39 +5501,39 @@ gtk_ctree_sort_recursive (GtkCTree *ctree, { GtkCList *clist; GtkCTreeNode *focus_node = NULL; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + clist = GTK_CLIST (ctree); - + gtk_clist_freeze (clist); - + if (clist->selection_mode == GTK_SELECTION_EXTENDED) { - GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL); + GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL); g_list_free (clist->undo_selection); g_list_free (clist->undo_unselection); clist->undo_selection = NULL; clist->undo_unselection = NULL; } - + if (!node || (node && gtk_ctree_is_viewable (ctree, node))) focus_node = GTK_CTREE_NODE (g_list_nth (clist->row_list, clist->focus_row)); - + gtk_ctree_post_recursive (ctree, node, GTK_CTREE_FUNC (tree_sort), NULL); - + if (!node) tree_sort (ctree, NULL, NULL); - + if (focus_node) { clist->focus_row = g_list_position (clist->row_list,(GList *)focus_node); clist->undo_anchor = clist->focus_row; } - + gtk_clist_thaw (clist); } @@ -5550,36 +5549,36 @@ gtk_ctree_sort_node (GtkCTree *ctree, { GtkCList *clist; GtkCTreeNode *focus_node = NULL; - + g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + clist = GTK_CLIST (ctree); - + gtk_clist_freeze (clist); - + if (clist->selection_mode == GTK_SELECTION_EXTENDED) { - GTK_CLIST_CLASS_FW (clist)->resync_selection (clist, NULL); + GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL); g_list_free (clist->undo_selection); g_list_free (clist->undo_unselection); clist->undo_selection = NULL; clist->undo_unselection = NULL; } - + if (!node || (node && gtk_ctree_is_viewable (ctree, node))) focus_node = GTK_CTREE_NODE (g_list_nth (clist->row_list, clist->focus_row)); - + tree_sort (ctree, node, NULL); - + if (focus_node) { clist->focus_row = g_list_position (clist->row_list,(GList *)focus_node); clist->undo_anchor = clist->focus_row; } - + gtk_clist_thaw (clist); } @@ -5591,7 +5590,7 @@ fake_unselect_all (GtkCList *clist, { GList *list; GList *focus_node = NULL; - + if (row >= 0 && (focus_node = g_list_nth (clist->row_list, row))) { if (GTK_CTREE_ROW (focus_node)->row.state == GTK_STATE_NORMAL && @@ -5601,11 +5600,11 @@ fake_unselect_all (GtkCList *clist, if (CLIST_UNFROZEN (clist) && gtk_clist_row_is_visible (clist, row) != GTK_VISIBILITY_NONE) - GTK_CLIST_CLASS_FW (clist)->draw_row (clist, NULL, row, - GTK_CLIST_ROW (focus_node)); + GTK_CLIST_GET_CLASS (clist)->draw_row (clist, NULL, row, + GTK_CLIST_ROW (focus_node)); } } - + clist->undo_selection = clist->selection; clist->selection = NULL; clist->selection_end = NULL; @@ -5614,7 +5613,7 @@ fake_unselect_all (GtkCList *clist, { if (list->data == focus_node) continue; - + GTK_CTREE_ROW ((GList *)(list->data))->row.state = GTK_STATE_NORMAL; tree_draw_node (GTK_CTREE (clist), GTK_CTREE_NODE (list->data)); } @@ -5638,23 +5637,23 @@ resync_selection (GtkCList *clist, GdkEvent *event) gint e; gint row; gboolean unselect; - + g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CTREE (clist)); - + if (clist->selection_mode != GTK_SELECTION_EXTENDED) return; - + if (clist->anchor < 0 || clist->drag_pos < 0) return; - + ctree = GTK_CTREE (clist); clist->freeze_count++; - + i = MIN (clist->anchor, clist->drag_pos); e = MAX (clist->anchor, clist->drag_pos); - + if (clist->undo_selection) { list = clist->selection; @@ -5662,14 +5661,14 @@ resync_selection (GtkCList *clist, GdkEvent *event) clist->selection_end = g_list_last (clist->selection); clist->undo_selection = list; list = clist->selection; - + while (list) { node = list->data; list = list->next; unselect = TRUE; - + if (gtk_ctree_is_viewable (ctree, node)) { row = g_list_position (clist->row_list, (GList *)node); @@ -5685,7 +5684,7 @@ resync_selection (GtkCList *clist, GdkEvent *event) } } } - + if (clist->anchor < clist->drag_pos) { for (node = GTK_CTREE_NODE (g_list_nth (clist->row_list, i)); i <= e; @@ -5734,14 +5733,14 @@ resync_selection (GtkCList *clist, GdkEvent *event) } } } - + clist->undo_unselection = g_list_reverse (clist->undo_unselection); for (list = clist->undo_unselection; list; list = list->next) gtk_ctree_select (ctree, list->data); - + clist->anchor = -1; clist->drag_pos = -1; - + if (!CLIST_UNFROZEN (clist)) clist->freeze_count--; } @@ -5751,29 +5750,29 @@ real_undo_selection (GtkCList *clist) { GtkCTree *ctree; GList *work; - + g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CTREE (clist)); - + if (clist->selection_mode != GTK_SELECTION_EXTENDED) return; - + if (!(clist->undo_selection || clist->undo_unselection)) { gtk_clist_unselect_all (clist); return; } - + ctree = GTK_CTREE (clist); - + for (work = clist->undo_selection; work; work = work->next) if (GTK_CTREE_ROW (work->data)->row.selectable) gtk_ctree_select (ctree, GTK_CTREE_NODE (work->data)); - + for (work = clist->undo_unselection; work; work = work->next) if (GTK_CTREE_ROW (work->data)->row.selectable) gtk_ctree_unselect (ctree, GTK_CTREE_NODE (work->data)); - + if (GTK_WIDGET_HAS_FOCUS (clist) && clist->focus_row != clist->undo_anchor) { gtk_widget_draw_focus (GTK_WIDGET (clist)); @@ -5784,18 +5783,18 @@ real_undo_selection (GtkCList *clist) clist->focus_row = clist->undo_anchor; clist->undo_anchor = -1; - + g_list_free (clist->undo_selection); g_list_free (clist->undo_unselection); clist->undo_selection = NULL; clist->undo_unselection = NULL; - + if (ROW_TOP_YPIXEL (clist, clist->focus_row) + clist->row_height > clist->clist_window_height) gtk_clist_moveto (clist, clist->focus_row, -1, 1, 0); else if (ROW_TOP_YPIXEL (clist, clist->focus_row) < 0) gtk_clist_moveto (clist, clist->focus_row, -1, 0, 0); - + } void @@ -5804,7 +5803,7 @@ gtk_ctree_set_drag_compare_func (GtkCTree *ctree, { g_return_if_fail (ctree != NULL); g_return_if_fail (GTK_IS_CTREE (ctree)); - + ctree->drag_compare = cmp_func; } @@ -5816,7 +5815,7 @@ check_drag (GtkCTree *ctree, { g_return_val_if_fail (ctree != NULL, FALSE); g_return_val_if_fail (GTK_IS_CTREE (ctree), FALSE); - + if (drag_source && drag_source != drag_target && (!GTK_CTREE_ROW (drag_source)->children || !gtk_ctree_is_ancestor (ctree, drag_source, drag_target))) @@ -5862,7 +5861,7 @@ static void drag_dest_info_destroy (gpointer data) { GtkCListDestInfo *info = data; - + g_free (info); } @@ -5873,15 +5872,15 @@ drag_dest_cell (GtkCList *clist, GtkCListDestInfo *dest_info) { GtkWidget *widget; - + widget = GTK_WIDGET (clist); - + dest_info->insert_pos = GTK_CLIST_DRAG_NONE; - + y -= (GTK_CONTAINER (widget)->border_width + widget->style->klass->ythickness + clist->column_title_area.height); dest_info->cell.row = ROW_FROM_YPIXEL (clist, y); - + if (dest_info->cell.row >= clist->rows) { dest_info->cell.row = clist->rows - 1; @@ -5889,15 +5888,15 @@ drag_dest_cell (GtkCList *clist, } if (dest_info->cell.row < -1) dest_info->cell.row = -1; - + x -= GTK_CONTAINER (widget)->border_width + widget->style->klass->xthickness; dest_info->cell.column = COLUMN_FROM_XPIXEL (clist, x); - + if (dest_info->cell.row >= 0) { gint y_delta; gint h = 0; - + y_delta = y - ROW_TOP_YPIXEL (clist, dest_info->cell.row); if (GTK_CLIST_DRAW_DRAG_RECT(clist) && @@ -5912,7 +5911,7 @@ drag_dest_cell (GtkCList *clist, dest_info->insert_pos = GTK_CLIST_DRAG_BEFORE; h = clist->row_height / 2; } - + if (GTK_CLIST_DRAW_DRAG_LINE(clist)) { if (y_delta < h) @@ -5930,22 +5929,22 @@ gtk_ctree_drag_begin (GtkWidget *widget, GtkCList *clist; GtkCTree *ctree; gboolean use_icons; - + g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_CTREE (widget)); g_return_if_fail (context != NULL); - + clist = GTK_CLIST (widget); ctree = GTK_CTREE (widget); - + use_icons = GTK_CLIST_USE_DRAG_ICONS (clist); GTK_CLIST_UNSET_FLAG (clist, CLIST_USE_DRAG_ICONS); GTK_WIDGET_CLASS (parent_class)->drag_begin (widget, context); - + if (use_icons) { GtkCTreeNode *node; - + GTK_CLIST_SET_FLAG (clist, CLIST_USE_DRAG_ICONS); node = GTK_CTREE_NODE (g_list_nth (clist->row_list, clist->click_cell.row)); @@ -5980,34 +5979,34 @@ gtk_ctree_drag_motion (GtkWidget *widget, GtkCTree *ctree; GtkCListDestInfo new_info; GtkCListDestInfo *dest_info; - + g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_CTREE (widget), FALSE); - + clist = GTK_CLIST (widget); ctree = GTK_CTREE (widget); - + dest_info = g_dataset_get_data (context, "gtk-clist-drag-dest"); - + if (!dest_info) { dest_info = g_new (GtkCListDestInfo, 1); - + dest_info->cell.row = -1; dest_info->cell.column = -1; dest_info->insert_pos = GTK_CLIST_DRAG_NONE; - + g_dataset_set_data_full (context, "gtk-clist-drag-dest", dest_info, drag_dest_info_destroy); } - + drag_dest_cell (clist, x, y, &new_info); - + if (GTK_CLIST_REORDERABLE (clist)) { GList *list; GdkAtom atom = gdk_atom_intern ("gtk-clist-drag-reorder", FALSE); - + list = context->targets; while (list) { @@ -6015,17 +6014,17 @@ gtk_ctree_drag_motion (GtkWidget *widget, break; list = list->next; } - + if (list) { GtkCTreeNode *drag_source; GtkCTreeNode *drag_target; - + drag_source = GTK_CTREE_NODE (g_list_nth (clist->row_list, clist->click_cell.row)); drag_target = GTK_CTREE_NODE (g_list_nth (clist->row_list, new_info.cell.row)); - + if (gtk_drag_get_source_widget (context) != widget || !check_drag (ctree, drag_source, drag_target, new_info.insert_pos)) @@ -6037,32 +6036,32 @@ gtk_ctree_drag_motion (GtkWidget *widget, } return TRUE; } - + if (new_info.cell.row != dest_info->cell.row || (new_info.cell.row == dest_info->cell.row && dest_info->insert_pos != new_info.insert_pos)) { if (dest_info->cell.row >= 0) - GTK_CLIST_CLASS_FW (clist)->draw_drag_highlight + GTK_CLIST_GET_CLASS (clist)->draw_drag_highlight (clist, g_list_nth (clist->row_list, dest_info->cell.row)->data, dest_info->cell.row, dest_info->insert_pos); - + dest_info->insert_pos = new_info.insert_pos; dest_info->cell.row = new_info.cell.row; dest_info->cell.column = new_info.cell.column; - - GTK_CLIST_CLASS_FW (clist)->draw_drag_highlight + + GTK_CLIST_GET_CLASS (clist)->draw_drag_highlight (clist, g_list_nth (clist->row_list, dest_info->cell.row)->data, dest_info->cell.row, dest_info->insert_pos); - + gdk_drag_status (context, context->suggested_action, time); } return TRUE; } } - + dest_info->insert_pos = new_info.insert_pos; dest_info->cell.row = new_info.cell.row; dest_info->cell.column = new_info.cell.column; @@ -6080,15 +6079,15 @@ gtk_ctree_drag_data_received (GtkWidget *widget, { GtkCTree *ctree; GtkCList *clist; - + g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_CTREE (widget)); g_return_if_fail (context != NULL); g_return_if_fail (selection_data != NULL); - + ctree = GTK_CTREE (widget); clist = GTK_CLIST (widget); - + if (GTK_CLIST_REORDERABLE (clist) && gtk_drag_get_source_widget (context) == widget && selection_data->target == @@ -6097,24 +6096,24 @@ gtk_ctree_drag_data_received (GtkWidget *widget, selection_data->length == sizeof (GtkCListCellInfo)) { GtkCListCellInfo *source_info; - + source_info = (GtkCListCellInfo *)(selection_data->data); if (source_info) { GtkCListDestInfo dest_info; GtkCTreeNode *source_node; GtkCTreeNode *dest_node; - + drag_dest_cell (clist, x, y, &dest_info); source_node = GTK_CTREE_NODE (g_list_nth (clist->row_list, source_info->row)); dest_node = GTK_CTREE_NODE (g_list_nth (clist->row_list, dest_info.cell.row)); - + if (!source_node || !dest_node) return; - + switch (dest_info.insert_pos) { case GTK_CLIST_DRAG_NONE: |