Browse Source

Bugfix: If there's shrink available in an auto-height situation, the difference is now set to 0 in order to avoid unwanted effects. IOW, never shrink in an auto-height situation.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@633557 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-0_95beta
Jeremias Maerki 16 years ago
parent
commit
ac24860f95

+ 7
- 1
src/java/org/apache/fop/layoutmgr/PageBreakingAlgorithm.java View File

@@ -364,7 +364,13 @@ class PageBreakingAlgorithm extends BreakingAlgorithm {
} else {
// there are no footnotes
}
return getLineWidth(activeNode.line) - actualWidth;
int diff = getLineWidth(activeNode.line) - actualWidth;
if (autoHeight && diff < 0) {
//getLineWidth() for auto-height parts return 0 so the diff will be negative
return 0; //...but we don't want to shrink in this case. Stick to optimum.
} else {
return diff;
}
}

/** Checks whether footnotes from preceding pages may be deferred to the page after

+ 63
- 0
test/layoutengine/standard-testcases/block-container_absolute-position_no-height_3.xml View File

@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- $Id$ -->
<testcase>
<info>
<p>
This test checks absolutely positioned block-containers with auto-height and shrinks.
</p>
</info>
<fo>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="normal" page-width="5in" page-height="5in">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="normal">
<fo:flow flow-name="xsl-region-body">
<fo:block-container id="bc0" width="80pt" absolute-position="absolute"
left="10pt" top="10pt" overflow="visible"
keep-together.within-column="always"
background-color="lightgray">
<fo:block space-after.maximum="1em" space-after.optimum="0.3em"
space-before.maximum="1em" space-before.optimum="0.3em">
Lorem ipsum dolor sit amet.
</fo:block>
<fo:block space-after.maximum="1em" space-after.optimum="0.3em"
space-before.maximum="1em" space-before.optimum="0.3em">
Lorem ipsum dolor sit amet.
</fo:block>
<fo:block space-after.maximum="1em" space-after.optimum="0.3em"
space-before.maximum="1em" space-before.optimum="0.3em">
Lorem ipsum dolor sit amet.
</fo:block>
</fo:block-container>
</fo:flow>
</fo:page-sequence>
</fo:root>
</fo>
<checks>
<eval expected="93600" xpath="//block[@prod-id='bc0' and boolean(@is-reference-area)]/@bpd"/>
<eval expected="28800" xpath="//block[@prod-id='bc0' and boolean(@is-reference-area)]/block[1]/@bpda"/>
<eval expected="32400" xpath="//block[@prod-id='bc0' and boolean(@is-reference-area)]/block[2]/@bpda"/>
<eval expected="32400" xpath="//block[@prod-id='bc0' and boolean(@is-reference-area)]/block[3]/@bpda"/>
<eval expected="3600" xpath="//block[@prod-id='bc0' and boolean(@is-reference-area)]/block[2]/@space-before"/>
<eval expected="3600" xpath="//block[@prod-id='bc0' and boolean(@is-reference-area)]/block[3]/@space-before"/>
</checks>
</testcase>

Loading…
Cancel
Save