Redraw selection when reducing its area.
[pspp-builds.git] / lib / gtk-contrib / psppire-sheet.c
index 2dd31f767b82c542424247679b0ce49d551c78c8..7e36381e0ba1ab9f64774364f795016a5a174233 100644 (file)
@@ -2302,7 +2302,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 &&
@@ -2578,7 +2578,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 +2824,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;
 }
 
 
@@ -3119,7 +3119,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 +3235,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 +3689,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