if (var_has_value_labels (var) && GTK_IS_COMBO_BOX (editable))
{
const struct val_labs *labels = var_get_value_labels (var);
- const struct val_lab *vl;
+ const struct val_lab **vls = val_labs_sorted (labels);
+ size_t n_vls = val_labs_count (labels);
GtkListStore *list_store;
+ int i;
list_store = gtk_list_store_new (1, G_TYPE_STRING);
- for (vl = val_labs_first (labels); vl != NULL;
- vl = val_labs_next (labels, vl))
+ for (i = 0; i < n_vls; ++i)
{
+ const struct val_lab *vl = vls[i];
GtkTreeIter iter;
gtk_list_store_append (list_store, &iter);
0, val_lab_get_label (vl),
-1);
}
+ free (vls);
gtk_combo_box_set_model (GTK_COMBO_BOX (editable),
GTK_TREE_MODEL (list_store));
static void
on_variable_changed (PsppireDict *dict, int dict_index,
+ guint what, const struct variable *oldvar,
PsppireDataSheet *data_sheet)
{
PsppireDataStore *data_store = psppire_data_sheet_get_data_store (data_sheet);
g_return_if_fail (data_sheet->data_store != NULL);
g_return_if_fail (dict == data_sheet->data_store->dict);
+
+ if (what & VAR_TRAIT_DISPLAY_WIDTH)
+ on_variable_display_width_changed (dict, dict_index, data_sheet);
+
column = psppire_data_sheet_find_column_for_variable (data_sheet,
dict_index);
if (column == NULL)
return;
+
var = psppire_dict_get_variable (data_store->dict, dict_index);
g_return_if_fail (var != NULL);
g_signal_connect (data_store->dict, "variable-changed",
G_CALLBACK (on_variable_changed),
data_sheet);
- g_signal_connect (data_store->dict, "variable-display-width-changed",
- G_CALLBACK (on_variable_display_width_changed),
- data_sheet);
g_signal_connect (data_store->dict, "variable-inserted",
G_CALLBACK (on_variable_inserted), data_sheet);
g_signal_connect (data_store->dict, "variable-deleted",