]> source.dussan.org Git - poi.git/commitdiff
fixed typo in SlideShow.removeSlide which prevened deletion of slide's notes, see...
authorYegor Kozlov <yegor@apache.org>
Sat, 27 Jun 2009 10:25:23 +0000 (10:25 +0000)
committerYegor Kozlov <yegor@apache.org>
Sat, 27 Jun 2009 10:25:23 +0000 (10:25 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@788948 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
src/scratchpad/testcases/org/apache/poi/hslf/data/47261.ppt
src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestAddingSlides.java

index cf8d89050f5299185cdd10cbf51ca581c3fe2e56..b456798bae989779fbc29a424b42bd7e84805078 100644 (file)
@@ -590,6 +590,10 @@ public final class SlideShow {
         ArrayList<Record> records = new ArrayList<Record>();
         ArrayList<SlideAtomsSet> sa = new ArrayList<SlideAtomsSet>();
         ArrayList<Slide> sl = new ArrayList<Slide>();
+
+        ArrayList<Notes> nt = new ArrayList<Notes>();
+        for(Notes notes : getNotes()) nt.add(notes);
+
         for (int i = 0, num = 0; i < _slides.length; i++){
             if(i != index) {
                 sl.add(_slides[i]);
@@ -599,6 +603,7 @@ public final class SlideShow {
                 records.addAll(Arrays.asList(sas[i].getSlideRecords()));
             } else {
                 removedSlide = _slides[i];
+                nt.remove(_slides[i].getNotesSheet());
             }
         }
         if(sa.size() == 0){
@@ -610,8 +615,9 @@ public final class SlideShow {
         _slides = sl.toArray(new Slide[sl.size()]);
 
         //if the removed slide had notes - remove references to them too
+
         if(removedSlide != null){
-            int notesId = removedSlide.getSlideRecord().getSlideAtom().getNotesID();
+             int notesId = removedSlide.getSlideRecord().getSlideAtom().getNotesID();
             if(notesId != 0){
                 SlideListWithText nslwt = _documentRecord.getNotesSlideListWithText();
                 records = new ArrayList<Record>();
@@ -626,13 +632,13 @@ public final class SlideShow {
                 if(na.size() == 0){
                     _documentRecord.removeSlideListWithText(nslwt);
                 } else {
-                    slwt.setSlideAtomsSets( na.toArray(new SlideAtomsSet[na.size()]) );
-                    slwt.setChildRecord(records.toArray(new Record[records.size()]));
+                    nslwt.setSlideAtomsSets( na.toArray(new SlideAtomsSet[na.size()]) );
+                    nslwt.setChildRecord(records.toArray(new Record[records.size()]));
                 }
 
             }
-
         }
+        _notes = nt.toArray(new Notes[nt.size()]);
 
         return removedSlide;
     }
index be472de7c9bdf0c9d28018165810dc339ccad920..7a26a7981ead3957b6d07aca8fd2278d0eb7a1ba 100755 (executable)
Binary files a/src/scratchpad/testcases/org/apache/poi/hslf/data/47261.ppt and b/src/scratchpad/testcases/org/apache/poi/hslf/data/47261.ppt differ
index 4ffeb878949212b440825b1f69bcaac6594189c8..dd1ccd0b4e4c016f691dc6302d9f82a1f5de987b 100644 (file)
@@ -279,15 +279,18 @@ public final class TestAddingSlides extends TestCase {
         Slide[] slides = ppt.getSlides();
         Document doc = ppt.getDocumentRecord();
         assertNotNull(doc.getSlideSlideListWithText());
-        assertEquals(1, ppt.getSlides().length);
+        assertEquals(14, ppt.getSlides().length);
         int notesId = slides[0].getSlideRecord().getSlideAtom().getNotesID();
         assertTrue(notesId > 0);
         assertNotNull(doc.getNotesSlideListWithText());
-        //the SLWT container for notes has one entry which will deleted
-        assertEquals(1, doc.getNotesSlideListWithText().getSlideAtomsSets().length);
+        assertEquals(14, doc.getNotesSlideListWithText().getSlideAtomsSets().length);
 
-        ppt.removeSlide(0);
+        //remove all slides, corresponding notes should be removed too
+        for (int i = 0; i < slides.length; i++) {
+            ppt.removeSlide(0);
+        }
         assertEquals(0, ppt.getSlides().length);
+        assertEquals(0, ppt.getNotes().length);
         assertNull(doc.getSlideSlideListWithText());
         assertNull(doc.getNotesSlideListWithText());