Ensure that NUMERIC's format (if any) is a valid output format.
[pspp-builds.git] / src / ui / gui / psppire-data-editor.c
index 4ad9ab622646adfed8663dd8449ec57cceab16cb..916c8838a05a3fff8b8221b623c291e4c631b420 100644 (file)
@@ -562,6 +562,19 @@ on_map (GtkWidget *w)
   g_signal_connect (clip, "owner-change", G_CALLBACK (on_owner_change), w);
 }
 
+static gboolean
+traverse_cell_callback (GtkSheet *sheet,
+                       gint row, gint column,
+                       gint *new_row, gint *new_column,
+                       gpointer data)
+{
+  PsppireDataStore *data_store = PSPPIRE_DATA_STORE (data);
+
+  if ( *new_column >= psppire_dict_get_var_cnt (data_store->dict))
+    return FALSE;
+
+  return TRUE;
+}
 
 static void
 psppire_data_editor_init (PsppireDataEditor *de)
@@ -670,6 +683,9 @@ psppire_data_editor_new (PsppireVarStore *var_store,
                          "data-store",  data_store,
                          NULL);
 
+  g_signal_connect (PSPPIRE_DATA_EDITOR(widget)->data_sheet, "traverse",
+                   G_CALLBACK (traverse_cell_callback), data_store);
+
   return widget;
 }
 
@@ -1023,7 +1039,7 @@ data_is_selected (PsppireDataEditor *de)
   GtkSheetRange range;
   gint row, col;
 
-  if ( gtk_notebook_current_page (GTK_NOTEBOOK (de)) != PSPPIRE_DATA_EDITOR_DATA_VIEW)
+  if ( gtk_notebook_get_current_page (GTK_NOTEBOOK (de)) != PSPPIRE_DATA_EDITOR_DATA_VIEW)
     return FALSE;
 
   gtk_sheet_get_active_cell (GTK_SHEET (de->data_sheet), &row, &col);