X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fgtk-contrib%2Fpsppire-sheet.c;h=fdf28b123f43e4097c5e0c4465355cf7e92806a9;hb=163b1639eab9b48eab64752205d75f951547b5c7;hp=2dd31f767b82c542424247679b0ce49d551c78c8;hpb=da8273b1311e75a7d2fb3a2ce0baa1ff4c07775f;p=pspp-builds.git diff --git a/lib/gtk-contrib/psppire-sheet.c b/lib/gtk-contrib/psppire-sheet.c index 2dd31f76..fdf28b12 100644 --- a/lib/gtk-contrib/psppire-sheet.c +++ b/lib/gtk-contrib/psppire-sheet.c @@ -123,9 +123,6 @@ static void set_row_height (PsppireSheet *sheet, static void destroy_hover_window (PsppireSheetHoverTitle *); static PsppireSheetHoverTitle *create_hover_window (void); -static GtkStateType psppire_sheet_cell_get_state (PsppireSheet *sheet, gint row, gint col); - - static inline void dispose_string (const PsppireSheet *sheet, gchar *text) { @@ -2302,7 +2299,7 @@ draw_sheet_region (PsppireSheet *sheet, GdkRegion *region) psppire_sheet_cell_draw (sheet, i, j); } - if (sheet->select_status == GTK_STATE_NORMAL && + if (sheet->select_status == PSPPIRE_SHEET_NORMAL && sheet->active_cell.row >= drawing_range.row0 && sheet->active_cell.row <= drawing_range.rowi && sheet->active_cell.col >= drawing_range.col0 && @@ -2411,40 +2408,6 @@ psppire_sheet_cell_get_text (const PsppireSheet *sheet, gint row, gint col) } -static GtkStateType -psppire_sheet_cell_get_state (PsppireSheet *sheet, gint row, gint col) -{ - PsppireSheetRange *range; - - g_return_val_if_fail (sheet != NULL, 0); - g_return_val_if_fail (PSPPIRE_IS_SHEET (sheet), 0); - if (col >= psppire_axis_unit_count (sheet->haxis) || row >= psppire_axis_unit_count (sheet->vaxis)) return 0; - if (col < 0 || row < 0) return 0; - - range = &sheet->range; - - switch (sheet->select_status) - { - case PSPPIRE_SHEET_NORMAL: - return GTK_STATE_NORMAL; - break; - case PSPPIRE_SHEET_ROW_SELECTED: - if (row >= range->row0 && row <= range->rowi) - return GTK_STATE_SELECTED; - break; - case PSPPIRE_SHEET_COLUMN_SELECTED: - if (col >= range->col0 && col <= range->coli) - return GTK_STATE_SELECTED; - break; - case PSPPIRE_SHEET_RANGE_SELECTED: - if (row >= range->row0 && row <= range->rowi && \ - col >= range->col0 && col <= range->coli) - return GTK_STATE_SELECTED; - break; - } - return GTK_STATE_NORMAL; -} - /* Convert X, Y (in pixels) to *ROW, *COLUMN If the function returns FALSE, then the results will be unreliable. */ @@ -2578,7 +2541,7 @@ entry_load_text (PsppireSheet *sheet) PsppireSheetCellAttr attributes; if (!GTK_WIDGET_VISIBLE (sheet->entry_widget)) return; - if (sheet->select_status != GTK_STATE_NORMAL) return; + if (sheet->select_status != PSPPIRE_SHEET_NORMAL) return; row = sheet->active_cell.row; col = sheet->active_cell.col; @@ -2824,7 +2787,7 @@ psppire_sheet_unselect_range (PsppireSheet *sheet) return; psppire_sheet_real_unselect_range (sheet, NULL); - sheet->select_status = GTK_STATE_NORMAL; + sheet->select_status = PSPPIRE_SHEET_NORMAL; } @@ -3056,7 +3019,13 @@ psppire_sheet_button_press (GtkWidget *widget, GdkEventButton *event) } else { + GdkRectangle area; sheet->select_status = PSPPIRE_SHEET_NORMAL; + + rectangle_from_range (sheet, &sheet->range, &area); + area.x++; + area.y++; + gdk_window_invalidate_rect (sheet->sheet_window, &area, FALSE); } } } @@ -3119,7 +3088,7 @@ psppire_sheet_click_cell (PsppireSheet *sheet, gint row, gint column) if (forbid_move) { - if (sheet->select_status == GTK_STATE_NORMAL) + if (sheet->select_status == PSPPIRE_SHEET_NORMAL) return FALSE; row = sheet->active_cell.row; @@ -3235,7 +3204,7 @@ psppire_sheet_button_release (GtkWidget *widget, sheet->range = sheet->drag_range; sheet->drag_range = old_range; - if (sheet->select_status == GTK_STATE_NORMAL) + if (sheet->select_status == PSPPIRE_SHEET_NORMAL) sheet->select_status = PSPPIRE_SHEET_RANGE_SELECTED; g_signal_emit (sheet, sheet_signals[RESIZE_RANGE], 0, @@ -3689,11 +3658,21 @@ psppire_sheet_motion (GtkWidget *widget, GdkEventMotion *event) if (PSPPIRE_SHEET_IN_SELECTION (sheet) ) { GdkRectangle area; + + /* Redraw the old range */ + rectangle_from_range (sheet, &sheet->range, &area); + area.x++; + area.y++; + gdk_window_invalidate_rect (sheet->sheet_window, &area, FALSE); + sheet->range.rowi = row; sheet->range.coli = column; sheet->select_status = PSPPIRE_SHEET_RANGE_SELECTED; + /* Redraw the new range */ rectangle_from_range (sheet, &sheet->range, &area); + area.x++; + area.y++; gdk_window_invalidate_rect (sheet->sheet_window, &area, FALSE); } else