ASF Bugzilla – Attachment 21976 Details for
Bug 37579
footnotes within tables and listsl get lost
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
alternative patch for footnotes in table-cells
b37579.diff (text/plain), 5.21 KB, created by
Andreas L. Delmelle
on 2008-05-17 13:05:46 UTC
(
hide
)
Description:
alternative patch for footnotes in table-cells
Filename:
MIME Type:
Creator:
Andreas L. Delmelle
Created:
2008-05-17 13:05:46 UTC
Size:
5.21 KB
patch
obsolete
>Index: src/java/org/apache/fop/layoutmgr/table/ActiveCell.java >=================================================================== >--- src/java/org/apache/fop/layoutmgr/table/ActiveCell.java (revision 655602) >+++ src/java/org/apache/fop/layoutmgr/table/ActiveCell.java (working copy) >@@ -21,6 +21,7 @@ > > import java.util.List; > import java.util.ListIterator; >+import java.util.LinkedList; > > import org.apache.commons.logging.Log; > import org.apache.commons.logging.LogFactory; >@@ -33,6 +34,7 @@ > import org.apache.fop.layoutmgr.BlockLevelLayoutManager; > import org.apache.fop.layoutmgr.ElementListUtils; > import org.apache.fop.layoutmgr.KnuthBox; >+import org.apache.fop.layoutmgr.KnuthBlockBox; > import org.apache.fop.layoutmgr.KnuthElement; > import org.apache.fop.layoutmgr.KnuthPenalty; > import org.apache.fop.layoutmgr.MinOptMaxUtil; >@@ -101,6 +103,8 @@ > private int penaltyLength; > /** Value of the penalty ending this step, 0 if the step does not end on a penalty. */ > private int penaltyValue; >+ /** list of footnotes for this step */ >+ private List footnoteList; > /** > * One of {@link Constants#EN_AUTO}, {@link Constants#EN_COLUMN}, > * {@link Constants#EN_PAGE}, {@link Constants#EN_EVEN_PAGE}, >@@ -130,6 +134,7 @@ > this.totalLength = other.totalLength; > this.penaltyLength = other.penaltyLength; > this.penaltyValue = other.penaltyValue; >+ this.footnoteList = other.footnoteList; > this.condBeforeContentLength = other.condBeforeContentLength; > this.breakClass = other.breakClass; > } >@@ -293,6 +298,7 @@ > afterNextStep.penaltyValue = 0; > afterNextStep.condBeforeContentLength = 0; > afterNextStep.breakClass = Constants.EN_AUTO; >+ afterNextStep.footnoteList = null; > boolean breakFound = false; > boolean prevIsBox = false; > boolean boxFound = false; >@@ -322,6 +328,14 @@ > } > prevIsBox = false; > } else { >+ if (el instanceof KnuthBlockBox >+ && ((KnuthBlockBox)el).hasAnchors()) { >+ if (afterNextStep.footnoteList == null) { >+ afterNextStep.footnoteList = new LinkedList(); >+ } >+ afterNextStep.footnoteList.addAll( >+ ((KnuthBlockBox)el).getFootnoteBodyLMs()); >+ } > prevIsBox = true; > boxFound = true; > afterNextStep.contentLength += el.getW(); >@@ -555,6 +569,27 @@ > } > } > >+ /** >+ * Return the list of FootnoteBodyLMs for the >+ * next step. >+ * >+ * @return the list of footnotes >+ */ >+ List getFootnoteList() { >+ return this.nextStep.footnoteList; >+ } >+ >+ /** >+ * Return <code>true</code> if the next step has >+ * associated footnotes. >+ * >+ * @return true if there are associated footnotes >+ */ >+ boolean hasFootnotes() { >+ return this.nextStep.footnoteList != null >+ && !this.nextStep.footnoteList.isEmpty(); >+ } >+ > /** {@inheritDoc} */ > public String toString() { > return "Cell " + (pgu.getRowIndex() + 1) + "." + (pgu.getColIndex() + 1); >Index: src/java/org/apache/fop/layoutmgr/table/TableStepper.java >=================================================================== >--- src/java/org/apache/fop/layoutmgr/table/TableStepper.java (revision 655602) >+++ src/java/org/apache/fop/layoutmgr/table/TableStepper.java (working copy) >@@ -33,6 +33,7 @@ > import org.apache.fop.layoutmgr.BlockLevelLayoutManager; > import org.apache.fop.layoutmgr.BreakElement; > import org.apache.fop.layoutmgr.KeepUtil; >+import org.apache.fop.layoutmgr.KnuthBlockBox; > import org.apache.fop.layoutmgr.KnuthBox; > import org.apache.fop.layoutmgr.KnuthElement; > import org.apache.fop.layoutmgr.KnuthGlue; >@@ -199,12 +200,17 @@ > } > } > >+ LinkedList footnoteList = new LinkedList(); > //Put all involved grid units into a list > List cellParts = new java.util.ArrayList(columnCount); > for (Iterator iter = activeCells.iterator(); iter.hasNext();) { > ActiveCell activeCell = (ActiveCell) iter.next(); > CellPart part = activeCell.createCellPart(); > cellParts.add(part); >+ if (activeCell.hasFootnotes()) { >+ footnoteList.addAll( >+ activeCell.getFootnoteList()); >+ } > } > > //Create elements for step >@@ -217,8 +223,13 @@ > tcpos.setFlag(TableContentPosition.FIRST_IN_ROWGROUP, true); > } > lastTCPos = tcpos; >- returnList.add(new KnuthBox(boxLen, tcpos, false)); > >+ if (footnoteList.isEmpty()) { >+ returnList.add(new KnuthBox(boxLen, tcpos, false)); >+ } else { >+ returnList.add(new KnuthBlockBox(boxLen, footnoteList, tcpos, false)); >+ } >+ > int effPenaltyLen = Math.max(0, penaltyOrGlueLen); > TableHFPenaltyPosition penaltyPos = new TableHFPenaltyPosition(getTableLM()); > if (bodyType == TableRowIterator.BODY) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 37579
:
17010
|
17432
|
17433
|
17434
|
21907
|
21908
|
21922
|
21976
|
21977
|
21979
|
23492
|
23561