You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2008/08/10 21:18:22 UTC

svn commit: r684575 - in /xmlgraphics/fop/trunk: ./ src/documentation/content/xdocs/news-data.xml src/java/org/apache/fop/area/BookmarkData.java status.xml test/layoutengine/standard-testcases/bookmarks_2.xml

Author: jeremias
Date: Sun Aug 10 12:18:22 2008
New Revision: 684575

URL: http://svn.apache.org/viewvc?rev=684575&view=rev
Log:
Merge from 0_95 branch:
Fixed ID resolution for nested bookmarks with duplicated IDs.

Modified:
    xmlgraphics/fop/trunk/   (props changed)
    xmlgraphics/fop/trunk/src/documentation/content/xdocs/news-data.xml   (props changed)
    xmlgraphics/fop/trunk/src/java/org/apache/fop/area/BookmarkData.java
    xmlgraphics/fop/trunk/status.xml
    xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/bookmarks_2.xml

Propchange: xmlgraphics/fop/trunk/
------------------------------------------------------------------------------
    svn:mergeinfo = /xmlgraphics/fop/branches/fop-0_95:684572

Propchange: xmlgraphics/fop/trunk/src/documentation/content/xdocs/news-data.xml
            ('svn:mergeinfo' removed)

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/BookmarkData.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/area/BookmarkData.java?rev=684575&r1=684574&r2=684575&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/area/BookmarkData.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/area/BookmarkData.java Sun Aug 10 12:18:22 2008
@@ -218,25 +218,24 @@
      * id reference.
      *
      * {@inheritDoc} List)
-     * @todo check to make sure it works if multiple bookmark-items
-     * have the same idref
      */
     public void resolveIDRef(String id, List pages) {
-        if (!id.equals(idRef)) {
-            Collection refs = (Collection)unresolvedIDRefs.get(id);
-            if (refs != null) {
-                Iterator iter = refs.iterator();
-                while (iter.hasNext()) {
-                    BookmarkData bd = (BookmarkData)iter.next();
-                    bd.resolveIDRef(id, pages);
-                }
-                unresolvedIDRefs.remove(id);
-            }
-        } else {
+        if (id.equals(idRef)) {
+            //Own ID has been resolved, so note the page
             pageRef = (PageViewport) pages.get(0);
-            // TODO get rect area of id on page
-            unresolvedIDRefs.remove(idRef);
+            //Note: Determining the placement inside the page is the renderer's job.
+        }
+
+        //Notify all child bookmarks
+        Collection refs = (Collection)unresolvedIDRefs.get(id);
+        if (refs != null) {
+            Iterator iter = refs.iterator();
+            while (iter.hasNext()) {
+                BookmarkData bd = (BookmarkData)iter.next();
+                bd.resolveIDRef(id, pages);
+            }
         }
+        unresolvedIDRefs.remove(id);
     }
 
     /**

Modified: xmlgraphics/fop/trunk/status.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/status.xml?rev=684575&r1=684574&r2=684575&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/status.xml (original)
+++ xmlgraphics/fop/trunk/status.xml Sun Aug 10 12:18:22 2008
@@ -53,6 +53,9 @@
 
   <changes>
     <release version="FOP Trunk" date="TBD">
+      <action context="Layout" dev="JM" type="fix">
+        Fixed ID resolution for nested bookmarks with duplicated IDs.
+      </action>
       <action context="Code" dev="AD" type="fix" fixes-bug="45490" due-to="Thomas Stieler">
         Fixed a slight error when resolving non-file URLs: avoid
         altering the original 'href' if the protocol is other than 'file:'

Modified: xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/bookmarks_2.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/bookmarks_2.xml?rev=684575&r1=684574&r2=684575&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/bookmarks_2.xml (original)
+++ xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/bookmarks_2.xml Sun Aug 10 12:18:22 2008
@@ -34,10 +34,16 @@
       <fo:bookmark-tree>
         <fo:bookmark internal-destination="chapter1">
           <fo:bookmark-title>Chapter 1</fo:bookmark-title>
+          <fo:bookmark internal-destination="chapter1">
+            <fo:bookmark-title>Nested Chapter 1</fo:bookmark-title>
+          </fo:bookmark>
         </fo:bookmark>
         <fo:bookmark internal-destination="chapter1" starting-state="hide">
           <fo:bookmark-title>Again Chapter 1</fo:bookmark-title>
         </fo:bookmark>
+        <fo:bookmark internal-destination="chapter2">
+          <fo:bookmark-title>Chapter 2</fo:bookmark-title>
+        </fo:bookmark>
       </fo:bookmark-tree>
       <fo:page-sequence id="page-sequence" master-reference="normal">
         <fo:flow flow-name="xsl-region-body">
@@ -58,10 +64,13 @@
     
     <eval expected="Chapter 1" xpath="//bookmarkTree/bookmark[1]/@title"/>
     <eval expected="true" xpath="//bookmarkTree/bookmark[1]/@show-children"/>
+    <eval expected="Nested Chapter 1" xpath="//bookmarkTree/bookmark[1]/bookmark[1]/@title"/>
+    <eval expected="true" xpath="//bookmarkTree/bookmark[1]/bookmark[1]/@show-children"/>
     <eval expected="Again Chapter 1" xpath="//bookmarkTree/bookmark[2]/@title"/>
     <eval expected="false" xpath="//bookmarkTree/bookmark[2]/@show-children"/>
 
     <eval expected="(P1,chapter1)" xpath="//bookmarkTree/bookmark[1]/@internal-link"/>
+    <eval expected="(P1,chapter1)" xpath="//bookmarkTree/bookmark[1]/bookmark[1]/@internal-link"/>
     <eval expected="(P1,chapter1)" xpath="//bookmarkTree/bookmark[2]/@internal-link"/>
     
   </checks>



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org