sd/source/ui/unoidl/unomodel.cxx |   26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

New commits:
commit 4044a20c73e2b2a53a8ba11afb2287e84202f07c
Author: Caolán McNamara <caol...@redhat.com>
Date:   Wed Jul 8 12:24:46 2015 +0100

    when skipping hidden pages omit the hidden pages from page bookmarks
    
    three slides, set second to hidden, export to pdf (without toggling
    on include hidden slides), in evince/acroread click on the "slide 3"
    title, and the viewers will not jump to that slide, seeing as the
    index is mis-calculated assuming 1-1 export-import pages
    
    Change-Id: I2f21eb655684ac4cb06384a8e9a17b419f644f3f
    Reviewed-on: https://gerrit.libreoffice.org/16862
    Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk>
    Tested-by: Miklos Vajna <vmik...@collabora.co.uk>

diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index 3b460bf..ff4bb93 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -1855,6 +1855,25 @@ bool ImplRenderPaintProc::IsPrintable( const SdrObject* 
pObj ) const
     return bPrintable;
 
 }
+
+namespace
+{
+    sal_Int16 CalcOutputPageNum(vcl::PDFExtOutDevData* pPDFExtOutDevData, 
SdDrawDocument *pDoc, sal_Int16 nPageNumber)
+    {
+        //export all pages, simple one to one case
+        if (pPDFExtOutDevData && pPDFExtOutDevData->GetIsExportHiddenSlides())
+            return nPageNumber-1;
+        //check all preceding pages, and only count non-hidden ones
+        sal_Int16 nRet = 0;
+        for (sal_Int16 i = 0; i < nPageNumber-1; ++i)
+        {
+           if (!(pDoc->GetSdPage(i, PK_STANDARD))->IsExcluded())
+                ++nRet;
+        }
+        return nRet;
+    }
+}
+
 void SAL_CALL SdXImpressDocument::render( sal_Int32 nRenderer, const uno::Any& 
rSelection,
                                           const uno::Sequence< 
beans::PropertyValue >& rxOptions )
     throw (lang::IllegalArgumentException, uno::RuntimeException, 
std::exception)
@@ -2139,9 +2158,12 @@ void SAL_CALL SdXImpressDocument::render( sal_Int32 
nRenderer, const uno::Any& r
                                 OUString aPageName = mpDoc->GetSdPage( 
(sal_uInt16)nPageNumber - 1 , PK_STANDARD )->GetName();
                                 if( !aPageName.isEmpty() )
                                 {
+                                    // Destination PageNum
+                                    const sal_Int32 nDestPageNum = 
CalcOutputPageNum(pPDFExtOutDevData, mpDoc, nPageNumber);
+
                                     // insert the bookmark to this page into 
the NamedDestinations
                                     if( 
pPDFExtOutDevData->GetIsExportNamedDestinations() )
-                                        pPDFExtOutDevData->CreateNamedDest( 
aPageName, aPageRect,  nPageNumber - 1 );
+                                        
pPDFExtOutDevData->CreateNamedDest(aPageName, aPageRect, nDestPageNum);
 
                                     // add the name to the outline, (almost) 
same code as in sc/source/ui/unoobj/docuno.cxx
                                     // issue #i40318.
@@ -2150,7 +2172,7 @@ void SAL_CALL SdXImpressDocument::render( sal_Int32 
nRenderer, const uno::Any& r
                                     {
                                         // Destination Export
                                         const sal_Int32 nDestId =
-                                            pPDFExtOutDevData->CreateDest( 
aPageRect , nPageNumber - 1 );
+                                            
pPDFExtOutDevData->CreateDest(aPageRect , nDestPageNum);
 
                                         // Create a new outline item:
                                         pPDFExtOutDevData->CreateOutlineItem( 
-1 , aPageName, nDestId );
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to