diff options
Diffstat (limited to 'filter/source/xsltdialog/xmlfilterdialogcomponent.cxx')
-rw-r--r-- | filter/source/xsltdialog/xmlfilterdialogcomponent.cxx | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx b/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx index ffa2eebdcf7b..9b5dd734002f 100644 --- a/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx +++ b/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx @@ -265,7 +265,6 @@ void SAL_CALL XMLFilterDialogComponent::queryTermination( const EventObject& /* mpDialog->Close(); } - void SAL_CALL XMLFilterDialogComponent::notifyTermination( const EventObject& /* Event */ ) { // we are going down, so dispose us! @@ -276,35 +275,41 @@ void SAL_CALL XMLFilterDialogComponent::disposing( const EventObject& /* Source { } - void SAL_CALL XMLFilterDialogComponent::setTitle( const OUString& /* _rTitle */ ) { } - -sal_Int16 SAL_CALL XMLFilterDialogComponent::execute( ) +sal_Int16 SAL_CALL XMLFilterDialogComponent::execute() { ::SolarMutexGuard aGuard; - if( nullptr == mpDialog ) + bool bLaunch = false; + if (!mpDialog) { Reference< XComponent > xComp( this ); if (mxParent.is()) mpDialog = VclPtr<XMLFilterSettingsDialog>::Create(VCLUnoHelper::GetWindow(mxParent), mxContext); else mpDialog = VclPtr<XMLFilterSettingsDialog>::Create(nullptr, mxContext, Dialog::InitFlag::NoParent); - mpDialog->Execute(); + bLaunch = true; } - else if( !mpDialog->IsVisible() ) + + mpDialog->UpdateWindow(); + + if (!bLaunch) { - mpDialog->Execute(); + mpDialog->ToTop(); + return 0; } - mpDialog->ToTop(); + + mpDialog->StartExecuteAsync([this](sal_Int32) + { + mpDialog.reset(); + }); return 0; } - void SAL_CALL XMLFilterDialogComponent::initialize( const Sequence< Any >& aArguments ) { for(const Any& rArgument : aArguments) @@ -320,7 +325,6 @@ void SAL_CALL XMLFilterDialogComponent::initialize( const Sequence< Any >& aArgu } } - extern "C" { SAL_DLLPUBLIC_EXPORT void * xsltdlg_component_getFactory( |