X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-data-store.c;h=cc755761f60512b4e5bd60f0ec963f4ffde698c2;hb=f514231dd2fc0c2adc1ebab5c46a4b55d2bd9c2b;hp=638661a58899701125eb67829d2509cdf328ae73;hpb=1f221ed321a915d7c9888fac08dcf34fde06cdc4;p=pspp-builds.git diff --git a/src/ui/gui/psppire-data-store.c b/src/ui/gui/psppire-data-store.c index 638661a5..cc755761 100644 --- a/src/ui/gui/psppire-data-store.c +++ b/src/ui/gui/psppire-data-store.c @@ -282,30 +282,27 @@ changed_case_callback (GtkWidget *w, gint casenum, gpointer data) } +/* + A callback which occurs after a variable has been deleted. + */ static void -delete_variables_callback (GObject *obj, gint var_num, gint n_vars, gpointer data) +delete_variable_callback (GObject *obj, gint dict_index, + gint case_index, gint val_cnt, + gpointer data) { - PsppireDataStore *store ; + PsppireDataStore *store = PSPPIRE_DATA_STORE (data); - g_return_if_fail (data); - - store = PSPPIRE_DATA_STORE (data); - - g_sheet_model_columns_deleted (G_SHEET_MODEL (store), var_num, n_vars); + g_sheet_model_columns_deleted (G_SHEET_MODEL (store), dict_index, 1); g_sheet_column_columns_changed (G_SHEET_COLUMN (store), - var_num, -1); + dict_index, -1); } static void variable_changed_callback (GObject *obj, gint var_num, gpointer data) { - PsppireDataStore *store; - - g_return_if_fail (data); - - store = PSPPIRE_DATA_STORE (data); + PsppireDataStore *store = PSPPIRE_DATA_STORE (data); g_sheet_column_columns_changed (G_SHEET_COLUMN (store), var_num, 1); @@ -353,13 +350,16 @@ static void dict_size_change_callback (GObject *obj, gint posn, gint adjustment, gpointer data) { - PsppireDataStore *store ; + PsppireDataStore *store = PSPPIRE_DATA_STORE (data); - g_return_if_fail (data); + const struct variable *v = psppire_dict_get_variable (store->dict, posn); - store = PSPPIRE_DATA_STORE (data); + const gint new_val_width = value_cnt_from_width (var_get_width (v)); - psppire_case_file_insert_values (store->case_file, adjustment, posn); + if ( adjustment > 0 ) + psppire_case_file_insert_values (store->case_file, adjustment, + new_val_width - adjustment + + var_get_case_index(v)); } @@ -432,15 +432,14 @@ psppire_data_store_set_dictionary (PsppireDataStore *data_store, PsppireDict *di G_CALLBACK (insert_variable_callback), data_store); - g_signal_connect (dict, "variables-deleted", - G_CALLBACK (delete_variables_callback), + g_signal_connect (dict, "variable-deleted", + G_CALLBACK (delete_variable_callback), data_store); g_signal_connect (dict, "variable-changed", G_CALLBACK (variable_changed_callback), data_store); - g_signal_connect (dict, "dict-size-changed", G_CALLBACK (dict_size_change_callback), data_store);