filter/source/xsltdialog/xmlfilterdialogcomponent.cxx | 26 ++++++++++-------- filter/source/xsltdialog/xmlfiltersettingsdialog.cxx | 4 -- filter/source/xsltdialog/xmlfiltersettingsdialog.hxx | 2 - 3 files changed, 17 insertions(+), 15 deletions(-)
New commits: commit 2421b42c006e1a9c9059c8a256685d2124f4e396 Author: Caolán McNamara <[email protected]> AuthorDate: Mon Dec 17 16:53:35 2018 +0000 Commit: Caolán McNamara <[email protected]> CommitDate: Tue Dec 18 09:56:50 2018 +0100 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/65282 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> (cherry picked from commit c821da3ecc3c309be2ec2db204a4c853b53fa979) Reviewed-on: https://gerrit.libreoffice.org/65292 diff --git a/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx b/filter/source/xsltdialog/xmlfilterdialogcomponent.cxx index 0e55cd318141..31e69c3ec0e9 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 5ef80ab68062..d54ee2376305 100644 --- a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx +++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx @@ -177,15 +177,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 072c5d4542a5..7ca7d432582d 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(); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
