summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--filter/source/xsltdialog/xmlfilterdialogcomponent.cxx26
-rw-r--r--filter/source/xsltdialog/xmlfiltersettingsdialog.cxx4
-rw-r--r--filter/source/xsltdialog/xmlfiltersettingsdialog.hxx2
3 files changed, 17 insertions, 15 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(
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
index 1f7f769c39ac..5ae90948e75c 100644
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
@@ -179,15 +179,13 @@ IMPL_LINK_NOARG(XMLFilterSettingsDialog, DoubleClickHdl_Impl, SvTreeListBox*, bo
return false;
}
-short XMLFilterSettingsDialog::Execute()
+void XMLFilterSettingsDialog::UpdateWindow()
{
m_pCtrlFilterList->GrabFocus();
disposeFilterList();
m_pFilterListBox->Clear();
initFilterList();
updateStates();
-
- return ModelessDialog::Execute();
}
void XMLFilterSettingsDialog::updateStates()
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx
index 816e75ac72bb..ff55a19f9b5a 100644
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx
@@ -92,7 +92,7 @@ public:
DECL_LINK(SelectionChangedHdl_Impl, SvTreeListBox*, void );
DECL_LINK(DoubleClickHdl_Impl, SvTreeListBox*, bool );
- virtual short Execute() override;
+ void UpdateWindow();
void onNew();
void onEdit();