- scroll = MAX_VISIBLE_ROW (sheet)- MIN_VISIBLE_ROW (sheet)+1;
- case GDK_Down:
- if (extend_selection)
- {
- if (state == GTK_STATE_NORMAL)
- {
- row = sheet->active_cell.row;
- col = sheet->active_cell.col;
- gtk_sheet_click_cell (sheet, row, col, &veto);
- if (!veto) break;
- }
- if (sheet->selection_cell.row < g_sheet_row_get_row_count (sheet->row_geometry) - 1)
- {
- row = sheet->selection_cell.row + scroll;
- while (!g_sheet_row_get_visibility (sheet->row_geometry, row) && row < g_sheet_row_get_row_count (sheet->row_geometry) - 1) row++;
- row = MIN (g_sheet_row_get_row_count (sheet->row_geometry) - 1, row);
- gtk_sheet_extend_selection (sheet, row, sheet->selection_cell.col);
- }
- return TRUE;
- }
- col = sheet->active_cell.col;
- row = sheet->active_cell.row;
- if (sheet->active_cell.row < g_sheet_row_get_row_count (sheet->row_geometry) - 1)
- {
- if (state == GTK_SHEET_COLUMN_SELECTED)
- row = MIN_VISIBLE_ROW (sheet)- 1;
- if (state == GTK_SHEET_ROW_SELECTED)
- col = MIN_VISIBLE_COLUMN (sheet);
- row = row + scroll;
- while (!g_sheet_row_get_visibility (sheet->row_geometry, row) && row < g_sheet_row_get_row_count (sheet->row_geometry) - 1) row++;
- row = MIN (g_sheet_row_get_row_count (sheet->row_geometry) - 1, row);
- }
- gtk_sheet_click_cell (sheet, row, col, &veto);
- extend_selection = FALSE;
- break;
- case GDK_Right:
- if (extend_selection)
- {
- if (state == GTK_STATE_NORMAL)
- {
- row = sheet->active_cell.row;
- col = sheet->active_cell.col;
- gtk_sheet_click_cell (sheet, row, col, &veto);
- if (!veto) break;
- }
- if (sheet->selection_cell.col < g_sheet_column_get_column_count (sheet->column_geometry) - 1)
- {
- col = sheet->selection_cell.col + 1;
- while (! g_sheet_column_get_visibility (sheet->column_geometry, col) && col < g_sheet_column_get_column_count (sheet->column_geometry) - 1)
- col++;
- gtk_sheet_extend_selection (sheet, sheet->selection_cell.row, col);
- }
- return TRUE;
- }
- col = sheet->active_cell.col;
- row = sheet->active_cell.row;
- if (sheet->active_cell.col < g_sheet_column_get_column_count (sheet->column_geometry) - 1)
- {
- col ++;
- if (state == GTK_SHEET_ROW_SELECTED)
- col = MIN_VISIBLE_COLUMN (sheet)- 1;
- if (state == GTK_SHEET_COLUMN_SELECTED)
- row = MIN_VISIBLE_ROW (sheet);
- while (! g_sheet_column_get_visibility (sheet->column_geometry, col) && col < g_sheet_column_get_column_count (sheet->column_geometry) - 1) col++;
- if (strlen (gtk_entry_get_text (GTK_ENTRY (gtk_sheet_get_entry (sheet)))) == 0
- || force_move)
- {
- gtk_sheet_click_cell (sheet, row, col, &veto);
- }
- else
- return FALSE;
- }
- extend_selection = FALSE;