[Libreoffice-commits] core.git: filter/source sfx2/source

Maxim Monastirsky momonasmon at gmail.com
Mon Nov 4 14:52:34 CET 2013


 filter/source/pdf/pdffilter.cxx |   13 -------------
 sfx2/source/doc/guisaveas.cxx   |   16 ++++++++++++++++
 2 files changed, 16 insertions(+), 13 deletions(-)

New commits:
commit 7722a5906d8f6765395205f5074f480ad365aa19
Author: Maxim Monastirsky <momonasmon at gmail.com>
Date:   Mon Nov 4 14:06:10 2013 +0200

    fdo#68099 Move pdf viewer call to GUI related code
    
    This change fixes two bugs:
    1) In it's old location at PDFFilter::implExport, the pdf viewer is called
    *before* the final file is actually written. It causes a problem under
    Windows, because we use ShellExecute function which fails if the file
    doesn't exist. Calling a function blocks execution, so we have no chance
    to write the file before that function fails. (fdo#68099)
    2) Being a part of the saving/filter code means that the pdf viewer will
    open even when converting to a pdf in headless mode. It's definitely not
    something that we want to happen.
    
    Change-Id: I1a6f70ec76100ac9e008869aa57ad738ced3ab6c
    Reviewed-on: https://gerrit.libreoffice.org/6565
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/filter/source/pdf/pdffilter.cxx b/filter/source/pdf/pdffilter.cxx
index 67b4bdb..092cad6 100644
--- a/filter/source/pdf/pdffilter.cxx
+++ b/filter/source/pdf/pdffilter.cxx
@@ -24,10 +24,7 @@
 #include <vcl/window.hxx>
 #include <svl/outstrm.hxx>
 #include <vcl/FilterConfigItem.hxx>
-#include <com/sun/star/system/SystemShellExecute.hpp>
-#include <com/sun/star/system/SystemShellExecuteFlags.hpp>
 
-using namespace css::system;
 // -------------
 // - PDFFilter -
 // -------------
@@ -54,10 +51,6 @@ sal_Bool PDFFilter::implExport( const Sequence< PropertyValue >& rDescriptor )
     sal_Bool                    bRet = sal_False;
     Reference< task::XStatusIndicator > xStatusIndicator;
     Reference< task::XInteractionHandler > xIH;
-    OUString aUrl;
-
-    FilterConfigItem aItem( "Office.Common/Filter/PDF/Export/" );
-    sal_Bool aViewPDF = aItem.ReadBool(  "ViewPDFAfterExport", sal_False );
 
     for ( sal_Int32 i = 0 ; ( i < nLength ) && !xOStm.is(); ++i)
     {
@@ -69,8 +62,6 @@ sal_Bool PDFFilter::implExport( const Sequence< PropertyValue >& rDescriptor )
             pValue[ i ].Value >>= xStatusIndicator;
         else if ( pValue[i].Name == "InteractionHandler" )
             pValue[i].Value >>= xIH;
-        else if ( pValue[ i ].Name == "URL" )
-            pValue[ i ].Value >>= aUrl;
     }
 
     /* we don't get FilterData if we are exporting directly
@@ -142,10 +133,6 @@ sal_Bool PDFFilter::implExport( const Sequence< PropertyValue >& rDescriptor )
         }
     }
 
-    if(aViewPDF==sal_True) {
-    Reference<XSystemShellExecute> xSystemShellExecute(SystemShellExecute::create( ::comphelper::getProcessComponentContext() ) ); //Open the newly exported pdf
-    xSystemShellExecute->execute(aUrl, "", SystemShellExecuteFlags::URIS_ONLY ); }
-
     return bRet;
 }
 
diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx
index 79af8ed..ddf8e07 100644
--- a/sfx2/source/doc/guisaveas.cxx
+++ b/sfx2/source/doc/guisaveas.cxx
@@ -93,6 +93,10 @@
 
 #include <officecfg/Office/Common.hxx>
 
+#include <vcl/FilterConfigItem.hxx>
+#include <com/sun/star/system/SystemShellExecute.hpp>
+#include <com/sun/star/system/SystemShellExecuteFlags.hpp>
+
 // flags that specify requested operation
 #define EXPORT_REQUESTED            1
 #define PDFEXPORT_REQUESTED         2
@@ -114,6 +118,7 @@ const char aFilterDataString[] = "FilterData";
 const char aFilterFlagsString[] = "FilterFlags";
 
 using namespace ::com::sun::star;
+using namespace css::system;
 
 namespace {
 //-------------------------------------------------------------------------
@@ -1705,6 +1710,17 @@ sal_Bool SfxStoringHelper::GUIStoreModel( uno::Reference< frame::XModel > xModel
             aModelData.GetStorable()->storeAsURL( aURL.GetMainURL( INetURLObject::NO_DECODE ), aArgsSequence );
     }
 
+    // Launch PDF viewer
+    if ( nStoreMode & PDFEXPORT_REQUESTED ) {
+        FilterConfigItem aItem( "Office.Common/Filter/PDF/Export/" );
+        sal_Bool aViewPDF = aItem.ReadBool( "ViewPDFAfterExport", sal_False );
+
+        if ( aViewPDF==sal_True ) {
+            uno::Reference<XSystemShellExecute> xSystemShellExecute(SystemShellExecute::create( ::comphelper::getProcessComponentContext() ) );
+            xSystemShellExecute->execute( aURL.GetMainURL( INetURLObject::NO_DECODE ), "", SystemShellExecuteFlags::URIS_ONLY );
+        }
+    }
+
     return bDialogUsed;
 }
 


More information about the Libreoffice-commits mailing list