CTABLES fix DISPLAY=NONE for scale variable names
[pspp] / src / language / stats / ctables.c
index da511b69510f16bc7fb9d303392f7d719a1f4c55..0d2399f31088c219709e231690549e4549ee91d1 100644 (file)
@@ -4359,6 +4359,23 @@ ctables_format (double d, const struct fmt_spec *format,
   return s;
 }
 
+static bool
+all_hidden_vlabels (const struct ctables_table *t, enum pivot_axis_type a)
+{
+  for (size_t i = 0; i < t->stacks[a].n; i++)
+    {
+      struct ctables_nest *nest = &t->stacks[a].nests[i];
+      if (nest->n != 1 || nest->scale_idx != 0)
+        return false;
+
+      enum ctables_vlabel vlabel
+        = t->ctables->vlabels[var_get_dict_index (nest->vars[0])];
+      if (vlabel != CTVL_NONE)
+        return false;
+    }
+  return true;
+}
+
 static void
 ctables_table_output (struct ctables *ct, struct ctables_table *t)
 {
@@ -4509,6 +4526,8 @@ ctables_table_output (struct ctables *ct, struct ctables_table *t)
           for (size_t k = 0; k < nest->n; k++)
             {
               enum ctables_vlabel vlabel = ct->vlabels[var_get_dict_index (nest->vars[k])];
+              if (vlabel == CTVL_NONE && nest->scale_idx == k)
+                vlabel = CTVL_NAME;
               if (vlabel != CTVL_NONE)
                 {
                   levels[n_levels++] = (struct ctables_level) {
@@ -4637,7 +4656,10 @@ ctables_table_output (struct ctables *ct, struct ctables_table *t)
           free (groups);
           free (levels);
           free (sections);
+
         }
+
+      d[a]->hide_all_labels = all_hidden_vlabels (t, a);
     }
 
   {