Kaydet (Commit) aa48af57 authored tarafından Lionel Elie Mamane's avatar Lionel Elie Mamane

fdo#67935 "print on group change" acted as "print in first group instance"

The "parent" group changed iff this is the first iteration of *this*
group *or* *detail* *section*.

The "parent" group's first iteration means that we are in the first
value of the parent group (in other words, the *grand*-*parent* group
changed).

Change-Id: Ia4a798cb37db2f17e7deef1058b25795bfc02648
Reviewed-on: https://gerrit.libreoffice.org/9503Reviewed-by: 's avatarLionel Elie Mamane <lionel@mamane.lu>
Tested-by: 's avatarLionel Elie Mamane <lionel@mamane.lu>
üst 7b8e9ea4
......@@ -44,6 +44,7 @@ import org.jfree.report.flow.layoutprocessor.LayoutControllerUtil;
import org.jfree.report.flow.layoutprocessor.SectionLayoutController;
import org.jfree.report.structure.Element;
import org.jfree.report.structure.Group;
import org.jfree.report.structure.DetailSection;
import org.pentaho.reporting.libraries.formula.lvalues.ContextLookup;
import org.pentaho.reporting.libraries.formula.lvalues.LValue;
......@@ -257,14 +258,14 @@ public class FormatValueUtility
return true;
}
public static boolean isGroupChanged(LayoutController ref)
private static boolean isGroupChanged(LayoutController ref)
{
// search the group.
final SectionLayoutController slc = findGroup(ref);
final SectionLayoutController slc = findGroupOrDetail(ref);
if (slc == null)
{
// Always print the content of the report header and footer and
// the page header and footer.
// {Page, Report} × {Header, Footer} have no usable iteration count
// err on the side of showing them rather than not showing them
return true;
}
......@@ -272,10 +273,9 @@ public class FormatValueUtility
return slc.getIterationCount() == 0;
}
public static SectionLayoutController findGroup(LayoutController ref)
private static SectionLayoutController findGroupOrDetail(LayoutController ref)
{
LayoutController parent = ref.getParent();
boolean skipNext = false;
while (parent != null)
{
if (!(parent instanceof SectionLayoutController))
......@@ -286,19 +286,8 @@ public class FormatValueUtility
{
final SectionLayoutController slc = (SectionLayoutController) parent;
final Element element = slc.getElement();
if (element instanceof OfficeGroupSection)
if (!(element instanceof Group || element instanceof DetailSection))
{
// This is a header or footer. So we take the next group instead.
skipNext = true;
parent = parent.getParent();
}
else if (!(element instanceof Group))
{
parent = parent.getParent();
}
else if (skipNext)
{
skipNext = false;
parent = parent.getParent();
}
else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment