Fix some runtime warnings
[pspp-builds.git] / lib / gtksheet / gtksheet.c
index 658061510a7b4757891a28c65b3239e72c0a4eda..955e77e290b399b45954de63898c072fb90701c4 100644 (file)
@@ -226,12 +226,20 @@ static gboolean
 on_column_boundary (const GtkSheet *sheet, gint x, gint *column)
 {
   gint col;
+  gint pixel;
 
   x += sheet->hadjustment->value;
 
+  if ( x < 0)
+    return FALSE;
+
   col = column_from_xpixel (sheet, x);
 
-  if ( column_from_xpixel (sheet, x - DRAG_WIDTH / 2) < col )
+  pixel = x - DRAG_WIDTH / 2;
+  if (pixel < 0)
+    pixel = 0;
+
+  if ( column_from_xpixel (sheet, pixel) < col )
     {
       *column = col - 1;
       return TRUE;
@@ -250,12 +258,20 @@ static gboolean
 on_row_boundary (const GtkSheet *sheet, gint y, gint *row)
 {
   gint r;
+  gint pixel;
 
   y += sheet->vadjustment->value;
 
+  if ( y < 0)
+    return FALSE;
+
   r = row_from_ypixel (sheet, y);
 
-  if ( row_from_ypixel (sheet, y - DRAG_WIDTH / 2) < r )
+  pixel = y - DRAG_WIDTH / 2;
+  if (pixel < 0)
+    pixel = 0;
+
+  if ( row_from_ypixel (sheet, pixel) < r )
     {
       *row = r - 1;
       return TRUE;
@@ -1541,7 +1557,6 @@ gtk_sheet_select_row (GtkSheet *sheet, gint row)
   sheet->range.rowi = row;
   sheet->range.coli = psppire_axis_unit_count (sheet->haxis) - 1;
   sheet->active_cell.row = row;
-  sheet->active_cell.col = 0;
 
   g_signal_emit (sheet, sheet_signals[SELECT_ROW], 0, row);
   gtk_sheet_real_select_range (sheet, NULL);
@@ -1565,7 +1580,6 @@ gtk_sheet_select_column (GtkSheet *sheet, gint column)
   sheet->range.col0 = column;
   sheet->range.rowi = psppire_axis_unit_count (sheet->vaxis) - 1;
   sheet->range.coli = column;
-  sheet->active_cell.row = 0;
   sheet->active_cell.col = column;
 
   g_signal_emit (sheet, sheet_signals[SELECT_COLUMN], 0, column);
@@ -2518,9 +2532,6 @@ gtk_sheet_set_active_cell (GtkSheet *sheet, gint row, gint col)
       col >= psppire_axis_unit_count (sheet->haxis))
     return;
 
-  sheet->active_cell.row = row;
-  sheet->active_cell.col = col;
-
   if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)))
     return;
 
@@ -5100,6 +5111,9 @@ set_column_width (GtkSheet *sheet,
   if (column < 0 || column >= psppire_axis_unit_count (sheet->haxis))
     return;
 
+  if ( width <= 0)
+    return;
+
   psppire_axis_resize (sheet->haxis, column, width);
 
   if (GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)))
@@ -5122,6 +5136,9 @@ set_row_height (GtkSheet *sheet,
   if (row < 0 || row >= psppire_axis_unit_count (sheet->vaxis))
     return;
 
+  if (height <= 0)
+    return;
+
   psppire_axis_resize (sheet->vaxis, row, height);
 
   if (GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)) )