diff options
Diffstat (limited to 'widgets/table/e-tree.c')
-rw-r--r-- | widgets/table/e-tree.c | 694 |
1 files changed, 379 insertions, 315 deletions
diff --git a/widgets/table/e-tree.c b/widgets/table/e-tree.c index c7a9398627..ea2e4634c8 100644 --- a/widgets/table/e-tree.c +++ b/widgets/table/e-tree.c @@ -9,28 +9,28 @@ * Copyright 1999, 2000, 2001, Ximian, Inc */ #include <config.h> +#include "e-tree.h" + #include <stdlib.h> #include <stdio.h> #include <string.h> #include <stdio.h> #include "gal/util/e-i18n.h" -#include <libgnomeui/gnome-canvas.h> #include <gtk/gtksignal.h> -#include "gal/util/e-util.h" -#include "gal/widgets/e-canvas.h" -#include "e-tree.h" -#include "e-table-header-item.h" -#include "e-table-header-utils.h" -#include "e-table-subset.h" -#include "e-table-item.h" -#include "e-table-group.h" -#include "e-table-group-leaf.h" -#include "e-table-specification.h" -#include "e-table-state.h" -#include "e-table-column-specification.h" - -#include "e-table-utils.h" +#include <gal/util/e-util.h> +#include <gal/widgets/e-canvas.h> + +#include <gal/e-table/e-table-column-specification.h> +#include <gal/e-table/e-table-header-item.h> +#include <gal/e-table/e-table-header.h> +#include <gal/e-table/e-table-item.h> +#include <gal/e-table/e-table-sort-info.h> +#include <gal/e-table/e-table-utils.h> + +#include <gal/e-table/e-tree-selection-model.h> +#include <gal/e-table/e-tree-sorted.h> +#include <gal/e-table/e-tree-table-adapter.h> #define COLUMN_HEADER_HEIGHT 16 @@ -65,6 +65,55 @@ enum { ARG_LENGTH_THRESHOLD, }; +struct ETreePriv { + ETreeModel *model; + ETreeSorted *sorted; + ETreeTableAdapter *etta; + + ETableHeader *full_header, *header; + + ETableSortInfo *sort_info; + ESorter *sorter; + + ESelectionModel *selection; + ETableSpecification *spec; + + int reflow_idle_id; + + GnomeCanvas *header_canvas, *table_canvas; + + GnomeCanvasItem *header_item, *root; + + GnomeCanvasItem *white_item; + GnomeCanvasItem *item; + + gint length_threshold; + + /* + * Configuration settings + */ + guint horizontal_draw_grid : 1; + guint vertical_draw_grid : 1; + guint draw_focus : 1; + guint row_selection_active : 1; + + guint horizontal_scrolling : 1; + + ECursorMode cursor_mode; + + int drop_row; + ETreePath drop_path; + int drop_col; + + int drag_row; + ETreePath drag_path; + int drag_col; + ETreeDragSourceSite *site; + + int drag_source_button_press_event_id; + int drag_source_motion_notify_event_id; +}; + static gint et_signals [LAST_SIGNAL] = { 0, }; static void et_grab_focus (GtkWidget *widget); @@ -120,23 +169,25 @@ et_destroy (GtkObject *object) { ETree *et = E_TREE (object); - if (et->reflow_idle_id) - g_source_remove(et->reflow_idle_id); - et->reflow_idle_id = 0; + if (et->priv->reflow_idle_id) + g_source_remove(et->priv->reflow_idle_id); + et->priv->reflow_idle_id = 0; - gtk_object_unref (GTK_OBJECT (et->model)); - gtk_object_unref (GTK_OBJECT (et->sorted)); - gtk_object_unref (GTK_OBJECT (et->full_header)); - gtk_object_unref (GTK_OBJECT (et->header)); - gtk_object_unref (GTK_OBJECT (et->sort_info)); - gtk_object_unref (GTK_OBJECT (et->selection)); - if (et->spec) - gtk_object_unref (GTK_OBJECT (et->spec)); + gtk_object_unref (GTK_OBJECT (et->priv->model)); + gtk_object_unref (GTK_OBJECT (et->priv->sorted)); + gtk_object_unref (GTK_OBJECT (et->priv->full_header)); + gtk_object_unref (GTK_OBJECT (et->priv->header)); + gtk_object_unref (GTK_OBJECT (et->priv->sort_info)); + gtk_object_unref (GTK_OBJECT (et->priv->selection)); + if (et->priv->spec) + gtk_object_unref (GTK_OBJECT (et->priv->spec)); - if (et->header_canvas != NULL) - gtk_widget_destroy (GTK_WIDGET (et->header_canvas)); + if (et->priv->header_canvas != NULL) + gtk_widget_destroy (GTK_WIDGET (et->priv->header_canvas)); - gtk_widget_destroy (GTK_WIDGET (et->table_canvas)); + gtk_widget_destroy (GTK_WIDGET (et->priv->table_canvas)); + + g_free(et->priv); (*parent_class->destroy)(object); } @@ -151,31 +202,33 @@ e_tree_init (GtkObject *object) gtk_table->homogeneous = FALSE; - e_tree->sort_info = NULL; - e_tree->reflow_idle_id = 0; + e_tree->priv = g_new(ETreePriv, 1); + + e_tree->priv->sort_info = NULL; + e_tree->priv->reflow_idle_id = 0; - e_tree->horizontal_draw_grid = 1; - e_tree->vertical_draw_grid = 1; - e_tree->draw_focus = 1; - e_tree->cursor_mode = E_CURSOR_SIMPLE; - e_tree->length_threshold = 200; + e_tree->priv->horizontal_draw_grid = 1; + e_tree->priv->vertical_draw_grid = 1; + e_tree->priv->draw_focus = 1; + e_tree->priv->cursor_mode = E_CURSOR_SIMPLE; + e_tree->priv->length_threshold = 200; - e_tree->horizontal_scrolling = FALSE; + e_tree->priv->horizontal_scrolling = FALSE; - e_tree->drop_row = -1; - e_tree->drop_path = NULL; - e_tree->drop_col = -1; + e_tree->priv->drop_row = -1; + e_tree->priv->drop_path = NULL; + e_tree->priv->drop_col = -1; - e_tree->drag_row = -1; - e_tree->drag_path = NULL; - e_tree->drag_col = -1; + e_tree->priv->drag_row = -1; + e_tree->priv->drag_path = NULL; + e_tree->priv->drag_col = -1; - e_tree->site = NULL; - e_tree->drag_source_button_press_event_id = 0; - e_tree->drag_source_motion_notify_event_id = 0; + e_tree->priv->site = NULL; + e_tree->priv->drag_source_button_press_event_id = 0; + e_tree->priv->drag_source_motion_notify_event_id = 0; - e_tree->selection = E_SELECTION_MODEL(e_table_selection_model_new()); - e_tree->spec = NULL; + e_tree->priv->selection = E_SELECTION_MODEL(e_tree_selection_model_new()); + e_tree->priv->spec = NULL; } /* Grab_focus handler for the ETree */ @@ -186,7 +239,7 @@ et_grab_focus (GtkWidget *widget) e_tree = E_TREE (widget); - gtk_widget_grab_focus (GTK_WIDGET (e_tree->table_canvas)); + gtk_widget_grab_focus (GTK_WIDGET (e_tree->priv->table_canvas)); } /* Focus handler for the ETree */ @@ -202,7 +255,7 @@ et_focus (GtkContainer *container, GtkDirectionType direction) return FALSE; } - return gtk_container_focus (GTK_CONTAINER (e_tree->table_canvas), direction); + return gtk_container_focus (GTK_CONTAINER (e_tree->priv->table_canvas), direction); } static void @@ -210,20 +263,20 @@ set_header_canvas_width (ETree *e_tree) { double oldwidth, oldheight, width; - if (!(e_tree->header_item && e_tree->header_canvas && e_tree->table_canvas)) + if (!(e_tree->priv->header_item && e_tree->priv->header_canvas && e_tree->priv->table_canvas)) return; - gnome_canvas_get_scroll_region (GNOME_CANVAS (e_tree->table_canvas), + gnome_canvas_get_scroll_region (GNOME_CANVAS (e_tree->priv->table_canvas), NULL, NULL, &width, NULL); - gnome_canvas_get_scroll_region (GNOME_CANVAS (e_tree->header_canvas), + gnome_canvas_get_scroll_region (GNOME_CANVAS (e_tree->priv->header_canvas), NULL, NULL, &oldwidth, &oldheight); if (oldwidth != width || - oldheight != E_TABLE_HEADER_ITEM (e_tree->header_item)->height - 1) + oldheight != E_TABLE_HEADER_ITEM (e_tree->priv->header_item)->height - 1) gnome_canvas_set_scroll_region ( - GNOME_CANVAS (e_tree->header_canvas), + GNOME_CANVAS (e_tree->priv->header_canvas), 0, 0, width, /* COLUMN_HEADER_HEIGHT - 1 */ - E_TABLE_HEADER_ITEM (e_tree->header_item)->height - 1); + E_TABLE_HEADER_ITEM (e_tree->priv->header_item)->height - 1); } @@ -236,29 +289,29 @@ header_canvas_size_allocate (GtkWidget *widget, GtkAllocation *alloc, ETree *e_t as the font is only created when everything is realized. So we set the usize here as well, so that the size of the header is correct */ - if (GTK_WIDGET (e_tree->header_canvas)->allocation.height != - E_TABLE_HEADER_ITEM (e_tree->header_item)->height) - gtk_widget_set_usize (GTK_WIDGET (e_tree->header_canvas), -1, - E_TABLE_HEADER_ITEM (e_tree->header_item)->height); + if (GTK_WIDGET (e_tree->priv->header_canvas)->allocation.height != + E_TABLE_HEADER_ITEM (e_tree->priv->header_item)->height) + gtk_widget_set_usize (GTK_WIDGET (e_tree->priv->header_canvas), -1, + E_TABLE_HEADER_ITEM (e_tree->priv->header_item)->height); } static void e_tree_setup_header (ETree *e_tree) { char *pointer; - e_tree->header_canvas = GNOME_CANVAS (e_canvas_new ()); - GTK_WIDGET_UNSET_FLAGS (e_tree->header_canvas, GTK_CAN_FOCUS); + e_tree->priv->header_canvas = GNOME_CANVAS (e_canvas_new ()); + GTK_WIDGET_UNSET_FLAGS (e_tree->priv->header_canvas, GTK_CAN_FOCUS); - gtk_widget_show (GTK_WIDGET (e_tree->header_canvas)); + gtk_widget_show (GTK_WIDGET (e_tree->priv->header_canvas)); pointer = g_strdup_printf("%p", e_tree); - e_tree->header_item = gnome_canvas_item_new ( - gnome_canvas_root (e_tree->header_canvas), + e_tree->priv->header_item = gnome_canvas_item_new ( + gnome_canvas_root (e_tree->priv->header_canvas), e_table_header_item_get_type (), - "ETableHeader", e_tree->header, - "full_header", e_tree->full_header, - "sort_info", e_tree->sort_info, + "ETableHeader", e_tree->priv->header, + "full_header", e_tree->priv->full_header, + "sort_info", e_tree->priv->sort_info, "dnd_code", pointer, /* "table", e_tree, FIXME*/ NULL); @@ -266,11 +319,11 @@ e_tree_setup_header (ETree *e_tree) g_free(pointer); gtk_signal_connect ( - GTK_OBJECT (e_tree->header_canvas), "size_allocate", + GTK_OBJECT (e_tree->priv->header_canvas), "size_allocate", GTK_SIGNAL_FUNC (header_canvas_size_allocate), e_tree); - gtk_widget_set_usize (GTK_WIDGET (e_tree->header_canvas), -1, - E_TABLE_HEADER_ITEM (e_tree->header_item)->height); + gtk_widget_set_usize (GTK_WIDGET (e_tree->priv->header_canvas), -1, + E_TABLE_HEADER_ITEM (e_tree->priv->header_item)->height); } static gboolean @@ -279,9 +332,9 @@ tree_canvas_reflow_idle (ETree *e_tree) gdouble height, width; gdouble item_height; gdouble oldheight, oldwidth; - GtkAllocation *alloc = &(GTK_WIDGET (e_tree->table_canvas)->allocation); + GtkAllocation *alloc = &(GTK_WIDGET (e_tree->priv->table_canvas)->allocation); - gtk_object_get (GTK_OBJECT (e_tree->item), + gtk_object_get (GTK_OBJECT (e_tree->priv->item), "height", &height, "width", &width, NULL); @@ -289,21 +342,21 @@ tree_canvas_reflow_idle (ETree *e_tree) height = MAX ((int)height, alloc->height); width = MAX((int)width, alloc->width); /* I have no idea why this needs to be -1, but it works. */ - gnome_canvas_get_scroll_region (GNOME_CANVAS (e_tree->table_canvas), + gnome_canvas_get_scroll_region (GNOME_CANVAS (e_tree->priv->table_canvas), NULL, NULL, &oldwidth, &oldheight); if (oldwidth != width - 1 || oldheight != height - 1) { - gnome_canvas_set_scroll_region (GNOME_CANVAS (e_tree->table_canvas), + gnome_canvas_set_scroll_region (GNOME_CANVAS (e_tree->priv->table_canvas), 0, 0, width - 1, height - 1); set_header_canvas_width (e_tree); } - gtk_object_set (GTK_OBJECT (e_tree->white_item), + gtk_object_set (GTK_OBJECT (e_tree->priv->white_item), "y1", item_height, "x2", width, "y2", height, NULL); - e_tree->reflow_idle_id = 0; + e_tree->priv->reflow_idle_id = 0; return FALSE; } @@ -316,35 +369,35 @@ tree_canvas_size_allocate (GtkWidget *widget, GtkAllocation *alloc, gdouble item_height; width = alloc->width; - gtk_object_get (GTK_OBJECT (e_tree->item), + gtk_object_get (GTK_OBJECT (e_tree->priv->item), "height", &height, NULL); item_height = height; height = MAX ((int)height, alloc->height); - gtk_object_set (GTK_OBJECT (e_tree->item), + gtk_object_set (GTK_OBJECT (e_tree->priv->item), "width", width, NULL); - gtk_object_set (GTK_OBJECT (e_tree->header), + gtk_object_set (GTK_OBJECT (e_tree->priv->header), "width", width, NULL); - if (e_tree->reflow_idle_id) - g_source_remove(e_tree->reflow_idle_id); + if (e_tree->priv->reflow_idle_id) + g_source_remove(e_tree->priv->reflow_idle_id); tree_canvas_reflow_idle(e_tree); } static void tree_canvas_reflow (GnomeCanvas *canvas, ETree *e_tree) { - if (!e_tree->reflow_idle_id) - e_tree->reflow_idle_id = g_idle_add_full (400, (GSourceFunc) tree_canvas_reflow_idle, e_tree, NULL); + if (!e_tree->priv->reflow_idle_id) + e_tree->priv->reflow_idle_id = g_idle_add_full (400, (GSourceFunc) tree_canvas_reflow_idle, e_tree, NULL); } static void item_cursor_change (ETableItem *eti, int row, ETree *et) { - ETreePath path = e_tree_table_adapter_node_at_row(et->etta, row); - path = e_tree_sorted_view_to_model_path(et->sorted, path); + ETreePath path = e_tree_table_adapter_node_at_row(et->priv->etta, row); + path = e_tree_sorted_view_to_model_path(et->priv->sorted, path); gtk_signal_emit (GTK_OBJECT (et), et_signals [CURSOR_CHANGE], row, path); @@ -353,8 +406,8 @@ item_cursor_change (ETableItem *eti, int row, ETree *et) static void item_cursor_activated (ETableItem *eti, int row, ETree *et) { - ETreePath path = e_tree_table_adapter_node_at_row(et->etta, row); - path = e_tree_sorted_view_to_model_path(et->sorted, path); + ETreePath path = e_tree_table_adapter_node_at_row(et->priv->etta, row); + path = e_tree_sorted_view_to_model_path(et->priv->sorted, path); gtk_signal_emit (GTK_OBJECT (et), et_signals [CURSOR_ACTIVATED], row, path); @@ -363,8 +416,8 @@ item_cursor_activated (ETableItem *eti, int row, ETree *et) static void item_double_click (ETableItem *eti, int row, int col, GdkEvent *event, ETree *et) { - ETreePath path = e_tree_table_adapter_node_at_row(et->etta, row); - path = e_tree_sorted_view_to_model_path(et->sorted, path); + ETreePath path = e_tree_table_adapter_node_at_row(et->priv->etta, row); + path = e_tree_sorted_view_to_model_path(et->priv->sorted, path); gtk_signal_emit (GTK_OBJECT (et), et_signals [DOUBLE_CLICK], row, path, col, event); @@ -374,8 +427,8 @@ static gint item_right_click (ETableItem *eti, int row, int col, GdkEvent *event, ETree *et) { int return_val = 0; - ETreePath path = e_tree_table_adapter_node_at_row(et->etta, row); - path = e_tree_sorted_view_to_model_path(et->sorted, path); + ETreePath path = e_tree_table_adapter_node_at_row(et->priv->etta, row); + path = e_tree_sorted_view_to_model_path(et->priv->sorted, path); gtk_signal_emit (GTK_OBJECT (et), et_signals [RIGHT_CLICK], row, path, col, event, &return_val); @@ -386,8 +439,8 @@ static gint item_click (ETableItem *eti, int row, int col, GdkEvent *event, ETree *et) { int return_val = 0; - ETreePath path = e_tree_table_adapter_node_at_row(et->etta, row); - path = e_tree_sorted_view_to_model_path(et->sorted, path); + ETreePath path = e_tree_table_adapter_node_at_row(et->priv->etta, row); + path = e_tree_sorted_view_to_model_path(et->priv->sorted, path); gtk_signal_emit (GTK_OBJECT (et), et_signals [CLICK], row, path, col, event, &return_val); @@ -405,54 +458,54 @@ item_key_press (ETableItem *eti, int row, int col, GdkEvent *event, ETree *et) switch (key->keyval) { case GDK_Page_Down: gtk_adjustment_set_value( - gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas)), - CLAMP(gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->value + - (gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->page_size - 20), + gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas)), + CLAMP(gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->value + + (gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->page_size - 20), 0, - gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->upper - - gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->page_size)); + gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->upper - + gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->page_size)); click.type = GDK_BUTTON_PRESS; - click.window = GTK_LAYOUT (et->table_canvas)->bin_window; + click.window = GTK_LAYOUT (et->priv->table_canvas)->bin_window; click.send_event = key->send_event; click.time = key->time; click.x = 30; - click.y = gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->page_size - 1; + click.y = gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->page_size - 1; click.state = key->state; click.button = 1; - gtk_widget_event(GTK_WIDGET(et->table_canvas), + gtk_widget_event(GTK_WIDGET(et->priv->table_canvas), (GdkEvent *) &click); return_val = 1; break; case GDK_Page_Up: gtk_adjustment_set_value( - gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas)), - gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->value - - (gtk_layout_get_vadjustment (GTK_LAYOUT (et->table_canvas))->page_size - 20)); + gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas)), + gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->value - + (gtk_layout_get_vadjustment (GTK_LAYOUT (et->priv->table_canvas))->page_size - 20)); click.type = GDK_BUTTON_PRESS; - click.window = GTK_LAYOUT (et->table_canvas)->bin_window; + click.window = GTK_LAYOUT (et->priv->table_canvas)->bin_window; click.send_event = key->send_event; click.time = key->time; click.x = 30; click.y = 1; click.state = key->state; click.button = 1; - gtk_widget_event(GTK_WIDGET(et->table_canvas), + gtk_widget_event(GTK_WIDGET(et->priv->table_canvas), (GdkEvent *) &click); return_val = 1; break; case '=': case GDK_Right: - path = e_tree_table_adapter_node_at_row(et->etta, row); - e_tree_table_adapter_node_set_expanded (et->etta, path, TRUE); + path = e_tree_table_adapter_node_at_row(et->priv->etta, row); + e_tree_table_adapter_node_set_expanded (et->priv->etta, path, TRUE); break; case '-': case GDK_Left: - path = e_tree_table_adapter_node_at_row(et->etta, row); - e_tree_table_adapter_node_set_expanded (et->etta, path, FALSE); + path = e_tree_table_adapter_node_at_row(et->priv->etta, row); + e_tree_table_adapter_node_set_expanded (et->priv->etta, path, FALSE); break; default: - path = e_tree_table_adapter_node_at_row(et->etta, row); - path = e_tree_sorted_view_to_model_path(et->sorted, path); + path = e_tree_table_adapter_node_at_row(et->priv->etta, row); + path = e_tree_sorted_view_to_model_path(et->priv->sorted, path); gtk_signal_emit (GTK_OBJECT (et), et_signals [KEY_PRESS], row, path, col, event, &return_val); @@ -471,29 +524,29 @@ et_selection_model_selection_change (ETableSelectionModel *etsm, ETable *et) static void et_build_item (ETree *et) { - et->item = gnome_canvas_item_new(GNOME_CANVAS_GROUP (gnome_canvas_root(et->table_canvas)), + et->priv->item = gnome_canvas_item_new(GNOME_CANVAS_GROUP (gnome_canvas_root(et->priv->table_canvas)), e_table_item_get_type(), - "ETableHeader", et->header, - "ETableModel", et->etta, - "selection_model", et->selection, - "horizontal_draw_grid", et->horizontal_draw_grid, - "vertical_draw_grid", et->vertical_draw_grid, - "drawfocus", et->draw_focus, - "cursor_mode", et->cursor_mode, - "length_threshold", et->length_threshold, + "ETableHeader", et->priv->header, + "ETableModel", et->priv->etta, + "selection_model", et->priv->selection, + "horizontal_draw_grid", et->priv->horizontal_draw_grid, + "vertical_draw_grid", et->priv->vertical_draw_grid, + "drawfocus", et->priv->draw_focus, + "cursor_mode", et->priv->cursor_mode, + "length_threshold", et->priv->length_threshold, NULL); - gtk_signal_connect (GTK_OBJECT (et->item), "cursor_change", + gtk_signal_connect (GTK_OBJECT (et->priv->item), "cursor_change", GTK_SIGNAL_FUNC (item_cursor_change), et); - gtk_signal_connect (GTK_OBJECT (et->item), "cursor_activated", + gtk_signal_connect (GTK_OBJECT (et->priv->item), "cursor_activated", GTK_SIGNAL_FUNC (item_cursor_activated), et); - gtk_signal_connect (GTK_OBJECT (et->item), "double_click", + gtk_signal_connect (GTK_OBJECT (et->priv->item), "double_click", GTK_SIGNAL_FUNC (item_double_click), et); - gtk_signal_connect (GTK_OBJECT (et->item), "right_click", + gtk_signal_connect (GTK_OBJECT (et->priv->item), "right_click", GTK_SIGNAL_FUNC (item_right_click), et); - gtk_signal_connect (GTK_OBJECT (et->item), "click", + gtk_signal_connect (GTK_OBJECT (et->priv->item), "click", GTK_SIGNAL_FUNC (item_click), et); - gtk_signal_connect (GTK_OBJECT (et->item), "key_press", + gtk_signal_connect (GTK_OBJECT (et->priv->item), "key_press", GTK_SIGNAL_FUNC (item_key_press), et); } @@ -501,8 +554,8 @@ static void et_canvas_realize (GtkWidget *canvas, ETree *e_tree) { gnome_canvas_item_set( - e_tree->white_item, - "fill_color_gdk", >K_WIDGET(e_tree->table_canvas)->style->base[GTK_STATE_NORMAL], + e_tree->priv->white_item, + "fill_color_gdk", >K_WIDGET(e_tree->priv->table_canvas)->style->base[GTK_STATE_NORMAL], NULL); } @@ -521,15 +574,15 @@ et_canvas_button_press (GtkWidget *canvas, GdkEvent *event, ETree *e_tree) static void e_tree_setup_table (ETree *e_tree) { - e_tree->table_canvas = GNOME_CANVAS (e_canvas_new ()); + e_tree->priv->table_canvas = GNOME_CANVAS (e_canvas_new ()); gtk_signal_connect ( - GTK_OBJECT (e_tree->table_canvas), "size_allocate", + GTK_OBJECT (e_tree->priv->table_canvas), "size_allocate", GTK_SIGNAL_FUNC (tree_canvas_size_allocate), e_tree); gtk_signal_connect ( - GTK_OBJECT (e_tree->table_canvas), "focus_in_event", + GTK_OBJECT (e_tree->priv->table_canvas), "focus_in_event", GTK_SIGNAL_FUNC (gtk_widget_queue_draw), e_tree); gtk_signal_connect ( - GTK_OBJECT (e_tree->table_canvas), "focus_out_event", + GTK_OBJECT (e_tree->priv->table_canvas), "focus_out_event", GTK_SIGNAL_FUNC (gtk_widget_queue_draw), e_tree); gtk_signal_connect ( @@ -557,26 +610,26 @@ e_tree_setup_table (ETree *e_tree) GTK_OBJECT (e_tree), "drag_data_received", GTK_SIGNAL_FUNC (et_drag_data_received), e_tree); - gtk_signal_connect (GTK_OBJECT(e_tree->table_canvas), "reflow", + gtk_signal_connect (GTK_OBJECT(e_tree->priv->table_canvas), "reflow", GTK_SIGNAL_FUNC (tree_canvas_reflow), e_tree); - gtk_widget_show (GTK_WIDGET (e_tree->table_canvas)); + gtk_widget_show (GTK_WIDGET (e_tree->priv->table_canvas)); - e_tree->white_item = gnome_canvas_item_new( - gnome_canvas_root(e_tree->table_canvas), + e_tree->priv->white_item = gnome_canvas_item_new( + gnome_canvas_root(e_tree->priv->table_canvas), gnome_canvas_rect_get_type(), "x1", (double) 0, "y1", (double) 0, "x2", (double) 100, "y2", (double) 100, - "fill_color_gdk", >K_WIDGET(e_tree->table_canvas)->style->base[GTK_STATE_NORMAL], + "fill_color_gdk", >K_WIDGET(e_tree->priv->table_canvas)->style->base[GTK_STATE_NORMAL], NULL); gtk_signal_connect ( - GTK_OBJECT(e_tree->table_canvas), "realize", + GTK_OBJECT(e_tree->priv->table_canvas), "realize", GTK_SIGNAL_FUNC(et_canvas_realize), e_tree); gtk_signal_connect ( - GTK_OBJECT(e_tree->table_canvas), "button_press_event", + GTK_OBJECT(e_tree->priv->table_canvas), "button_press_event", GTK_SIGNAL_FUNC(et_canvas_button_press), e_tree); et_build_item(e_tree); @@ -585,38 +638,38 @@ e_tree_setup_table (ETree *e_tree) void e_tree_set_state_object(ETree *e_tree, ETableState *state) { - if (e_tree->header) - gtk_object_unref(GTK_OBJECT(e_tree->header)); - e_tree->header = e_table_state_to_header (GTK_WIDGET(e_tree), e_tree->full_header, state); - if (e_tree->header) - gtk_object_ref(GTK_OBJECT(e_tree->header)); + if (e_tree->priv->header) + gtk_object_unref(GTK_OBJECT(e_tree->priv->header)); + e_tree->priv->header = e_table_state_to_header (GTK_WIDGET(e_tree), e_tree->priv->full_header, state); + if (e_tree->priv->header) + gtk_object_ref(GTK_OBJECT(e_tree->priv->header)); - gtk_object_set (GTK_OBJECT (e_tree->header), - "width", (double) (GTK_WIDGET(e_tree->table_canvas)->allocation.width), + gtk_object_set (GTK_OBJECT (e_tree->priv->header), + "width", (double) (GTK_WIDGET(e_tree->priv->table_canvas)->allocation.width), NULL); - if (e_tree->sort_info) - gtk_object_unref(GTK_OBJECT(e_tree->sort_info)); + if (e_tree->priv->sort_info) + gtk_object_unref(GTK_OBJECT(e_tree->priv->sort_info)); if (state->sort_info) - e_tree->sort_info = e_table_sort_info_duplicate(state->sort_info); + e_tree->priv->sort_info = e_table_sort_info_duplicate(state->sort_info); else - e_tree->sort_info = NULL; + e_tree->priv->sort_info = NULL; - if (e_tree->header_item) - gtk_object_set(GTK_OBJECT(e_tree->header_item), - "ETableHeader", e_tree->header, - "sort_info", e_tree->sort_info, + if (e_tree->priv->header_item) + gtk_object_set(GTK_OBJECT(e_tree->priv->header_item), + "ETableHeader", e_tree->priv->header, + "sort_info", e_tree->priv->sort_info, NULL); - if (e_tree->item) - gtk_object_set(GTK_OBJECT(e_tree->item), - "ETableHeader", e_tree->header, + if (e_tree->priv->item) + gtk_object_set(GTK_OBJECT(e_tree->priv->item), + "ETableHeader", e_tree->priv->header, NULL); - if (e_tree->sorted) - gtk_object_set(GTK_OBJECT(e_tree->sorted), - "sort_info", e_tree->sort_info, + if (e_tree->priv->sorted) + gtk_object_set(GTK_OBJECT(e_tree->priv->sorted), + "sort_info", e_tree->priv->sort_info, NULL); } @@ -689,18 +742,18 @@ e_tree_get_state_object (ETree *e_tree) int i, j; state = e_table_state_new(); - state->sort_info = e_tree->sort_info; + state->sort_info = e_tree->priv->sort_info; gtk_object_ref(GTK_OBJECT(state->sort_info)); - state->col_count = e_table_header_count (e_tree->header); - full_col_count = e_table_header_count (e_tree->full_header); + state->col_count = e_table_header_count (e_tree->priv->header); + full_col_count = e_table_header_count (e_tree->priv->full_header); state->columns = g_new(int, state->col_count); state->expansions = g_new(double, state->col_count); for (i = 0; i < state->col_count; i++) { - ETableCol *col = e_table_header_get_column(e_tree->header, i); + ETableCol *col = e_table_header_get_column(e_tree->priv->header, i); state->columns[i] = -1; for (j = 0; j < full_col_count; j++) { - if (col->col_idx == e_table_header_index(e_tree->full_header, j)) { + if (col->col_idx == e_table_header_index(e_tree->priv->full_header, j)) { state->columns[i] = j; break; } @@ -752,46 +805,44 @@ et_real_construct (ETree *e_tree, ETreeModel *etm, ETableExtras *ete, else ete = e_table_extras_new(); - e_tree->horizontal_draw_grid = specification->horizontal_draw_grid; - e_tree->vertical_draw_grid = specification->vertical_draw_grid; - e_tree->draw_focus = specification->draw_focus; - e_tree->cursor_mode = specification->cursor_mode; - e_tree->full_header = e_table_spec_to_full_header(specification, ete); + e_tree->priv->horizontal_draw_grid = specification->horizontal_draw_grid; + e_tree->priv->vertical_draw_grid = specification->vertical_draw_grid; + e_tree->priv->draw_focus = specification->draw_focus; + e_tree->priv->cursor_mode = specification->cursor_mode; + e_tree->priv->full_header = e_table_spec_to_full_header(specification, ete); - e_tree->header = e_table_state_to_header (GTK_WIDGET(e_tree), e_tree->full_header, state); - e_tree->horizontal_scrolling = specification->horizontal_scrolling; + e_tree->priv->header = e_table_state_to_header (GTK_WIDGET(e_tree), e_tree->priv->full_header, state); + e_tree->priv->horizontal_scrolling = specification->horizontal_scrolling; - e_tree->sort_info = state->sort_info; - gtk_object_ref (GTK_OBJECT (e_tree->sort_info)); + e_tree->priv->sort_info = state->sort_info; + gtk_object_ref (GTK_OBJECT (e_tree->priv->sort_info)); - gtk_object_set(GTK_OBJECT(e_tree->header), - "sort_info", e_tree->sort_info, + gtk_object_set(GTK_OBJECT(e_tree->priv->header), + "sort_info", e_tree->priv->sort_info, NULL); - e_tree->model = etm; + e_tree->priv->model = etm; gtk_object_ref (GTK_OBJECT (etm)); - e_tree->sorted = e_tree_sorted_new(etm, e_tree->full_header, e_tree->sort_info); + e_tree->priv->sorted = e_tree_sorted_new(etm, e_tree->priv->full_header, e_tree->priv->sort_info); - e_tree->etta = E_TREE_TABLE_ADAPTER(e_tree_table_adapter_new(E_TREE_MODEL(e_tree->sorted))); + e_tree->priv->etta = E_TREE_TABLE_ADAPTER(e_tree_table_adapter_new(E_TREE_MODEL(e_tree->priv->sorted))); gtk_widget_push_visual (gdk_rgb_get_visual ()); gtk_widget_push_colormap (gdk_rgb_get_cmap ()); - e_tree->sorter = e_sorter_new(); + e_tree->priv->sorter = e_sorter_new(); - gtk_object_set (GTK_OBJECT (e_tree->selection), - "model", e_tree->etta, - "sorter", e_tree->sorter, -#if 0 - "ets", e_tree->sorted, - "model", e_tree->model, -#endif + gtk_object_set (GTK_OBJECT (e_tree->priv->selection), + "model", e_tree->priv->model, + "sorter", e_tree->priv->sorter, + "ets", e_tree->priv->sorted, + "etta", e_tree->priv->etta, "selection_mode", specification->selection_mode, "cursor_mode", specification->cursor_mode, NULL); - gtk_signal_connect(GTK_OBJECT(e_tree->selection), "selection_changed", + gtk_signal_connect(GTK_OBJECT(e_tree->priv->selection), "selection_changed", GTK_SIGNAL_FUNC(et_selection_model_selection_change), e_tree); if (!specification->no_headers) { @@ -799,20 +850,20 @@ et_real_construct (ETree *e_tree, ETreeModel *etm, ETableExtras *ete, } e_tree_setup_table (e_tree); - gtk_layout_get_vadjustment (GTK_LAYOUT (e_tree->table_canvas))->step_increment = 20; - gtk_adjustment_changed(gtk_layout_get_vadjustment (GTK_LAYOUT (e_tree->table_canvas))); + gtk_layout_get_vadjustment (GTK_LAYOUT (e_tree->priv->table_canvas))->step_increment = 20; + gtk_adjustment_changed(gtk_layout_get_vadjustment (GTK_LAYOUT (e_tree->priv->table_canvas))); if (!specification->no_headers) { /* * The header */ - gtk_table_attach (GTK_TABLE (e_tree), GTK_WIDGET (e_tree->header_canvas), + gtk_table_attach (GTK_TABLE (e_tree), GTK_WIDGET (e_tree->priv->header_canvas), 0, 1, 0 + row, 1 + row, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); row ++; } - gtk_table_attach (GTK_TABLE (e_tree), GTK_WIDGET (e_tree->table_canvas), + gtk_table_attach (GTK_TABLE (e_tree), GTK_WIDGET (e_tree->priv->table_canvas), 0, 1, 0 + row, 1 + row, GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, @@ -857,7 +908,7 @@ e_tree_construct (ETree *e_tree, ETreeModel *etm, ETableExtras *ete, e_tree = et_real_construct (e_tree, etm, ete, specification, state); - e_tree->spec = specification; + e_tree->priv->spec = specification; gtk_object_unref(GTK_OBJECT(state)); return e_tree; @@ -902,7 +953,7 @@ e_tree_construct_from_spec_file (ETree *e_tree, ETreeModel *etm, ETableExtras *e e_tree = et_real_construct (e_tree, etm, ete, specification, state); - e_tree->spec = specification; + e_tree->priv->spec = specification; gtk_object_unref(GTK_OBJECT(state)); return e_tree; @@ -950,14 +1001,14 @@ e_tree_set_cursor (ETree *e_tree, ETreePath path) g_return_if_fail(E_IS_TREE(e_tree)); g_return_if_fail(path != NULL); - path = e_tree_sorted_model_to_view_path(e_tree->sorted, path); + path = e_tree_sorted_model_to_view_path(e_tree->priv->sorted, path); - row = e_tree_table_adapter_row_of_node(E_TREE_TABLE_ADAPTER(e_tree->etta), path); + row = e_tree_table_adapter_row_of_node(E_TREE_TABLE_ADAPTER(e_tree->priv->etta), path); if (row == -1) return; - gtk_object_set(GTK_OBJECT(e_tree->selection), + gtk_object_set(GTK_OBJECT(e_tree->priv->selection), "cursor_row", row, NULL); } @@ -970,11 +1021,11 @@ e_tree_get_cursor (ETree *e_tree) g_return_val_if_fail(e_tree != NULL, NULL); g_return_val_if_fail(E_IS_TREE(e_tree), NULL); - gtk_object_get(GTK_OBJECT(e_tree->selection), + gtk_object_get(GTK_OBJECT(e_tree->priv->selection), "cursor_row", &row, NULL); - path = e_tree_table_adapter_node_at_row(E_TREE_TABLE_ADAPTER(e_tree->etta), row); - path = e_tree_sorted_view_to_model_path(e_tree->sorted, path); + path = e_tree_table_adapter_node_at_row(E_TREE_TABLE_ADAPTER(e_tree->priv->etta), row); + path = e_tree_sorted_view_to_model_path(e_tree->priv->sorted, path); return path; } @@ -986,9 +1037,22 @@ e_tree_selected_row_foreach (ETree *e_tree, g_return_if_fail(e_tree != NULL); g_return_if_fail(E_IS_TREE(e_tree)); - e_selection_model_foreach(E_SELECTION_MODEL (e_tree->selection), - callback, - closure); + e_selection_model_foreach(e_tree->priv->selection, + callback, + closure); +} + +void +e_tree_selected_path_foreach (ETree *e_tree, + ETreeForeachFunc callback, + gpointer closure) +{ + g_return_if_fail(e_tree != NULL); + g_return_if_fail(E_IS_TREE(e_tree)); + + e_tree_selection_model_foreach(E_TREE_SELECTION_MODEL (e_tree->priv->selection), + callback, + closure); } gint @@ -997,7 +1061,7 @@ e_tree_selected_count (ETree *e_tree) g_return_val_if_fail(e_tree != NULL, -1); g_return_val_if_fail(E_IS_TREE(e_tree), -1); - return e_selection_model_selected_count(E_SELECTION_MODEL (e_tree->selection)); + return e_selection_model_selected_count(E_SELECTION_MODEL (e_tree->priv->selection)); } void @@ -1006,7 +1070,7 @@ e_tree_select_all (ETree *tree) g_return_if_fail (tree != NULL); g_return_if_fail (E_IS_TREE (tree)); - e_selection_model_select_all (E_SELECTION_MODEL (tree->selection)); + e_selection_model_select_all (E_SELECTION_MODEL (tree->priv->selection)); } void @@ -1015,7 +1079,7 @@ e_tree_invert_selection (ETree *tree) g_return_if_fail (tree != NULL); g_return_if_fail (E_IS_TREE (tree)); - e_selection_model_invert_selection (E_SELECTION_MODEL (tree->selection)); + e_selection_model_invert_selection (E_SELECTION_MODEL (tree->priv->selection)); } @@ -1025,7 +1089,7 @@ e_tree_get_printable (ETree *e_tree) g_return_val_if_fail(e_tree != NULL, NULL); g_return_val_if_fail(E_IS_TREE(e_tree), NULL); - return e_table_item_get_printable(E_TABLE_ITEM(e_tree->item)); + return e_table_item_get_printable(E_TABLE_ITEM(e_tree->priv->item)); } static void @@ -1049,9 +1113,9 @@ et_set_arg (GtkObject *o, GtkArg *arg, guint arg_id) switch (arg_id){ case ARG_LENGTH_THRESHOLD: - etree->length_threshold = GTK_VALUE_INT (*arg); - if (etree->item) { - gnome_canvas_item_set (GNOME_CANVAS_ITEM(etree->item), + etree->priv->length_threshold = GTK_VALUE_INT (*arg); + if (etree->priv->item) { + gnome_canvas_item_set (GNOME_CANVAS_ITEM(etree->priv->item), "length_threshold", GTK_VALUE_INT (*arg), NULL); } @@ -1070,13 +1134,13 @@ set_scroll_adjustments (ETree *tree, gtk_adjustment_changed(vadjustment); } - gtk_layout_set_hadjustment (GTK_LAYOUT(tree->table_canvas), + gtk_layout_set_hadjustment (GTK_LAYOUT(tree->priv->table_canvas), hadjustment); - gtk_layout_set_vadjustment (GTK_LAYOUT(tree->table_canvas), + gtk_layout_set_vadjustment (GTK_LAYOUT(tree->priv->table_canvas), vadjustment); - if (tree->header_canvas != NULL) - gtk_layout_set_hadjustment (GTK_LAYOUT(tree->header_canvas), + if (tree->priv->header_canvas != NULL) + gtk_layout_set_hadjustment (GTK_LAYOUT(tree->priv->header_canvas), hadjustment); } @@ -1087,16 +1151,16 @@ e_tree_get_next_row (ETree *e_tree, g_return_val_if_fail(e_tree != NULL, -1); g_return_val_if_fail(E_IS_TREE(e_tree), -1); - if (e_tree->sorter) { + if (e_tree->priv->sorter) { int i; - i = e_sorter_model_to_sorted(E_SORTER (e_tree->sorter), model_row); + i = e_sorter_model_to_sorted(E_SORTER (e_tree->priv->sorter), model_row); i++; - if (i < e_table_model_row_count(E_TABLE_MODEL(e_tree->etta))) { - return e_sorter_sorted_to_model(E_SORTER (e_tree->sorter), i); + if (i < e_table_model_row_count(E_TABLE_MODEL(e_tree->priv->etta))) { + return e_sorter_sorted_to_model(E_SORTER (e_tree->priv->sorter), i); } else return -1; } else - if (model_row < e_table_model_row_count(E_TABLE_MODEL(e_tree->etta)) - 1) + if (model_row < e_table_model_row_count(E_TABLE_MODEL(e_tree->priv->etta)) - 1) return model_row + 1; else return -1; @@ -1109,12 +1173,12 @@ e_tree_get_prev_row (ETree *e_tree, g_return_val_if_fail(e_tree != NULL, -1); g_return_val_if_fail(E_IS_TREE(e_tree), -1); - if (e_tree->sorter) { + if (e_tree->priv->sorter) { int i; - i = e_sorter_model_to_sorted(E_SORTER (e_tree->sorter), model_row); + i = e_sorter_model_to_sorted(E_SORTER (e_tree->priv->sorter), model_row); i--; if (i >= 0) - return e_sorter_sorted_to_model(E_SORTER (e_tree->sorter), i); + return e_sorter_sorted_to_model(E_SORTER (e_tree->priv->sorter), i); else return -1; } else @@ -1128,8 +1192,8 @@ e_tree_model_to_view_row (ETree *e_tree, g_return_val_if_fail(e_tree != NULL, -1); g_return_val_if_fail(E_IS_TREE(e_tree), -1); - if (e_tree->sorter) - return e_sorter_model_to_sorted(E_SORTER (e_tree->sorter), model_row); + if (e_tree->priv->sorter) + return e_sorter_model_to_sorted(E_SORTER (e_tree->priv->sorter), model_row); else return model_row; } @@ -1141,8 +1205,8 @@ e_tree_view_to_model_row (ETree *e_tree, g_return_val_if_fail(e_tree != NULL, -1); g_return_val_if_fail(E_IS_TREE(e_tree), -1); - if (e_tree->sorter) - return e_sorter_sorted_to_model (E_SORTER (e_tree->sorter), view_row); + if (e_tree->priv->sorter) + return e_sorter_sorted_to_model (E_SORTER (e_tree->priv->sorter), view_row); else return view_row; } @@ -1151,11 +1215,11 @@ e_tree_view_to_model_row (ETree *e_tree, gboolean e_tree_node_is_expanded (ETree *et, ETreePath path) { - path = e_tree_sorted_model_to_view_path(et->sorted, path); + path = e_tree_sorted_model_to_view_path(et->priv->sorted, path); g_return_val_if_fail(path, FALSE); - return e_tree_table_adapter_node_is_expanded (et->etta, path); + return e_tree_table_adapter_node_is_expanded (et->priv->etta, path); } void @@ -1164,9 +1228,9 @@ e_tree_node_set_expanded (ETree *et, ETreePath path, gboolean expanded) g_return_if_fail (et != NULL); g_return_if_fail (E_IS_TREE(et)); - path = e_tree_sorted_model_to_view_path(et->sorted, path); + path = e_tree_sorted_model_to_view_path(et->priv->sorted, path); - e_tree_table_adapter_node_set_expanded (et->etta, path, expanded); + e_tree_table_adapter_node_set_expanded (et->priv->etta, path, expanded); } void @@ -1175,9 +1239,9 @@ e_tree_node_set_expanded_recurse (ETree *et, ETreePath path, gboolean expanded) g_return_if_fail (et != NULL); g_return_if_fail (E_IS_TREE(et)); - path = e_tree_sorted_model_to_view_path(et->sorted, path); + path = e_tree_sorted_model_to_view_path(et->priv->sorted, path); - e_tree_table_adapter_node_set_expanded_recurse (et->etta, path, expanded); + e_tree_table_adapter_node_set_expanded_recurse (et->priv->etta, path, expanded); } void @@ -1186,7 +1250,7 @@ e_tree_root_node_set_visible (ETree *et, gboolean visible) g_return_if_fail (et != NULL); g_return_if_fail (E_IS_TREE(et)); - e_tree_table_adapter_root_node_set_visible (et->etta, visible); + e_tree_table_adapter_root_node_set_visible (et->priv->etta, visible); } ETreePath @@ -1194,8 +1258,8 @@ e_tree_node_at_row (ETree *et, int row) { ETreePath path; - path = e_tree_table_adapter_node_at_row (et->etta, row); - path = e_tree_sorted_view_to_model_path(et->sorted, path); + path = e_tree_table_adapter_node_at_row (et->priv->etta, row); + path = e_tree_sorted_view_to_model_path(et->priv->sorted, path); return path; } @@ -1203,14 +1267,14 @@ e_tree_node_at_row (ETree *et, int row) int e_tree_row_of_node (ETree *et, ETreePath path) { - path = e_tree_sorted_model_to_view_path(et->sorted, path); - return e_tree_table_adapter_row_of_node (et->etta, path); + path = e_tree_sorted_model_to_view_path(et->priv->sorted, path); + return e_tree_table_adapter_row_of_node (et->priv->etta, path); } gboolean e_tree_root_node_is_visible(ETree *et) { - return e_tree_table_adapter_root_node_is_visible (et->etta); + return e_tree_table_adapter_root_node_is_visible (et->priv->etta); } void @@ -1219,9 +1283,9 @@ e_tree_show_node (ETree *et, ETreePath path) g_return_if_fail (et != NULL); g_return_if_fail (E_IS_TREE(et)); - path = e_tree_sorted_model_to_view_path(et->sorted, path); + path = e_tree_sorted_model_to_view_path(et->priv->sorted, path); - e_tree_table_adapter_show_node (et->etta, path); + e_tree_table_adapter_show_node (et->priv->etta, path); } void @@ -1230,19 +1294,19 @@ e_tree_save_expanded_state (ETree *et, char *filename) g_return_if_fail (et != NULL); g_return_if_fail (E_IS_TREE(et)); - e_tree_table_adapter_save_expanded_state (et->etta, filename); + e_tree_table_adapter_save_expanded_state (et->priv->etta, filename); } void e_tree_load_expanded_state (ETree *et, char *filename) { - e_tree_table_adapter_load_expanded_state (et->etta, filename); + e_tree_table_adapter_load_expanded_state (et->priv->etta, filename); } gint e_tree_row_count (ETree *et) { - return e_table_model_row_count (E_TABLE_MODEL(et->etta)); + return e_table_model_row_count (E_TABLE_MODEL(et->priv->etta)); } struct _ETreeDragSourceSite @@ -1326,8 +1390,8 @@ e_tree_drag_get_data (ETree *tree, g_return_if_fail(tree != NULL); g_return_if_fail(E_IS_TREE(tree)); - path = e_tree_table_adapter_node_at_row(tree->etta, row); - path = e_tree_sorted_view_to_model_path(tree->sorted, path); + path = e_tree_table_adapter_node_at_row(tree->priv->etta, row); + path = e_tree_sorted_view_to_model_path(tree->priv->sorted, path); gtk_drag_get_data(GTK_WIDGET(tree), context, @@ -1419,8 +1483,8 @@ e_tree_drag_source_set (ETree *tree, g_return_if_fail(tree != NULL); g_return_if_fail(E_IS_TREE(tree)); - canvas = GTK_WIDGET(tree->table_canvas); - site = tree->site; + canvas = GTK_WIDGET(tree->priv->table_canvas); + site = tree->priv->site; gtk_widget_add_events (canvas, gtk_widget_get_events (canvas) | @@ -1433,16 +1497,16 @@ e_tree_drag_source_set (ETree *tree, } else { site = g_new0 (ETreeDragSourceSite, 1); - tree->drag_source_button_press_event_id = + tree->priv->drag_source_button_press_event_id = gtk_signal_connect (GTK_OBJECT (canvas), "button_press_event", GTK_SIGNAL_FUNC (e_tree_drag_source_event_cb), tree); - tree->drag_source_motion_notify_event_id = + tree->priv->drag_source_motion_notify_event_id = gtk_signal_connect (GTK_OBJECT (canvas), "motion_notify_event", GTK_SIGNAL_FUNC (e_tree_drag_source_event_cb), tree); - tree->site = site; + tree->priv->site = site; } site->start_button_mask = start_button_mask; @@ -1463,17 +1527,17 @@ e_tree_drag_source_unset (ETree *tree) g_return_if_fail (tree != NULL); g_return_if_fail (E_IS_TREE(tree)); - site = tree->site; + site = tree->priv->site; if (site) { gtk_signal_disconnect ( - GTK_OBJECT (tree->table_canvas), - tree->drag_source_button_press_event_id); + GTK_OBJECT (tree->priv->table_canvas), + tree->priv->drag_source_button_press_event_id); gtk_signal_disconnect ( - GTK_OBJECT (tree->table_canvas), - tree->drag_source_motion_notify_event_id); + GTK_OBJECT (tree->priv->table_canvas), + tree->priv->drag_source_motion_notify_event_id); g_free (site); - tree->site = NULL; + tree->priv->site = NULL; } } @@ -1494,12 +1558,12 @@ e_tree_drag_begin (ETree *tree, g_return_val_if_fail (tree != NULL, NULL); g_return_val_if_fail (E_IS_TREE(tree), NULL); - path = e_tree_table_adapter_node_at_row(tree->etta, row); - path = e_tree_sorted_view_to_model_path(tree->sorted, path); + path = e_tree_table_adapter_node_at_row(tree->priv->etta, row); + path = e_tree_sorted_view_to_model_path(tree->priv->sorted, path); - tree->drag_row = row; - tree->drag_path = path; - tree->drag_col = col; + tree->priv->drag_row = row; + tree->priv->drag_path = path; + tree->priv->drag_col = col; return gtk_drag_begin(GTK_WIDGET(tree), targets, @@ -1532,9 +1596,9 @@ e_tree_get_cell_at (ETree *tree, /* FIXME it would be nice if it could handle a NULL row_return or * col_return gracefully. */ - x += GTK_LAYOUT(tree->table_canvas)->hadjustment->value; - y += GTK_LAYOUT(tree->table_canvas)->vadjustment->value; - e_table_item_compute_location(E_TABLE_ITEM(tree->item), &x, &y, row_return, col_return); + x += GTK_LAYOUT(tree->priv->table_canvas)->hadjustment->value; + y += GTK_LAYOUT(tree->priv->table_canvas)->vadjustment->value; + e_table_item_compute_location(E_TABLE_ITEM(tree->priv->item), &x, &y, row_return, col_return); } static void @@ -1544,9 +1608,9 @@ et_drag_begin (GtkWidget *widget, { gtk_signal_emit (GTK_OBJECT (et), et_signals [TREE_DRAG_BEGIN], - et->drag_row, - et->drag_path, - et->drag_col, + et->priv->drag_row, + et->priv->drag_path, + et->priv->drag_col, context); } @@ -1557,9 +1621,9 @@ et_drag_end (GtkWidget *widget, { gtk_signal_emit (GTK_OBJECT (et), et_signals [TREE_DRAG_END], - et->drag_row, - et->drag_path, - et->drag_col, + et->priv->drag_row, + et->priv->drag_path, + et->priv->drag_col, context); } @@ -1573,9 +1637,9 @@ et_drag_data_get(GtkWidget *widget, { gtk_signal_emit (GTK_OBJECT (et), et_signals [TREE_DRAG_DATA_GET], - et->drag_row, - et->drag_path, - et->drag_col, + et->priv->drag_row, + et->priv->drag_path, + et->priv->drag_col, context, selection_data, info, @@ -1589,9 +1653,9 @@ et_drag_data_delete(GtkWidget *widget, { gtk_signal_emit (GTK_OBJECT (et), et_signals [TREE_DRAG_DATA_DELETE], - et->drag_row, - et->drag_path, - et->drag_col, + et->priv->drag_row, + et->priv->drag_path, + et->priv->drag_col, context); } @@ -1603,13 +1667,13 @@ et_drag_leave(GtkWidget *widget, { gtk_signal_emit (GTK_OBJECT (et), et_signals [TREE_DRAG_LEAVE], - et->drop_row, - et->drop_path, - et->drop_col, + et->priv->drop_row, + et->priv->drop_path, + et->priv->drop_col, context, time); - et->drop_row = -1; - et->drop_col = -1; + et->priv->drop_row = -1; + et->priv->drop_col = -1; } static gboolean @@ -1628,29 +1692,29 @@ et_drag_motion(GtkWidget *widget, y, &row, &col); - if (et->drop_row >= 0 && et->drop_col >= 0 && - row != et->drop_row && col != et->drop_row) { + if (et->priv->drop_row >= 0 && et->priv->drop_col >= 0 && + row != et->priv->drop_row && col != et->priv->drop_row) { gtk_signal_emit (GTK_OBJECT (et), et_signals [TREE_DRAG_LEAVE], - et->drop_row, - et->drop_path, - et->drop_col, + et->priv->drop_row, + et->priv->drop_path, + et->priv->drop_col, context, time); } - path = e_tree_table_adapter_node_at_row(et->etta, row); - path = e_tree_sorted_view_to_model_path(et->sorted, path); + path = e_tree_table_adapter_node_at_row(et->priv->etta, row); + path = e_tree_sorted_view_to_model_path(et->priv->sorted, path); - et->drop_row = row; - et->drop_path = path; - et->drop_col = col; + et->priv->drop_row = row; + et->priv->drop_path = path; + et->priv->drop_col = col; if (row >= 0 && col >= 0) gtk_signal_emit (GTK_OBJECT (et), et_signals [TREE_DRAG_MOTION], - et->drop_row, - et->drop_path, - et->drop_col, + et->priv->drop_row, + et->priv->drop_path, + et->priv->drop_col, context, x, y, @@ -1675,16 +1739,16 @@ et_drag_drop(GtkWidget *widget, y, &row, &col); - path = e_tree_table_adapter_node_at_row(et->etta, row); - path = e_tree_sorted_view_to_model_path(et->sorted, path); + path = e_tree_table_adapter_node_at_row(et->priv->etta, row); + path = e_tree_sorted_view_to_model_path(et->priv->sorted, path); - if (et->drop_row >= 0 && et->drop_col >= 0 && - row != et->drop_row && col != et->drop_row) { + if (et->priv->drop_row >= 0 && et->priv->drop_col >= 0 && + row != et->priv->drop_row && col != et->priv->drop_row) { gtk_signal_emit (GTK_OBJECT (et), et_signals [TREE_DRAG_LEAVE], - et->drop_row, - et->drop_path, - et->drop_col, + et->priv->drop_row, + et->priv->drop_path, + et->priv->drop_col, context, time); if (row >= 0 && col >= 0) @@ -1699,23 +1763,23 @@ et_drag_drop(GtkWidget *widget, time, &ret_val); } - et->drop_row = row; - et->drop_path = path; - et->drop_col = col; + et->priv->drop_row = row; + et->priv->drop_path = path; + et->priv->drop_col = col; if (row >= 0 && col >= 0) gtk_signal_emit (GTK_OBJECT (et), et_signals [TREE_DRAG_DROP], - et->drop_row, - et->drop_path, - et->drop_col, + et->priv->drop_row, + et->priv->drop_path, + et->priv->drop_col, context, x, y, time, &ret_val); - et->drop_row = -1; - et->drop_path = NULL; - et->drop_col = -1; + et->priv->drop_row = -1; + et->priv->drop_path = NULL; + et->priv->drop_col = -1; return ret_val; } @@ -1736,8 +1800,8 @@ et_drag_data_received(GtkWidget *widget, y, &row, &col); - path = e_tree_table_adapter_node_at_row(et->etta, row); - path = e_tree_sorted_view_to_model_path(et->sorted, path); + path = e_tree_table_adapter_node_at_row(et->priv->etta, row); + path = e_tree_sorted_view_to_model_path(et->priv->sorted, path); gtk_signal_emit (GTK_OBJECT (et), et_signals [TREE_DRAG_DATA_RECEIVED], row, @@ -1757,7 +1821,7 @@ e_tree_drag_source_event_cb (GtkWidget *widget, ETree *tree) { ETreeDragSourceSite *site; - site = tree->site; + site = tree->priv->site; switch (event->type) { case GDK_BUTTON_PRESS: |