Prevent sheet from stepping outside its valid cell range.
[pspp-builds.git] / lib / gtksheet / gtksheet.c
index ba59e6772b7aaf193dc1575bfc66127997dc2b8b..4728891baa9ab46eccf4f34f25361987f40fcf6a 100644 (file)
@@ -58,6 +58,7 @@
 #include "gtksheet.h"
 #include "gtkextra-marshal.h"
 #include "gsheetmodel.h"
+#include <libpspp/misc.h>
 
 /* sheet flags */
 enum
@@ -4371,6 +4372,16 @@ step_sheet (GtkSheet *sheet, GtkScrollType dir)
       break;
     }
 
+
+  maximize_int (&new_row, 0);
+  maximize_int (&new_col, 0);
+
+  minimize_int (&new_row,
+               g_sheet_row_get_row_count (sheet->row_geometry) - 1);
+
+  minimize_int (&new_col,
+               g_sheet_column_get_column_count (sheet->column_geometry) - 1);
+
   g_signal_emit (sheet, sheet_signals[TRAVERSE], 0,
                 current_row, current_col,
                 &new_row, &new_col, &forbidden);