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

Reply via email to