Index: src/java/org/apache/fop/layoutmgr/BlockLevelEventProducer.java =================================================================== --- src/java/org/apache/fop/layoutmgr/BlockLevelEventProducer.java (revision 757381) +++ src/java/org/apache/fop/layoutmgr/BlockLevelEventProducer.java (working copy) @@ -93,13 +93,14 @@ * @param amount the amount by which the contents overflow (in mpt) * @param clip true if the content will be clipped * @param canRecover indicates whether FOP can recover from this problem and continue working + * @param isError indicates whether an error message should be issued * @param loc the location of the error or null * @throws LayoutException the layout error provoked by the method call - * @event.severity FATAL + * @event.severity WARN */ void viewportOverflow(Object source, String elementName, - int amount, boolean clip, boolean canRecover, - Locator loc) throws LayoutException; + int amount, boolean clip, boolean canRecover, boolean isError, + Locator loc); /** * Contents overflow a region viewport. Index: src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java =================================================================== --- src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java (revision 757381) +++ src/java/org/apache/fop/layoutmgr/BlockContainerLayoutManager.java (working copy) @@ -378,9 +378,10 @@ if (contentOverflows) { BlockLevelEventProducer eventProducer = BlockLevelEventProducer.Provider.get( getBlockContainerFO().getUserAgent().getEventBroadcaster()); - boolean canRecover = (getBlockContainerFO().getOverflow() != EN_ERROR_IF_OVERFLOW); + boolean canRecover = true; + boolean isError = (getBlockContainerFO().getOverflow() == EN_ERROR_IF_OVERFLOW); eventProducer.viewportOverflow(this, getBlockContainerFO().getName(), - breaker.getOverflowAmount(), needClip(), canRecover, + breaker.getOverflowAmount(), needClip(), canRecover, isError, getBlockContainerFO().getLocator()); } } @@ -529,9 +530,10 @@ if (!autoHeight & (contentOverflows)) { BlockLevelEventProducer eventProducer = BlockLevelEventProducer.Provider.get( getBlockContainerFO().getUserAgent().getEventBroadcaster()); - boolean canRecover = (getBlockContainerFO().getOverflow() != EN_ERROR_IF_OVERFLOW); + boolean canRecover = true; + boolean isError = (getBlockContainerFO().getOverflow() == EN_ERROR_IF_OVERFLOW); eventProducer.viewportOverflow(this, getBlockContainerFO().getName(), - breaker.getOverflowAmount(), needClip(), canRecover, + breaker.getOverflowAmount(), needClip(), canRecover, isError, getBlockContainerFO().getLocator()); } } Index: src/java/org/apache/fop/events/FOPEventListenerProxy.java =================================================================== --- src/java/org/apache/fop/events/FOPEventListenerProxy.java (revision 757381) +++ src/java/org/apache/fop/events/FOPEventListenerProxy.java (working copy) @@ -66,6 +66,11 @@ //Reduce severity if FOP can recover event.setSeverity(EventSeverity.WARN); } + Boolean isError = (Boolean)event.getParam("isError"); + if (Boolean.TRUE.equals(isError)) { + //Increase severity as specified by user + event.setSeverity(EventSeverity.ERROR); + } } this.delegate.processEvent(event); }