summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Monastirsky <momonasmon@gmail.com>2013-11-04 14:06:10 +0200
committerCaolán McNamara <caolanm@redhat.com>2013-11-04 07:52:14 -0600
commit7722a5906d8f6765395205f5074f480ad365aa19 (patch)
tree46f9055432bd18414350bec0d4fe3ddc99907538
parent9841ae6565c1b0b16ba4f46cce56c478ce7e900b (diff)
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@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--filter/source/pdf/pdffilter.cxx13
-rw-r--r--sfx2/source/doc/guisaveas.cxx16
2 files changed, 16 insertions, 13 deletions
diff --git a/filter/source/pdf/pdffilter.cxx b/filter/source/pdf/pdffilter.cxx
index 67b4bdbb67f9..092cad6a3f26 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 79af8ed1b006..ddf8e07f347d 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;
}