View | Details | Raw Unified | Return to bug 40798
Collapse All | Expand All

(-)src/java/org/apache/fop/fo/pagination/ConditionalPageMasterReference.java (-22 / +12 lines)
Lines 102-130 Link Here
102
                              boolean isLastPage,
102
                              boolean isLastPage,
103
                              boolean isOnlyPage,
103
                              boolean isOnlyPage,
104
                              boolean isBlankPage) {
104
                              boolean isBlankPage) {
105
105
        // page-position
106
        // page-position
106
        if (isOnlyPage) {
107
        boolean pagePositionMatches = false;
107
            if (pagePosition != EN_ONLY) {
108
        pagePositionMatches = (
108
                return false;
109
                pagePosition == EN_ANY
109
            }
110
                || (pagePosition == EN_ONLY && isOnlyPage)
110
        } else if (isFirstPage) {
111
                || (pagePosition == EN_FIRST && isFirstPage)
111
            if (pagePosition == EN_REST) {
112
                || (pagePosition == EN_LAST && isLastPage)
112
                return false;
113
                || (pagePosition == EN_REST && !(isFirstPage || isLastPage))
113
            } else if (pagePosition == EN_LAST) {
114
                );
114
                return false;
115
115
            }
116
        if (!pagePositionMatches) {
116
        } else if (isLastPage) {
117
            return false;
117
            if (pagePosition == EN_REST) {
118
                return false;
119
            } else if (pagePosition == EN_FIRST) {
120
                return false;
121
            }
122
        } else {
123
            if (pagePosition == EN_FIRST) {
124
                return false;
125
            } else if (pagePosition == EN_LAST) {
126
                return false;
127
            }
128
        }
118
        }
129
119
130
        // odd-or-even
120
        // odd-or-even
(-)src/java/org/apache/fop/layoutmgr/PageProvider.java (-3 / +4 lines)
Lines 234-246 Link Here
234
            indexOfCachedLastPage = (isLastPage ? intIndex : -1);
234
            indexOfCachedLastPage = (isLastPage ? intIndex : -1);
235
        }
235
        }
236
        if (replace) {
236
        if (replace) {
237
            disardCacheStartingWith(intIndex);
237
            discardCacheStartingWith(intIndex);
238
            page = cacheNextPage(index, isBlank, isLastPage);
238
            page = cacheNextPage(index, isBlank, isLastPage);
239
        }
239
        }
240
        return page;
240
        return page;
241
    }
241
    }
242
242
243
    private void disardCacheStartingWith(int index) {
243
    private void discardCacheStartingWith(int index) {
244
        while (index < cachedPages.size()) {
244
        while (index < cachedPages.size()) {
245
            this.cachedPages.remove(cachedPages.size() - 1);
245
            this.cachedPages.remove(cachedPages.size() - 1);
246
            if (!pageSeq.goToPreviousSimplePageMaster()) {
246
            if (!pageSeq.goToPreviousSimplePageMaster()) {
Lines 251-258 Link Here
251
251
252
    private Page cacheNextPage(int index, boolean isBlank, boolean isLastPage) {
252
    private Page cacheNextPage(int index, boolean isBlank, boolean isLastPage) {
253
        String pageNumberString = pageSeq.makeFormattedPageNumber(index);
253
        String pageNumberString = pageSeq.makeFormattedPageNumber(index);
254
        boolean isFirstPage = (startPageOfPageSequence == index);
254
        SimplePageMaster spm = pageSeq.getNextSimplePageMaster(
255
        SimplePageMaster spm = pageSeq.getNextSimplePageMaster(
255
                index, (startPageOfPageSequence == index), isLastPage, false, isBlank);
256
                index, isFirstPage, isLastPage, (isFirstPage && isLastPage), isBlank);
256
257
257
        Region body = spm.getRegion(FO_REGION_BODY);
258
        Region body = spm.getRegion(FO_REGION_BODY);
258
        if (!pageSeq.getMainFlow().getFlowName().equals(body.getRegionName())) {
259
        if (!pageSeq.getMainFlow().getFlowName().equals(body.getRegionName())) {

Return to bug 40798