static void gtk_sheet_update_primary_selection (GtkSheet *sheet);
static void draw_column_title_buttons_range (GtkSheet *sheet, gint first, gint n);
static void draw_row_title_buttons_range (GtkSheet *sheet, gint first, gint n);
+static void redraw_range (GtkSheet *sheet, GtkSheetRange *range);
static void set_row_height (GtkSheet *sheet,
GtkCallback callback,
gpointer callback_data);
-static void gtk_sheet_set_scroll_adjustments (GtkSheet *sheet,
+static gboolean gtk_sheet_set_scroll_adjustments (GtkSheet *sheet,
GtkAdjustment *hadjustment,
GtkAdjustment *vadjustment);
PROP_MODEL
};
+static void
+resize_column (GtkSheet *sheet, gint unit, glong size)
+{
+ GtkSheetRange range;
+ range.col0 = unit;
+ range.coli = max_visible_column (sheet);
+ range.row0 = min_visible_row (sheet);
+ range.rowi = max_visible_row (sheet);
+
+ redraw_range (sheet, &range);
+
+ draw_column_title_buttons_range (sheet, range.col0, range.coli);
+}
+
+
static void
gtk_sheet_set_horizontal_axis (GtkSheet *sheet, PsppireAxis *a)
{
g_object_unref (sheet->haxis);
sheet->haxis = a;
+ g_signal_connect_swapped (a, "resize-unit", G_CALLBACK (resize_column), sheet);
if ( sheet->haxis )
g_object_ref (sheet->haxis);
}
+static void
+resize_row (GtkSheet *sheet, gint unit, glong size)
+{
+ GtkSheetRange range;
+ range.col0 = min_visible_column (sheet);
+ range.coli = max_visible_column (sheet);
+ range.row0 = unit;
+ range.rowi = max_visible_row (sheet);
+
+ redraw_range (sheet, &range);
+
+ draw_row_title_buttons_range (sheet, range.row0, range.rowi);
+}
+
static void
gtk_sheet_set_vertical_axis (GtkSheet *sheet, PsppireAxis *a)
{
sheet->vaxis = a;
+ g_signal_connect_swapped (a, "resize-unit", G_CALLBACK (resize_row), sheet);
+
if ( sheet->vaxis )
g_object_ref (sheet->vaxis);
}
sheet->range.rowi = row;
sheet->range.coli = psppire_axis_unit_count (sheet->haxis) - 1;
sheet->active_cell.row = row;
- sheet->active_cell.col = 0;
g_signal_emit (sheet, sheet_signals[SELECT_ROW], 0, row);
gtk_sheet_real_select_range (sheet, NULL);
sheet->range.col0 = column;
sheet->range.rowi = psppire_axis_unit_count (sheet->vaxis) - 1;
sheet->range.coli = column;
- sheet->active_cell.row = 0;
sheet->active_cell.col = column;
g_signal_emit (sheet, sheet_signals[SELECT_COLUMN], 0, column);
}
-static void
+static gboolean
gtk_sheet_set_scroll_adjustments (GtkSheet *sheet,
GtkAdjustment *hadjustment,
GtkAdjustment *vadjustment)
if (sheet->vadjustment)
g_object_unref (sheet->vadjustment);
sheet->vadjustment = vadjustment;
- g_object_ref (vadjustment);
- g_signal_connect (sheet->vadjustment, "value_changed",
- G_CALLBACK (vadjustment_value_changed),
- sheet);
+ if ( vadjustment)
+ {
+ g_object_ref (vadjustment);
+
+ g_signal_connect (sheet->vadjustment, "value_changed",
+ G_CALLBACK (vadjustment_value_changed),
+ sheet);
+ }
}
if ( sheet->hadjustment != hadjustment )
{
if (sheet->hadjustment)
g_object_unref (sheet->hadjustment);
+
sheet->hadjustment = hadjustment;
- g_object_ref (hadjustment);
- g_signal_connect (sheet->hadjustment, "value_changed",
- G_CALLBACK (hadjustment_value_changed),
- sheet);
+ if ( hadjustment)
+ {
+ g_object_ref (hadjustment);
+
+ g_signal_connect (sheet->hadjustment, "value_changed",
+ G_CALLBACK (hadjustment_value_changed),
+ sheet);
+ }
}
+ return TRUE;
}
static void
sheet = GTK_SHEET (widget);
- GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
-
colormap = gtk_widget_get_colormap (widget);
display = gtk_widget_get_display (widget);
draw_column_title_buttons (sheet);
gtk_sheet_update_primary_selection (sheet);
+
+
+ GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
}
static void
col >= psppire_axis_unit_count (sheet->haxis))
return;
- sheet->active_cell.row = row;
- sheet->active_cell.col = col;
-
if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)))
return;