GValue *value,
GParamSpec *pspec);
-/* gtkobject signals */
-static void pspp_sheet_view_destroy (GtkObject *object);
+static void pspp_sheet_view_dispose (GObject *object);
/* gtkwidget signals */
static void pspp_sheet_view_realize (GtkWidget *widget);
pspp_sheet_view_class_init (PsppSheetViewClass *class)
{
GObjectClass *o_class;
- GtkObjectClass *object_class;
GtkWidgetClass *widget_class;
GtkContainerClass *container_class;
GtkBindingSet *binding_set[2];
edit_bindings = binding_set[1];
o_class = (GObjectClass *) class;
- object_class = (GtkObjectClass *) class;
widget_class = (GtkWidgetClass *) class;
container_class = (GtkContainerClass *) class;
o_class->set_property = pspp_sheet_view_set_property;
o_class->get_property = pspp_sheet_view_get_property;
o_class->finalize = pspp_sheet_view_finalize;
-
- /* GtkObject signals */
- object_class->destroy = pspp_sheet_view_destroy;
+ o_class->dispose = pspp_sheet_view_dispose;
/* GtkWidget signals */
widget_class->map = pspp_sheet_view_map;
tree_view_signals[MOVE_CURSOR] =
g_signal_new ("move-cursor",
- G_TYPE_FROM_CLASS (object_class),
+ G_TYPE_FROM_CLASS (o_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (PsppSheetViewClass, move_cursor),
NULL, NULL,
tree_view_signals[SELECT_ALL] =
g_signal_new ("select-all",
- G_TYPE_FROM_CLASS (object_class),
+ G_TYPE_FROM_CLASS (o_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (PsppSheetViewClass, select_all),
NULL, NULL,
tree_view_signals[UNSELECT_ALL] =
g_signal_new ("unselect-all",
- G_TYPE_FROM_CLASS (object_class),
+ G_TYPE_FROM_CLASS (o_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (PsppSheetViewClass, unselect_all),
NULL, NULL,
tree_view_signals[SELECT_CURSOR_ROW] =
g_signal_new ("select-cursor-row",
- G_TYPE_FROM_CLASS (object_class),
+ G_TYPE_FROM_CLASS (o_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (PsppSheetViewClass, select_cursor_row),
NULL, NULL,
tree_view_signals[TOGGLE_CURSOR_ROW] =
g_signal_new ("toggle-cursor-row",
- G_TYPE_FROM_CLASS (object_class),
+ G_TYPE_FROM_CLASS (o_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (PsppSheetViewClass, toggle_cursor_row),
NULL, NULL,
tree_view_signals[START_INTERACTIVE_SEARCH] =
g_signal_new ("start-interactive-search",
- G_TYPE_FROM_CLASS (object_class),
+ G_TYPE_FROM_CLASS (o_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (PsppSheetViewClass, start_interactive_search),
NULL, NULL,
tree_view->priv->anchor_column = NULL;
tree_view->priv->button_style = NULL;
+
+ tree_view->dispose_has_run = FALSE;
}
\f
}
static void
-pspp_sheet_view_finalize (GObject *object)
+pspp_sheet_view_dispose (GObject *object)
{
- G_OBJECT_CLASS (pspp_sheet_view_parent_class)->finalize (object);
+ PsppSheetView *tree_view = PSPP_SHEET_VIEW (object);
+
+ if (tree_view->dispose_has_run)
+ return;
+
+ tree_view->dispose_has_run = TRUE;
+
+ if (tree_view->priv->selection != NULL)
+ {
+ _pspp_sheet_selection_set_tree_view (tree_view->priv->selection, NULL);
+ g_object_unref (tree_view->priv->selection);
+ tree_view->priv->selection = NULL;
+ }
+
+ if (tree_view->priv->hadjustment)
+ {
+ g_object_unref (tree_view->priv->hadjustment);
+ tree_view->priv->hadjustment = NULL;
+ }
+ if (tree_view->priv->vadjustment)
+ {
+ g_object_unref (tree_view->priv->vadjustment);
+ tree_view->priv->vadjustment = NULL;
+ }
+
+ if (tree_view->priv->button_style)
+ {
+ g_object_unref (tree_view->priv->button_style);
+ tree_view->priv->button_style = NULL;
+ }
+
+
+ G_OBJECT_CLASS (pspp_sheet_view_parent_class)->dispose (object);
}
\f
pspp_sheet_view_append_column (PSPP_SHEET_VIEW (tree_view), PSPP_SHEET_VIEW_COLUMN (child));
}
-/* GtkObject Methods
- */
-
static void
-pspp_sheet_view_destroy (GtkObject *object)
+pspp_sheet_view_finalize (GObject *object)
{
PsppSheetView *tree_view = PSPP_SHEET_VIEW (object);
- GList *list;
pspp_sheet_view_stop_editing (tree_view, TRUE);
tree_view->priv->selected = NULL;
}
- if (tree_view->priv->columns != NULL)
- {
- list = tree_view->priv->columns;
- while (list)
- {
- PsppSheetViewColumn *column;
- column = PSPP_SHEET_VIEW_COLUMN (list->data);
- list = list->next;
- pspp_sheet_view_remove_column (tree_view, column);
- }
- tree_view->priv->columns = NULL;
- }
tree_view->priv->prelight_node = -1;
- if (tree_view->priv->selection != NULL)
- {
- _pspp_sheet_selection_set_tree_view (tree_view->priv->selection, NULL);
- g_object_unref (tree_view->priv->selection);
- tree_view->priv->selection = NULL;
- }
if (tree_view->priv->scroll_to_path != NULL)
{
pspp_sheet_view_set_model (tree_view, NULL);
- if (tree_view->priv->hadjustment)
- {
- g_object_unref (tree_view->priv->hadjustment);
- tree_view->priv->hadjustment = NULL;
- }
- if (tree_view->priv->vadjustment)
- {
- g_object_unref (tree_view->priv->vadjustment);
- tree_view->priv->vadjustment = NULL;
- }
- if (tree_view->priv->button_style)
- {
- g_object_unref (tree_view->priv->button_style);
- tree_view->priv->button_style = NULL;
- }
-
- GTK_OBJECT_CLASS (pspp_sheet_view_parent_class)->destroy (object);
+ G_OBJECT_CLASS (pspp_sheet_view_parent_class)->finalize (object);
}
\f
PsppSheetViewPrivate *priv = tree_view->priv;
GList *list;
+ GTK_WIDGET_CLASS (pspp_sheet_view_parent_class)->unrealize (widget);
+
if (priv->scroll_timeout != 0)
{
g_source_remove (priv->scroll_timeout);
for (x = 0 ; x < 5 ; ++x)
g_object_unref (priv->grid_line_gc[x]);
- GTK_WIDGET_CLASS (pspp_sheet_view_parent_class)->unrealize (widget);
+ if (tree_view->priv->columns != NULL)
+ {
+ list = tree_view->priv->columns;
+ while (list)
+ {
+ PsppSheetViewColumn *column;
+ column = PSPP_SHEET_VIEW_COLUMN (list->data);
+ list = list->next;
+ pspp_sheet_view_remove_column (tree_view, column);
+ }
+ tree_view->priv->columns = NULL;
+ }
}
/* GtkWidget::size_request helper */
PsppSheetViewColumn *column = NULL;
GtkCellRenderer *focus_cell = NULL;
gboolean row_double_click = FALSE;
- gboolean node_selected;
/* Empty tree? */
if (tree_view->priv->row_count == 0)
return TRUE;
/* select */
- node_selected = pspp_sheet_view_node_is_selected (tree_view, node);
pre_val = tree_view->priv->vadjustment->value;
path = _pspp_sheet_view_find_path (tree_view, node);
tree_view->priv->press_start_node = node;
if (tree_view->priv->rubber_banding_enable
- //&& !node_selected
&& (tree_view->priv->selection->type == PSPP_SHEET_SELECTION_MULTIPLE ||
tree_view->priv->selection->type == PSPP_SHEET_SELECTION_RECTANGLE))
{
gint new_y;
gint y_offset, cell_offset;
gint max_height;
- gint depth;
GdkRectangle background_area;
GdkRectangle cell_area;
guint flags;
gtk_tree_model_get_iter (tree_view->priv->model,
&iter,
path);
- depth = gtk_tree_path_get_depth (path);
gtk_tree_path_free (path);
cursor_path = NULL;
gint horizontal_separator;
gint vertical_separator;
gint focus_line_width;
- gboolean retval = FALSE;
gboolean draw_vgrid_lines, draw_hgrid_lines;
gint focus_pad;
gint grid_line_width;
}
if (tmp_width > column->requested_width)
- {
- retval = TRUE;
- column->requested_width = tmp_width;
- }
+ column->requested_width = tmp_width;
}
if (draw_hgrid_lines)
validate_visible_area (tree_view);
tree_view->priv->presize_handler_timer = 0;
+ if (! gtk_widget_get_realized (GTK_WIDGET (tree_view)))
+ return FALSE;
+
gtk_widget_size_request (GTK_WIDGET (tree_view), &requisition);
tree_view->priv->hadjustment->upper = MAX (tree_view->priv->hadjustment->upper, (gfloat)requisition.width);
if (tree_view->priv->model)
{
gint i;
- GtkTreeModelFlags flags;
if (tree_view->priv->search_column == -1)
{
G_CALLBACK (pspp_sheet_view_rows_reordered),
tree_view);
- flags = gtk_tree_model_get_flags (tree_view->priv->model);
-
tree_view->priv->row_count = gtk_tree_model_iter_n_children (tree_view->priv->model, NULL);
/* FIXME: do I need to do this? pspp_sheet_view_create_buttons (tree_view); */
}
if (tree_view->priv->n_columns == 0 &&
- pspp_sheet_view_get_headers_visible (tree_view))
+ pspp_sheet_view_get_headers_visible (tree_view) &&
+ tree_view->priv->header_window)
gdk_window_hide (tree_view->priv->header_window);
gtk_widget_queue_resize (GTK_WIDGET (tree_view));
GdkRectangle background_area;
GdkRectangle expose_area;
GtkWidget *widget;
- gint depth;
/* start drawing inside the black outline */
gint x = 1, y = 1;
GdkDrawable *drawable;
if (!gtk_widget_get_realized (widget))
return NULL;
- depth = gtk_tree_path_get_depth (path);
-
_pspp_sheet_view_find_node (tree_view,
path,
&node);
PsppSheetViewGridLines grid_lines)
{
PsppSheetViewPrivate *priv;
- GtkWidget *widget;
PsppSheetViewGridLines old_grid_lines;
g_return_if_fail (PSPP_IS_SHEET_VIEW (tree_view));
priv = tree_view->priv;
- widget = GTK_WIDGET (tree_view);
old_grid_lines = priv->grid_lines;
priv->grid_lines = grid_lines;
PsppSheetViewSpecialCells special_cells)
{
PsppSheetViewPrivate *priv;
- GtkWidget *widget;
g_return_if_fail (PSPP_IS_SHEET_VIEW (tree_view));
priv = tree_view->priv;
- widget = GTK_WIDGET (tree_view);
if (priv->special_cells != special_cells)
{