]> source.dussan.org Git - poi.git/commitdiff
Bugzilla 52599 - avoid duplicate text when rendering slides in HSLF
authorYegor Kozlov <yegor@apache.org>
Wed, 22 Feb 2012 13:23:31 +0000 (13:23 +0000)
committerYegor Kozlov <yegor@apache.org>
Wed, 22 Feb 2012 13:23:31 +0000 (13:23 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1292273 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/scratchpad/src/org/apache/poi/hslf/model/Slide.java
src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java
src/scratchpad/testcases/org/apache/poi/hslf/model/TestTextShape.java
test-data/slideshow/52599.ppt [new file with mode: 0644]

index 99cb798d002ec048073402a006bef1b88cb5a991..d2367da5220467942986d1677f33375898e56292 100644 (file)
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.8-beta6" date="2012-??-??">
+           <action dev="poi-developers" type="fix">52599 - avoid duplicate text when rendering slides in HSLF</action>
            <action dev="poi-developers" type="fix">52598 - respect slide background when rendering slides in HSLF</action>
            <action dev="poi-developers" type="fix">51731 - fixed painting shape outlines in HSLF</action>
            <action dev="poi-developers" type="fix">52701 - fixed seting vertical alignment for XSLFTableCell</action>
index 7822d8cd11454a26dd3fe8b81a96d2eb834385aa..0decdaa4481f3de604c23389a92ea0fb1104004c 100644 (file)
@@ -91,6 +91,7 @@ public final class Slide extends Sheet
                for(int k=0; k<_otherRuns.length; i++, k++) {
                        _runs[i] = _otherRuns[k];
             _runs[i].setSheet(this);
+            _runs[i].setIndex(-1); // runs found in PPDrawing are not linked with SlideListWithTexts
                }
        }
 
index 65c4459d17d8abec0ce8ef33182b303776496e46..5eb3930638bf2f2bbf8e86438c2ce7b5c8163e0a 100644 (file)
@@ -48,7 +48,7 @@ public final class TextRun
        private SlideShow slideShow;
     private Sheet _sheet;
     private int shapeId;
-    private int slwtIndex; //position in the owning SlideListWithText
+    private int slwtIndex = -1; //position in the owning SlideListWithText
     /**
      * all text run records that follow TextHeaderAtom.
      * (there can be misc InteractiveInfo, TxInteractiveInfo and other records)
index 7285f5120ab1d0c3cbb21edfbc8c2ce5b12ab26c..48b6df54a6af0eda8b186a40d0fa8a5b1a0c17b4 100644 (file)
@@ -47,7 +47,7 @@ public final class TestTextShape extends TestCase {
         assertNotNull(shape.getEscherTextboxWrapper());
         assertEquals("", shape.getText());
         assertSame(run, shape.createTextRun());
-
+        assertEquals(-1, run.getIndex());
     }
 
     public void testCreateTextBox(){
@@ -195,4 +195,24 @@ public final class TestTextShape extends TestCase {
         assertEquals(0.05, tx.getMarginTop()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01);
         assertEquals(0.05, tx.getMarginBottom()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01);
     }
+
+    public void test52599() throws IOException {
+        SlideShow ppt = new SlideShow(_slTests.openResourceAsStream("52599.ppt"));
+
+        Slide slide = ppt.getSlides()[0];
+        Shape[] sh = slide.getShapes();
+        assertEquals(3, sh.length);
+
+        TextShape sh0 = (TextShape)sh[0];
+        assertEquals(null, sh0.getText());
+        assertEquals(null, sh0.getTextRun());
+
+        TextShape sh1 = (TextShape)sh[1];
+        assertEquals(null, sh1.getText());
+        assertEquals(null, sh1.getTextRun());
+
+        TextShape sh2 = (TextShape)sh[2];
+        assertEquals("this box should be shown just once", sh2.getText());
+        assertEquals(-1, sh2.getTextRun().getIndex());
+    }
 }
diff --git a/test-data/slideshow/52599.ppt b/test-data/slideshow/52599.ppt
new file mode 100644 (file)
index 0000000..a1c2e8d
Binary files /dev/null and b/test-data/slideshow/52599.ppt differ