- if (PSPPIRE_SHEET_IN_RESIZE (sheet))
- {
- PsppireSheetRange aux;
- gint v_h, current_col, current_row, col_threshold, row_threshold;
- v_h = 1;
- if (abs (x - psppire_axis_start_pixel (sheet->haxis, sheet->drag_cell.col)) >
- abs (y - psppire_axis_start_pixel (sheet->vaxis, sheet->drag_cell.row))) v_h = 2;
-
- current_col = column_from_xpixel (sheet, x);
- current_row = row_from_ypixel (sheet, y);
- column = current_col - sheet->drag_cell.col;
- row = current_row - sheet->drag_cell.row;
-
- /*use half of column width resp. row height as threshold to
- expand selection*/
- col_threshold = psppire_axis_start_pixel (sheet->haxis, current_col) +
- psppire_axis_unit_size (sheet->haxis, current_col) / 2;
- if (column > 0)
- {
- if (x < col_threshold)
- column -= 1;
- }
- else if (column < 0)
- {
- if (x > col_threshold)
- column +=1;
- }
- row_threshold = psppire_axis_start_pixel (sheet->vaxis, current_row) +
- psppire_axis_unit_size (sheet->vaxis, current_row)/2;
- if (row > 0)
- {
- if (y < row_threshold)
- row -= 1;
- }
- else if (row < 0)
- {
- if (y > row_threshold)
- row +=1;
- }
-
- if (sheet->select_status == PSPPIRE_SHEET_COLUMN_SELECTED) row = 0;
- if (sheet->select_status == PSPPIRE_SHEET_ROW_SELECTED) column = 0;
- sheet->x_drag = x;
- sheet->y_drag = y;
- aux = sheet->range;
-
- if (v_h == 1)
- column = 0;
- else
- row = 0;
-
- if (aux.row0 + row >= 0 && aux.rowi + row < psppire_axis_unit_count (sheet->vaxis) &&
- aux.col0 + column >= 0 && aux.coli + column < psppire_axis_unit_count (sheet->haxis))
- {
- aux = sheet->drag_range;
- sheet->drag_range = sheet->range;
-
- if (row < 0) sheet->drag_range.row0 = sheet->range.row0 + row;
- if (row > 0) sheet->drag_range.rowi = sheet->range.rowi + row;
- if (column < 0) sheet->drag_range.col0 = sheet->range.col0 + column;
- if (column > 0) sheet->drag_range.coli = sheet->range.coli + column;
-
- if (aux.row0 != sheet->drag_range.row0 ||
- aux.rowi != sheet->drag_range.rowi ||
- aux.col0 != sheet->drag_range.col0 ||
- aux.coli != sheet->drag_range.coli)
- {
- draw_xor_rectangle (sheet, aux);
- draw_xor_rectangle (sheet, sheet->drag_range);
- }
- }
- return TRUE;
- }
-