summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2013-03-05 11:34:53 +0200
committerStephan Bergmann <sbergman@redhat.com>2013-03-05 16:12:53 +0000
commit3554b3653049cb8fffa2a56ca0c9a2d8e972f5ec (patch)
treee5f222e09be3c1b90f9a1b94b84cf79152de2251
parentb3876e1dc9b05c7e0e02d7a03c372cc2600c7fad (diff)
fix for fdo#61801
... "crash on Tools - Options - LibreOffice - Personalization - Select Background Image" The root cause of this is my conversion of the UNO code to use the new-style FilePicker service constructor in commit 4b51374a7021d52f7f1be1861e2ee6a011b30ecd Unfortunately, the new-style service constructor will always call initialize(Sequence<Any>), which the old code did not do. And initialize does not like being called without any arguments. The cleanest fix for this is to simply remove the createDefault() service constructor method and make all the call sites explicitly choose the style of FilePicker dialog they want. As a bonus, this simplifies some of the call sites. Change-Id: I75f5e03cff4e39abe22cd9650a079ec78ab636c4 Reviewed-on: https://gerrit.libreoffice.org/2553 Reviewed-by: Kohei Yoshida <kohei.yoshida@gmail.com> Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
-rw-r--r--cui/source/options/personalization.cxx3
-rw-r--r--offapi/com/sun/star/ui/dialogs/FilePicker.idl1
-rw-r--r--sc/source/ui/xmlsource/xmlsourcedlg.cxx3
-rw-r--r--svtools/source/control/filectrl2.cxx3
-rw-r--r--vcl/win/source/gdi/salprn.cxx30
5 files changed, 17 insertions, 23 deletions
diff --git a/cui/source/options/personalization.cxx b/cui/source/options/personalization.cxx
index f1ba9801aac9..86e7fff7be6c 100644
--- a/cui/source/options/personalization.cxx
+++ b/cui/source/options/personalization.cxx
@@ -25,6 +25,7 @@
#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
#include <com/sun/star/ui/dialogs/FilePicker.hpp>
+#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
@@ -211,7 +212,7 @@ IMPL_LINK( SvxPersonalizationTabPage, SelectBackground, PushButton*, /*pButton*/
{
uno::Reference< uno::XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
- uno::Reference< ui::dialogs::XFilePicker3 > xFilePicker = ui::dialogs::FilePicker::createDefault(xContext);
+ uno::Reference< ui::dialogs::XFilePicker3 > xFilePicker = ui::dialogs::FilePicker::createWithMode(xContext, ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE);
xFilePicker->setMultiSelectionMode( false );
diff --git a/offapi/com/sun/star/ui/dialogs/FilePicker.idl b/offapi/com/sun/star/ui/dialogs/FilePicker.idl
index 39cd65116c12..46367481381b 100644
--- a/offapi/com/sun/star/ui/dialogs/FilePicker.idl
+++ b/offapi/com/sun/star/ui/dialogs/FilePicker.idl
@@ -38,7 +38,6 @@ module com { module sun { module star { module ui { module dialogs {
published service FilePicker : XFilePicker3
{
- createDefault();
/** Provides the ability to choose between different custom templates that
do extend the subset of common controls a FilePicker usually supports.
diff --git a/sc/source/ui/xmlsource/xmlsourcedlg.cxx b/sc/source/ui/xmlsource/xmlsourcedlg.cxx
index 9a366d759156..838b7d169f15 100644
--- a/sc/source/ui/xmlsource/xmlsourcedlg.cxx
+++ b/sc/source/ui/xmlsource/xmlsourcedlg.cxx
@@ -27,6 +27,7 @@
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/ui/dialogs/FilePicker.hpp>
#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
+#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
using namespace com::sun::star;
@@ -177,7 +178,7 @@ void ScXMLSourceDlg::SelectSourceFile()
if (!xServiceMgr.is())
return;
- uno::Reference<ui::dialogs::XFilePicker3> xFilePicker = ui::dialogs::FilePicker::createDefault( comphelper::getComponentContext(xServiceMgr) );
+ uno::Reference<ui::dialogs::XFilePicker3> xFilePicker = ui::dialogs::FilePicker::createWithMode( comphelper::getComponentContext(xServiceMgr), ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE );
if (maSrcPath.isEmpty())
// Use default path.
diff --git a/svtools/source/control/filectrl2.cxx b/svtools/source/control/filectrl2.cxx
index cb48f4242c41..bf69f32cc55b 100644
--- a/svtools/source/control/filectrl2.cxx
+++ b/svtools/source/control/filectrl2.cxx
@@ -21,6 +21,7 @@
// this file contains code from filectrl.cxx which needs to be compiled with enabled exception hanling
#include <svtools/filectrl.hxx>
#include <com/sun/star/ui/dialogs/FilePicker.hpp>
+#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
#include <comphelper/processfactory.hxx>
#include <tools/urlobj.hxx>
#include <osl/file.h>
@@ -37,7 +38,7 @@ void FileControl::ImplBrowseFile( )
XubString aNewText;
Reference< XComponentContext > xContext = comphelper::getProcessComponentContext();
- Reference < dialogs::XFilePicker3 > xFilePicker = dialogs::FilePicker::createDefault( xContext );
+ Reference < dialogs::XFilePicker3 > xFilePicker = dialogs::FilePicker::createWithMode( xContext, dialogs::TemplateDescription::FILEOPEN_SIMPLE );
// transform the system notation text into a file URL
::rtl::OUString sSystemNotation = GetText(), sFileURL;
oslFileError nError = osl_getFileURLFromSystemPath( sSystemNotation.pData, &sFileURL.pData );
diff --git a/vcl/win/source/gdi/salprn.cxx b/vcl/win/source/gdi/salprn.cxx
index 57440cd1b064..d1904a7b5a53 100644
--- a/vcl/win/source/gdi/salprn.cxx
+++ b/vcl/win/source/gdi/salprn.cxx
@@ -1601,27 +1601,19 @@ sal_Bool WinSalPrinter::StartJob( const rtl::OUString* pFileName,
{
uno::Reference< uno::XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
- uno::Reference< XFilePicker3 > xFilePicker = FilePicker::createDefault(xContext);
+ uno::Reference< XFilePicker3 > xFilePicker = FilePicker::createWithMode(xContext, TemplateDescription::FILESAVE_SIMPLE);
- uno::Reference< XInitialization > xInit( xFilePicker, UNO_QUERY );
- uno::Reference< XFilterManager > xFilterMgr( xFilePicker, UNO_QUERY );
- if( xInit.is() && xFilePicker.is() && xFilterMgr.is() )
+ if( xFilePicker->execute() == ExecutableDialogResults::OK )
{
- Sequence< Any > aServiceType( 1 );
- aServiceType[0] <<= TemplateDescription::FILESAVE_SIMPLE;
- xInit->initialize( aServiceType );
- if( xFilePicker->execute() == ExecutableDialogResults::OK )
- {
- Sequence< OUString > aPathSeq( xFilePicker->getFiles() );
- INetURLObject aObj( aPathSeq[0] );
- // we're using ansi calls (StartDocA) so convert the string
- aOutFileName = aObj.PathToFileName();
- }
- else
- {
- mnError = SAL_PRINTER_ERROR_ABORT;
- return FALSE;
- }
+ Sequence< OUString > aPathSeq( xFilePicker->getFiles() );
+ INetURLObject aObj( aPathSeq[0] );
+ // we're using ansi calls (StartDocA) so convert the string
+ aOutFileName = aObj.PathToFileName();
+ }
+ else
+ {
+ mnError = SAL_PRINTER_ERROR_ABORT;
+ return FALSE;
}
}