- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- sheet->rows_resizable = resizable;
-}
-
-gboolean
-gtk_sheet_rows_resizable (GtkSheet *sheet)
-{
- g_return_val_if_fail (sheet != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), FALSE);
-
- return sheet->rows_resizable;
-}
-
-
-void
-gtk_sheet_select_row (GtkSheet * sheet,
- gint row)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- if (row < 0 || row >= yyy_row_count (sheet))
- return;
-
- if (sheet->state != GTK_SHEET_NORMAL)
- gtk_sheet_real_unselect_range (sheet, NULL);
- else
- {
- gboolean veto = TRUE;
- veto = gtk_sheet_deactivate_cell (sheet);
- if (!veto) return;
- }
-
- sheet->state = GTK_SHEET_ROW_SELECTED;
- sheet->range.row0 = row;
- sheet->range.col0 = 0;
- sheet->range.rowi = row;
- sheet->range.coli = xxx_column_count (sheet) - 1;
- sheet->active_cell.row = row;
- sheet->active_cell.col = 0;
-
- gtk_signal_emit (GTK_OBJECT (sheet), sheet_signals[SELECT_ROW], row);
- gtk_sheet_real_select_range (sheet, NULL);
-}
-
-
-void
-gtk_sheet_select_column (GtkSheet * sheet, gint column)
-{
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- if (column < 0 || column >= xxx_column_count (sheet))
- return;
-
- if (sheet->state != GTK_SHEET_NORMAL)
- gtk_sheet_real_unselect_range (sheet, NULL);
- else
- {
- gboolean veto = TRUE;
- veto = gtk_sheet_deactivate_cell (sheet);
- if (!veto) return;
- }
-
- sheet->state = GTK_SHEET_COLUMN_SELECTED;
- sheet->range.row0 = 0;
- sheet->range.col0 = column;
- sheet->range.rowi = yyy_row_count (sheet) - 1;
- sheet->range.coli = column;
- sheet->active_cell.row = 0;
- sheet->active_cell.col = column;
-
- gtk_signal_emit (GTK_OBJECT (sheet), sheet_signals[SELECT_COLUMN], column);
- gtk_sheet_real_select_range (sheet, NULL);
-}
-
-void
-gtk_sheet_clip_range (GtkSheet *sheet, const GtkSheetRange *range)
-{
-
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- if (GTK_SHEET_IN_CLIP (sheet)) return;
-
- GTK_SHEET_SET_FLAGS (sheet, GTK_SHEET_IN_CLIP);
-
- if (range == NULL)
- sheet->clip_range = sheet->range;
- else
- sheet->clip_range=*range;
-
- sheet->interval = 0;
- sheet->clip_timer = gtk_timeout_add (TIMEOUT_FLASH, gtk_sheet_flash, sheet);
-
- gtk_signal_emit (GTK_OBJECT (sheet), sheet_signals[CLIP_RANGE],
- &sheet->clip_range);
-
-}
-
-void
-gtk_sheet_unclip_range (GtkSheet *sheet)
-{
-
- g_return_if_fail (sheet != NULL);
- g_return_if_fail (GTK_IS_SHEET (sheet));
-
- if (!GTK_SHEET_IN_CLIP (sheet)) return;
-
- GTK_SHEET_UNSET_FLAGS (sheet, GTK_SHEET_IN_CLIP);
-
- gtk_timeout_remove (sheet->clip_timer);
- gtk_sheet_range_draw (sheet, &sheet->clip_range);
-
- if (gtk_sheet_range_isvisible (sheet, sheet->range))
- gtk_sheet_range_draw (sheet, &sheet->range);
-}
-
-gboolean
-gtk_sheet_in_clip (GtkSheet *sheet)
-{
- g_return_val_if_fail (sheet != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), FALSE);
-
- return GTK_SHEET_IN_CLIP (sheet);
-}
-
-static gint
-gtk_sheet_flash (gpointer data)
-{
- GtkSheet *sheet;
- gint x,y,width,height;
- GdkRectangle clip_area;
-
- sheet = GTK_SHEET (data);
-
- if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet))) return TRUE;
- if (!GTK_WIDGET_DRAWABLE (GTK_WIDGET (sheet))) return TRUE;
- if (!gtk_sheet_range_isvisible (sheet, sheet->clip_range)) return TRUE;
- if (GTK_SHEET_IN_XDRAG (sheet)) return TRUE;
- if (GTK_SHEET_IN_YDRAG (sheet)) return TRUE;
-
- GDK_THREADS_ENTER ();
-
- x = COLUMN_LEFT_XPIXEL (sheet,sheet->clip_range.col0)+1;
- y = ROW_TOP_YPIXEL (sheet,sheet->clip_range.row0)+1;
- width = COLUMN_LEFT_XPIXEL (sheet,sheet->clip_range.coli)- x+
- xxx_column_width (sheet, sheet->clip_range.coli) - 1;
- height = ROW_TOP_YPIXEL (sheet,sheet->clip_range.rowi)- y+
- yyy_row_height (sheet, sheet->clip_range.rowi)- 1;
-
- clip_area.x = COLUMN_LEFT_XPIXEL (sheet, MIN_VISIBLE_COLUMN (sheet));
- clip_area.y = ROW_TOP_YPIXEL (sheet, MIN_VISIBLE_ROW (sheet));
- clip_area.width = sheet->sheet_window_width;
- clip_area.height = sheet->sheet_window_height;
-
- if (x < 0)
- {
- width += x + 1;
- x =- 1;
- }
- if (width > clip_area.width) width = clip_area.width + 10;
- if (y < 0)
- {
- height += y + 1;
- y =- 1;
- }
- if (height > clip_area.height) height = clip_area.height + 10;