+ gint row, col;
+ if (ssw_sheet_get_active_cell (SSW_SHEET (de->data_sheet), &col, &row))
+ {
+ union value val;
+ const struct variable *var = psppire_dict_get_variable (de->dict, col);
+ if (var == NULL)
+ return;
+
+ int width = var_get_width (var);
+ value_init (&val, width);
+ if (psppire_value_entry_get_value (PSPPIRE_VALUE_ENTRY (de->datum_entry),
+ &val, width))
+ {
+ psppire_data_store_set_value (de->data_store, row, var, &val);
+ }
+ value_destroy (&val, width);
+
+ gtk_widget_grab_focus (de->data_sheet);
+ ssw_sheet_set_active_cell (SSW_SHEET (de->data_sheet), col, row, NULL);
+ }