psppire-output-view: Export correctly to drivers that don't handle groups.
authorBen Pfaff <blp@cs.stanford.edu>
Tue, 5 Apr 2022 14:31:19 +0000 (07:31 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Tue, 5 Apr 2022 14:37:46 +0000 (07:37 -0700)
Thanks to Elias Tsolis for reporting this bug.
Bug #61549.

src/ui/gui/psppire-output-view.c

index 6c19434b1bb9c45548b571634b55ea49860d2631..07dbd646161dbf5dc56ee1bdd0aee541bc880040 100644 (file)
@@ -877,6 +877,19 @@ psppire_output_view_destroy (struct psppire_output_view *view)
 
 /* Export. */
 
+static void
+psppire_output_view_export__ (struct output_driver *driver,
+                              const struct output_item *item)
+{
+  if (item->type == OUTPUT_ITEM_GROUP && !driver->class->handles_groups)
+    {
+      for (size_t i = 0; i < item->group.n_children; i++)
+        psppire_output_view_export__ (driver, item->group.children[i]);
+    }
+  else
+    driver->class->submit (driver, item);
+}
+
 void
 psppire_output_view_export (struct psppire_output_view *view,
                             struct string_map *options)
@@ -890,7 +903,7 @@ psppire_output_view_export (struct psppire_output_view *view,
 
       for (i = 0; i < view->n_items; i++)
         if (view->items[i].nesting_depth == 0)
-          driver->class->submit (driver, view->items[i].item);
+          psppire_output_view_export__ (driver, view->items[i].item);
       output_driver_destroy (driver);
     }
 }