TableFObj.ColumnNumberPropertyMaker forces a zero or negative
column-number property to the next available column, because this is a
FOP extension. Fixed TableFObj.ColumnNumberPropertyMaker.make to
really report a cell overlap event.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@657921
13f79535-47bb-0310-9956-
ffa450edef68
<message key="org.apache.fop.fo.flow.table.TableEventProducer.warnImplicitColumns">table-layout=\"fixed\" and column-width unspecified => falling back to proportional-column-width(1){{locator}}</message>
<message key="org.apache.fop.fo.flow.table.TableEventProducer.paddingNotApplicable">padding-* properties are not applicable to {elementName}, but a non-zero value for padding was found.{{locator}}</message>
<message key="org.apache.fop.fo.flow.table.TableEventProducer.cellOverlap">{elementName} overlaps in column {column}.<!-- no locator here, exception will be wrapped --></message>
+ <message key="org.apache.fop.fo.flow.table.TableEventProducer.forceNextColumnNumber">Negative value {propValue} of property column-number of element {elementName} forced into the next available column number {columnNumber}.{{locator}}</message>
<message key="org.apache.fop.fo.flow.table.TableEventProducer.breakIgnoredDueToRowSpanning">{breakBefore,if,break-before,break-after} ignored on {elementName} because of row spanning in progress (See XSL 1.1, {breakBefore,if,7.20.2,7.20.1}){{locator}}</message>
<message key="org.apache.fop.events.ResourceEventProducer.imageNotFound">Image not found.[ URI: {uri}.]{{locator}}</message>
<message key="org.apache.fop.events.ResourceEventProducer.imageError">Image not available.[ URI: {uri}.] Reason:[ {reason}][ {e}]{{locator}}</message>
void cellOverlap(Object source, String elementName, int column,
Locator loc) throws PropertyException;
+ /**
+ * @param source the event source
+ * @param elementName the name of the context node
+ * @param propValue the user-specified value of the column-number property
+ * @param columnNumber the generated value for the column-number property
+ * @param loc the location of the error or null
+ * @event.severity WARN
+ */
+ void forceNextColumnNumber(Object source, String elementName, Number propValue,
+ int columnNumber, Locator loc);
+
/**
* Break ignored due to row spanning.
* @param source the event source
int colSpan = propertyList.get(Constants.PR_NUMBER_COLUMNS_SPANNED)
.getNumeric().getValue();
- int i = columnIndex - 1;
- int lastIndex = (columnIndex + colSpan) - 1;
- while (++i < lastIndex) {
+ int lastIndex = columnIndex - 1 + colSpan;
+ for (int i = columnIndex; i <= lastIndex; ++i) {
if (columnIndexManager.isColumnNumberUsed(i)) {
/* if column-number is already in use by another
* cell/column => error!
(ColumnNumberManagerHolder) propertyList.getParentFObj();
ColumnNumberManager columnIndexManager = parent.getColumnNumberManager();
i = columnIndexManager.getCurrentColumnNumber();
+ TableEventProducer eventProducer =
+ TableEventProducer.Provider.get(fo.getUserAgent().getEventBroadcaster());
+ eventProducer.forceNextColumnNumber(this, propertyList.getFObj().getName(),
+ val, i, fo.getLocator());
}
return NumberProperty.getInstance(i);
}