Kaydet (Commit) cabc14a3 authored tarafından Caolán McNamara's avatar Caolán McNamara

Resolves: tdf#122153 keep Execute for modal dialogs

and not modeless ones

cause you get one main loop running inside another, and everything
is running inside the modeless dialog main loop until it exits.

Change-Id: I45e92380288727669e287b62e84b815d5dc1960c
Reviewed-on: https://gerrit.libreoffice.org/65281
Tested-by: Jenkins
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst c58d4c19
...@@ -265,7 +265,6 @@ void SAL_CALL XMLFilterDialogComponent::queryTermination( const EventObject& /* ...@@ -265,7 +265,6 @@ void SAL_CALL XMLFilterDialogComponent::queryTermination( const EventObject& /*
mpDialog->Close(); mpDialog->Close();
} }
void SAL_CALL XMLFilterDialogComponent::notifyTermination( const EventObject& /* Event */ ) void SAL_CALL XMLFilterDialogComponent::notifyTermination( const EventObject& /* Event */ )
{ {
// we are going down, so dispose us! // we are going down, so dispose us!
...@@ -276,35 +275,41 @@ void SAL_CALL XMLFilterDialogComponent::disposing( const EventObject& /* Source ...@@ -276,35 +275,41 @@ void SAL_CALL XMLFilterDialogComponent::disposing( const EventObject& /* Source
{ {
} }
void SAL_CALL XMLFilterDialogComponent::setTitle( const OUString& /* _rTitle */ ) void SAL_CALL XMLFilterDialogComponent::setTitle( const OUString& /* _rTitle */ )
{ {
} }
sal_Int16 SAL_CALL XMLFilterDialogComponent::execute()
sal_Int16 SAL_CALL XMLFilterDialogComponent::execute( )
{ {
::SolarMutexGuard aGuard; ::SolarMutexGuard aGuard;
if( nullptr == mpDialog ) bool bLaunch = false;
if (!mpDialog)
{ {
Reference< XComponent > xComp( this ); Reference< XComponent > xComp( this );
if (mxParent.is()) if (mxParent.is())
mpDialog = VclPtr<XMLFilterSettingsDialog>::Create(VCLUnoHelper::GetWindow(mxParent), mxContext); mpDialog = VclPtr<XMLFilterSettingsDialog>::Create(VCLUnoHelper::GetWindow(mxParent), mxContext);
else else
mpDialog = VclPtr<XMLFilterSettingsDialog>::Create(nullptr, mxContext, Dialog::InitFlag::NoParent); 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; return 0;
} }
void SAL_CALL XMLFilterDialogComponent::initialize( const Sequence< Any >& aArguments ) void SAL_CALL XMLFilterDialogComponent::initialize( const Sequence< Any >& aArguments )
{ {
for(const Any& rArgument : aArguments) for(const Any& rArgument : aArguments)
...@@ -320,7 +325,6 @@ void SAL_CALL XMLFilterDialogComponent::initialize( const Sequence< Any >& aArgu ...@@ -320,7 +325,6 @@ void SAL_CALL XMLFilterDialogComponent::initialize( const Sequence< Any >& aArgu
} }
} }
extern "C" extern "C"
{ {
SAL_DLLPUBLIC_EXPORT void * xsltdlg_component_getFactory( SAL_DLLPUBLIC_EXPORT void * xsltdlg_component_getFactory(
......
...@@ -179,15 +179,13 @@ IMPL_LINK_NOARG(XMLFilterSettingsDialog, DoubleClickHdl_Impl, SvTreeListBox*, bo ...@@ -179,15 +179,13 @@ IMPL_LINK_NOARG(XMLFilterSettingsDialog, DoubleClickHdl_Impl, SvTreeListBox*, bo
return false; return false;
} }
short XMLFilterSettingsDialog::Execute() void XMLFilterSettingsDialog::UpdateWindow()
{ {
m_pCtrlFilterList->GrabFocus(); m_pCtrlFilterList->GrabFocus();
disposeFilterList(); disposeFilterList();
m_pFilterListBox->Clear(); m_pFilterListBox->Clear();
initFilterList(); initFilterList();
updateStates(); updateStates();
return ModelessDialog::Execute();
} }
void XMLFilterSettingsDialog::updateStates() void XMLFilterSettingsDialog::updateStates()
......
...@@ -92,7 +92,7 @@ public: ...@@ -92,7 +92,7 @@ public:
DECL_LINK(SelectionChangedHdl_Impl, SvTreeListBox*, void ); DECL_LINK(SelectionChangedHdl_Impl, SvTreeListBox*, void );
DECL_LINK(DoubleClickHdl_Impl, SvTreeListBox*, bool ); DECL_LINK(DoubleClickHdl_Impl, SvTreeListBox*, bool );
virtual short Execute() override; void UpdateWindow();
void onNew(); void onNew();
void onEdit(); void onEdit();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment