sc/source/ui/attrdlg/scdlgfact.cxx |   35 -------------------
 sc/source/ui/attrdlg/scdlgfact.hxx |   39 ++++++++-------------
 sc/source/ui/docshell/arealink.cxx |   30 ++++++----------
 sc/source/ui/docshell/docsh4.cxx   |   23 +++---------
 sc/source/ui/drawfunc/drawsh.cxx   |   57 ++++++++++++-------------------
 sc/source/ui/pagedlg/tphfedit.cxx  |   27 ++++++--------
 sc/source/ui/view/cellsh1.cxx      |   67 ++++++++++++-------------------------
 sc/source/ui/view/cellsh2.cxx      |   10 +----
 sc/source/ui/view/gridwin2.cxx     |   42 +++++++++--------------
 sc/source/ui/view/pivotsh.cxx      |   42 +++++++++--------------
 sc/source/ui/view/tabvwshb.cxx     |    9 +---
 11 files changed, 133 insertions(+), 248 deletions(-)

New commits:
commit fc1b2a0ab2ecddaeead680aee80a49109082a47b
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Tue Mar 26 10:59:48 2024 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Tue Mar 26 17:16:08 2024 +0100

    tdf#160338 Calc freeze on Text Attribute dialog
    
    This reverts
        commit 76e9023c8abc823447b1128056e55238f90da8d6
        Author: Noel Grandin <noelgran...@gmail.com>
        Date:   Mon Jan 22 08:36:28 2024 +0200
        convert more calc dialogs to async
    
    I fixed some lifetime issues, but even once that was happy,
    the Text Attributes dialog was not receiving mouse events
    properly, something else is unhappy when we mix async
    and modal dialogs.
    
    Change-Id: I4a35d886895c65af2085b606ff5c7a7c02fb5671
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165305
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx 
b/sc/source/ui/attrdlg/scdlgfact.cxx
index bd8a77b523e8..4fe36f303c57 100644
--- a/sc/source/ui/attrdlg/scdlgfact.cxx
+++ b/sc/source/ui/attrdlg/scdlgfact.cxx
@@ -153,11 +153,6 @@ short AbstractScDataFormDlg_Impl::Execute()
     return m_xDlg->run();
 }
 
-bool AbstractScDataFormDlg_Impl::StartExecuteAsync(AsyncContext& rCtx)
-{
-    return ScDataFormDlg::runAsync(m_xDlg, rCtx.maEndDialogFn);
-}
-
 BitmapEx AbstractScDataFormDlg_Impl::createScreenshot() const
 {
     VclPtr<VirtualDevice> xDialogSurface(m_xDlg->getDialog()->screenshot());
@@ -260,11 +255,6 @@ short AbstractScPivotFilterDlg_Impl::Execute()
     return m_xDlg->run();
 }
 
-bool 
AbstractScPivotFilterDlg_Impl::StartExecuteAsync(VclAbstractDialog::AsyncContext
 &rCtx)
-{
-    return weld::DialogController::runAsync(m_xDlg, rCtx.maEndDialogFn);
-}
-
 short AbstractScDPFunctionDlg_Impl::Execute()
 {
     return m_xDlg->run();
@@ -290,41 +280,21 @@ short AbstractScDPNumGroupDlg_Impl::Execute()
     return m_xDlg->run();
 }
 
-bool 
AbstractScDPNumGroupDlg_Impl::StartExecuteAsync(VclAbstractDialog::AsyncContext 
&rCtx)
-{
-    return weld::DialogController::runAsync(m_xDlg, rCtx.maEndDialogFn);
-}
-
 short AbstractScDPDateGroupDlg_Impl::Execute()
 {
     return m_xDlg->run();
 }
 
-bool 
AbstractScDPDateGroupDlg_Impl::StartExecuteAsync(VclAbstractDialog::AsyncContext
 &rCtx)
-{
-    return weld::DialogController::runAsync(m_xDlg, rCtx.maEndDialogFn);
-}
-
 short AbstractScDPShowDetailDlg_Impl::Execute()
 {
     return m_xDlg->run();
 }
 
-bool AbstractScDPShowDetailDlg_Impl::StartExecuteAsync(AsyncContext& rCtx)
-{
-    return ScDPShowDetailDlg::runAsync(m_xDlg, rCtx.maEndDialogFn);
-}
-
 short AbstractScNewScenarioDlg_Impl::Execute()
 {
     return m_xDlg->run();
 }
 
-bool AbstractScNewScenarioDlg_Impl::StartExecuteAsync(AsyncContext& rCtx)
-{
-    return ScNewScenarioDlg::runAsync(m_xDlg, rCtx.maEndDialogFn);
-}
-
 short AbstractScShowTabDlg_Impl::Execute()
 {
     return m_xDlg->run();
@@ -379,11 +349,6 @@ short AbstractScLinkedAreaDlg_Impl::Execute()
     return m_xDlg->run();
 }
 
-bool AbstractScLinkedAreaDlg_Impl::StartExecuteAsync(AsyncContext& rCtx)
-{
-    return ScLinkedAreaDlg::runAsync(m_xDlg, rCtx.maEndDialogFn);
-}
-
 void AbstractScImportAsciiDlg_Impl::GetOptions( ScAsciiOptions& rOpt )
 {
     m_xDlg->GetOptions( rOpt );
diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx 
b/sc/source/ui/attrdlg/scdlgfact.hxx
index aab8cf1cc107..276bffd63195 100644
--- a/sc/source/ui/attrdlg/scdlgfact.hxx
+++ b/sc/source/ui/attrdlg/scdlgfact.hxx
@@ -177,7 +177,7 @@ class AbstractScDeleteCellDlg_Impl : public 
AbstractScDeleteCellDlg
 {
     std::shared_ptr<ScDeleteCellDlg> m_xDlg;
 public:
-    explicit AbstractScDeleteCellDlg_Impl(std::shared_ptr<ScDeleteCellDlg> p)
+    explicit AbstractScDeleteCellDlg_Impl(std::unique_ptr<ScDeleteCellDlg> p)
         : m_xDlg(std::move(p))
     {
     }
@@ -193,14 +193,13 @@ public:
 //for dataform
 class AbstractScDataFormDlg_Impl : public AbstractScDataFormDlg
 {
-    std::shared_ptr<ScDataFormDlg> m_xDlg;
+    std::unique_ptr<ScDataFormDlg> m_xDlg;
 public:
-    explicit AbstractScDataFormDlg_Impl(std::shared_ptr<ScDataFormDlg> p)
+    explicit AbstractScDataFormDlg_Impl(std::unique_ptr<ScDataFormDlg> p)
         : m_xDlg(std::move(p))
     {
     }
     virtual short Execute() override;
-    virtual bool  StartExecuteAsync(AsyncContext& rCtx) override;
 
     // screenshotting
     virtual BitmapEx createScreenshot() const override;
@@ -260,7 +259,7 @@ class AbstractScInsertCellDlg_Impl : public 
AbstractScInsertCellDlg
 {
     std::shared_ptr<ScInsertCellDlg> m_xDlg;
 public:
-    explicit AbstractScInsertCellDlg_Impl(std::shared_ptr<ScInsertCellDlg> p)
+    explicit AbstractScInsertCellDlg_Impl(std::unique_ptr<ScInsertCellDlg> p)
         : m_xDlg(std::move(p))
     {
     }
@@ -331,15 +330,14 @@ public:
 
 class AbstractScLinkedAreaDlg_Impl : public AbstractScLinkedAreaDlg
 {
-    std::shared_ptr<ScLinkedAreaDlg> m_xDlg;
+    std::unique_ptr<ScLinkedAreaDlg> m_xDlg;
 public:
-    explicit AbstractScLinkedAreaDlg_Impl(std::shared_ptr<ScLinkedAreaDlg> p)
+    explicit AbstractScLinkedAreaDlg_Impl(std::unique_ptr<ScLinkedAreaDlg> p)
         : m_xDlg(std::move(p))
     {
     }
     virtual                 ~AbstractScLinkedAreaDlg_Impl() override;
     virtual short           Execute() override;
-    virtual bool            StartExecuteAsync(AsyncContext& rCtx) override;
     virtual void            InitFromOldLink( const OUString& rFile, const 
OUString& rFilter,
                                         const OUString& rOptions, const 
OUString& rSource,
                                         sal_Int32 nRefreshDelaySeconds ) 
override;
@@ -416,14 +414,13 @@ public:
 
 class AbstractScPivotFilterDlg_Impl : public AbstractScPivotFilterDlg
 {
-    std::shared_ptr<ScPivotFilterDlg> m_xDlg;
+    std::unique_ptr<ScPivotFilterDlg> m_xDlg;
 public:
-    explicit AbstractScPivotFilterDlg_Impl(std::shared_ptr<ScPivotFilterDlg> p)
+    explicit AbstractScPivotFilterDlg_Impl(std::unique_ptr<ScPivotFilterDlg> p)
         : m_xDlg(std::move(p))
     {
     }
     virtual short Execute() override;
-    virtual bool  StartExecuteAsync(AsyncContext& rCtx) override;
     virtual const ScQueryItem&  GetOutputItem() override;
 };
 
@@ -459,54 +456,50 @@ public:
 
 class AbstractScDPNumGroupDlg_Impl : public AbstractScDPNumGroupDlg
 {
-    std::shared_ptr<ScDPNumGroupDlg> m_xDlg;
+    std::unique_ptr<ScDPNumGroupDlg> m_xDlg;
 public:
-    explicit AbstractScDPNumGroupDlg_Impl(std::shared_ptr<ScDPNumGroupDlg> p)
+    explicit AbstractScDPNumGroupDlg_Impl(std::unique_ptr<ScDPNumGroupDlg> p)
         : m_xDlg(std::move(p))
     {
     }
     virtual short Execute() override;
-    virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) 
override;
     virtual ScDPNumGroupInfo GetGroupInfo() const override;
 };
 
 class AbstractScDPDateGroupDlg_Impl : public AbstractScDPDateGroupDlg
 {
-    std::shared_ptr<ScDPDateGroupDlg> m_xDlg;
+    std::unique_ptr<ScDPDateGroupDlg> m_xDlg;
 public:
-    explicit AbstractScDPDateGroupDlg_Impl(std::shared_ptr<ScDPDateGroupDlg> p)
+    explicit AbstractScDPDateGroupDlg_Impl(std::unique_ptr<ScDPDateGroupDlg> p)
         : m_xDlg(std::move(p))
     {
     }
     virtual short Execute() override;
-    virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) 
override;
     virtual ScDPNumGroupInfo GetGroupInfo() const override;
     virtual sal_Int32 GetDatePart() const override;
 };
 
 class AbstractScDPShowDetailDlg_Impl : public AbstractScDPShowDetailDlg
 {
-    std::shared_ptr<ScDPShowDetailDlg> m_xDlg;
+    std::unique_ptr<ScDPShowDetailDlg> m_xDlg;
 public:
-    explicit AbstractScDPShowDetailDlg_Impl(std::shared_ptr<ScDPShowDetailDlg> 
p)
+    explicit AbstractScDPShowDetailDlg_Impl(std::unique_ptr<ScDPShowDetailDlg> 
p)
         : m_xDlg(std::move(p))
     {
     }
     virtual short Execute() override;
-    virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) 
override;
     virtual OUString GetDimensionName() const override;
 };
 
 class AbstractScNewScenarioDlg_Impl : public AbstractScNewScenarioDlg
 {
-    std::shared_ptr<ScNewScenarioDlg> m_xDlg;
+    std::unique_ptr<ScNewScenarioDlg> m_xDlg;
 public:
-    explicit AbstractScNewScenarioDlg_Impl(std::shared_ptr<ScNewScenarioDlg> p)
+    explicit AbstractScNewScenarioDlg_Impl(std::unique_ptr<ScNewScenarioDlg> p)
         : m_xDlg(std::move(p))
     {
     }
     virtual short           Execute() override;
-    virtual bool            StartExecuteAsync(AsyncContext& rCtx) override;
 
     virtual void SetScenarioData( const OUString& rName, const OUString& 
rComment,
                             const Color& rColor, ScScenarioFlags nFlags ) 
override;
diff --git a/sc/source/ui/docshell/arealink.cxx 
b/sc/source/ui/docshell/arealink.cxx
index e1226c01579d..35785cda3724 100644
--- a/sc/source/ui/docshell/arealink.cxx
+++ b/sc/source/ui/docshell/arealink.cxx
@@ -77,25 +77,19 @@ void ScAreaLink::Edit(weld::Window* pParent, const 
Link<SvBaseLink&,void>& /* rE
     //  use own dialog instead of SvBaseLink::Edit...
     ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
 
-    VclPtr<AbstractScLinkedAreaDlg> 
pDlg(pFact->CreateScLinkedAreaDlg(pParent));
+    ScopedVclPtr<AbstractScLinkedAreaDlg> 
pDlg(pFact->CreateScLinkedAreaDlg(pParent));
     pDlg->InitFromOldLink( aFileName, aFilterName, aOptions, aSourceArea, 
GetRefreshDelaySeconds() );
-    pDlg->StartExecuteAsync(
-        [this, pDlg] (sal_Int32 nResult)->void
-        {
-            if (nResult == RET_OK)
-            {
-                aOptions = pDlg->GetOptions();
-                Refresh( pDlg->GetURL(), pDlg->GetFilter(),
-                         pDlg->GetSource(), pDlg->GetRefreshDelaySeconds() );
-
-                //  copy source data from members (set in Refresh) into link 
name for dialog
-                OUString aNewLinkName;
-                sfx2::MakeLnkName( aNewLinkName, nullptr, aFileName, 
aSourceArea, &aFilterName );
-                SetName( aNewLinkName );
-            }
-            pDlg->disposeOnce();
-        }
-    );
+    if ( pDlg->Execute() == RET_OK )
+    {
+        aOptions = pDlg->GetOptions();
+        Refresh( pDlg->GetURL(), pDlg->GetFilter(),
+                 pDlg->GetSource(), pDlg->GetRefreshDelaySeconds() );
+
+        //  copy source data from members (set in Refresh) into link name for 
dialog
+        OUString aNewLinkName;
+        sfx2::MakeLnkName( aNewLinkName, nullptr, aFileName, aSourceArea, 
&aFilterName );
+        SetName( aNewLinkName );
+    }
 }
 
 ::sfx2::SvBaseLink::UpdateResult ScAreaLink::DataChanged(
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 9bf7c1beb7b2..741d60cd5c47 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -847,23 +847,14 @@ void ScDocShell::Execute( SfxRequest& rReq )
 
                                 ScAbstractDialogFactory* pFact = 
ScAbstractDialogFactory::Create();
 
-                                VclPtr<AbstractScNewScenarioDlg> 
pNewDlg(pFact->CreateScNewScenarioDlg(GetActiveDialogParent(), aName, true, 
bSheetProtected));
+                                ScopedVclPtr<AbstractScNewScenarioDlg> 
pNewDlg(pFact->CreateScNewScenarioDlg(GetActiveDialogParent(), aName, true, 
bSheetProtected));
                                 pNewDlg->SetScenarioData( aName, aComment, 
aColor, nFlags );
-                                pNewDlg->StartExecuteAsync(
-                                    [this, pNewDlg, nTab] (sal_Int32 
nResult)->void
-                                    {
-                                        if (nResult == RET_OK)
-                                        {
-                                            OUString aName2, aComment2;
-                                            Color aColor2;
-                                            ScScenarioFlags nFlags2;
-                                            pNewDlg->GetScenarioData( aName2, 
aComment2, aColor2, nFlags2 );
-                                            ModifyScenario( nTab, aName2, 
aComment2, aColor2, nFlags2 );
-                                        }
-                                        pNewDlg->disposeOnce();
-                                    }
-                                );
-                                rReq.Done();
+                                if ( pNewDlg->Execute() == RET_OK )
+                                {
+                                    pNewDlg->GetScenarioData( aName, aComment, 
aColor, nFlags );
+                                    ModifyScenario( nTab, aName, aComment, 
aColor, nFlags );
+                                    rReq.Done();
+                                }
                             }
                         }
                     }
diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx
index c520f8cb931d..ff2fc7c89ab6 100644
--- a/sc/source/ui/drawfunc/drawsh.cxx
+++ b/sc/source/ui/drawfunc/drawsh.cxx
@@ -557,26 +557,20 @@ void ScDrawShell::ExecuteTextAttrDlg( SfxRequest& rReq )
 
     SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     weld::Window* pWin = rViewData.GetDialogParent();
-    VclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateTextTabDialog(pWin, 
&aNewAttr, pView));
+    ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateTextTabDialog(pWin, 
&aNewAttr, pView));
 
-    auto xRequest = std::make_shared<SfxRequest>(rReq);
-    rReq.Ignore(); // the 'old' request is not relevant any more
-    pDlg->StartExecuteAsync(
-        [pDlg, xRequest=std::move(xRequest), bHasMarked, pView] (sal_Int32 
nResult)->void
-        {
-            if ( RET_OK == nResult )
-            {
-                if ( bHasMarked )
-                    pView->SetAttributes( *pDlg->GetOutputItemSet() );
-                else
-                    pView->SetDefaultAttr( *pDlg->GetOutputItemSet(), false );
+    sal_uInt16 nResult = pDlg->Execute();
 
-                pView->InvalidateAttribs();
-                xRequest->Done();
-            }
-            pDlg->disposeOnce();
-        }
-    );
+    if ( RET_OK == nResult )
+    {
+        if ( bHasMarked )
+            pView->SetAttributes( *pDlg->GetOutputItemSet() );
+        else
+            pView->SetDefaultAttr( *pDlg->GetOutputItemSet(), false );
+
+        pView->InvalidateAttribs();
+        rReq.Done();
+    }
 }
 
 void ScDrawShell::ExecuteMeasureDlg( SfxRequest& rReq )
@@ -590,25 +584,20 @@ void ScDrawShell::ExecuteMeasureDlg( SfxRequest& rReq )
 
     SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
     weld::Window* pWin = rViewData.GetDialogParent();
-    VclPtr<SfxAbstractDialog> pDlg(pFact->CreateSfxDialog(pWin, aNewAttr, 
pView, RID_SVXPAGE_MEASURE));
+    ScopedVclPtr<SfxAbstractDialog> pDlg(pFact->CreateSfxDialog(pWin, 
aNewAttr, pView, RID_SVXPAGE_MEASURE));
 
-    pDlg->StartExecuteAsync(
-        [pDlg, bHasMarked, pView] (sal_Int32 nResult)->void
-        {
-            if (nResult == RET_OK)
-            {
-                if ( bHasMarked )
-                    pView->SetAttrToMarked( *pDlg->GetOutputItemSet(), false );
-                else
-                    pView->SetDefaultAttr( *pDlg->GetOutputItemSet(), false );
+    sal_uInt16 nResult = pDlg->Execute();
 
-                pView->InvalidateAttribs();
-            }
-            pDlg->disposeOnce();
-        }
-    );
+    if ( RET_OK == nResult )
+    {
+        if ( bHasMarked )
+            pView->SetAttrToMarked( *pDlg->GetOutputItemSet(), false );
+        else
+            pView->SetDefaultAttr( *pDlg->GetOutputItemSet(), false );
 
-    rReq.Done();
+        pView->InvalidateAttribs();
+        rReq.Done();
+    }
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/pagedlg/tphfedit.cxx 
b/sc/source/ui/pagedlg/tphfedit.cxx
index ffcdd167ae32..617f2208a9f9 100644
--- a/sc/source/ui/pagedlg/tphfedit.cxx
+++ b/sc/source/ui/pagedlg/tphfedit.cxx
@@ -189,26 +189,21 @@ void ScEditWindow::SetCharAttributes()
 
     if(pTabViewSh!=nullptr) pTabViewSh->SetInFormatDialog(true);
 
-    std::shared_ptr<SfxItemSet> xSet = std::make_shared<SfxItemSet>( 
m_xEditView->GetAttribs() );
+    SfxItemSet aSet( m_xEditView->GetAttribs() );
 
     ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
 
-    VclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateScCharDlg(
-        mpDialog,  xSet.get(), pDocSh, false));
+    ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateScCharDlg(
+        mpDialog,  &aSet, pDocSh, false));
     pDlg->SetText( ScResId( STR_TEXTATTRS ) );
-    pDlg->StartExecuteAsync(
-        [this, pDlg, pTabViewSh, xSet] (sal_Int32 nResult)->void
-        {
-            if (nResult == RET_OK)
-            {
-                xSet->ClearItem();
-                xSet->Put( *pDlg->GetOutputItemSet() );
-                m_xEditView->SetAttribs( *xSet );
-            }
-            pDlg->disposeOnce();
-            if(pTabViewSh!=nullptr) pTabViewSh->SetInFormatDialog(false);
-        }
-    );
+    if ( pDlg->Execute() == RET_OK )
+    {
+        aSet.ClearItem();
+        aSet.Put( *pDlg->GetOutputItemSet() );
+        m_xEditView->SetAttribs( aSet );
+    }
+
+    if(pTabViewSh!=nullptr) pTabViewSh->SetInFormatDialog(false);
 }
 
 bool ScEditWindow::KeyInput( const KeyEvent& rKEvt )
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index 4892147c55f9..ac70ef49ae14 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -1213,19 +1213,13 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                     if ( pTabViewShell->HasSelectionForDrillDown( nOrientation 
) )
                     {
                         ScAbstractDialogFactory* pFact = 
ScAbstractDialogFactory::Create();
-                        VclPtr<AbstractScDPShowDetailDlg> pDlg( 
pFact->CreateScDPShowDetailDlg(
+                        ScopedVclPtr<AbstractScDPShowDetailDlg> pDlg( 
pFact->CreateScDPShowDetailDlg(
                             pTabViewShell->GetFrameWeld(), *pDPObj, 
nOrientation ) );
-                        pDlg->StartExecuteAsync(
-                            [pDlg, pTabViewShell] (sal_Int32 nResult)->void
-                            {
-                                if (nResult == RET_OK)
-                                {
-                                    OUString aNewDimName( 
pDlg->GetDimensionName() );
-                                    pTabViewShell->SetDataPilotDetails( true, 
&aNewDimName );
-                                }
-                                pDlg->disposeOnce();
-                            }
-                        );
+                        if ( pDlg->Execute() == RET_OK )
+                        {
+                            OUString aNewDimName( pDlg->GetDimensionName() );
+                            pTabViewShell->SetDataPilotDetails( true, 
&aNewDimName );
+                        }
                     }
                     else if ( !pDPObj->IsServiceData() &&
                                pDPObj->GetDataFieldPositionData(
@@ -1258,31 +1252,22 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                     {
                         ScAbstractDialogFactory* pFact = 
ScAbstractDialogFactory::Create();
                         const Date& rNullDate( 
GetViewData().GetDocument().GetFormatTable()->GetNullDate() );
-                        VclPtr<AbstractScDPDateGroupDlg> pDlg( 
pFact->CreateScDPDateGroupDlg(
+                        ScopedVclPtr<AbstractScDPDateGroupDlg> pDlg( 
pFact->CreateScDPDateGroupDlg(
                             pTabViewShell->GetFrameWeld(),
                             aNumInfo, nParts, rNullDate ) );
-                        pDlg->StartExecuteAsync(
-                            [pDlg, pTabViewShell] (sal_Int32 nResult)->void
-                            {
-                                if (nResult == RET_OK)
-                                    pTabViewShell->DateGroupDataPilot( 
pDlg->GetGroupInfo(), pDlg->GetDatePart() );
-                                pDlg->disposeOnce();
-                            }
-                        );
+                        if( pDlg->Execute() == RET_OK )
+                        {
+                            aNumInfo = pDlg->GetGroupInfo();
+                            pTabViewShell->DateGroupDataPilot( aNumInfo, 
pDlg->GetDatePart() );
+                        }
                     }
                     else if ( pTabViewShell->HasSelectionForNumGroup( aNumInfo 
) )
                     {
                         ScAbstractDialogFactory* pFact = 
ScAbstractDialogFactory::Create();
-                        VclPtr<AbstractScDPNumGroupDlg> pDlg( 
pFact->CreateScDPNumGroupDlg(
+                        ScopedVclPtr<AbstractScDPNumGroupDlg> pDlg( 
pFact->CreateScDPNumGroupDlg(
                             pTabViewShell->GetFrameWeld(), aNumInfo ) );
-                        pDlg->StartExecuteAsync(
-                            [pDlg, pTabViewShell] (sal_Int32 nResult)->void
-                            {
-                                if (nResult == RET_OK)
-                                    pTabViewShell->NumGroupDataPilot( 
pDlg->GetGroupInfo() );
-                                pDlg->disposeOnce();
-                            }
-                        );
+                        if( pDlg->Execute() == RET_OK )
+                            pTabViewShell->NumGroupDataPilot( 
pDlg->GetGroupInfo() );
                     }
                     else
                         pTabViewShell->GroupDataPilot();
@@ -1734,20 +1719,14 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                     ScAddress aCellPos(nPosX, nPosY, GetViewData().GetTabNo());
                     auto pObj = 
std::make_shared<ScImportExport>(GetViewData().GetDocument(), aCellPos);
                     pObj->SetOverwriting(true);
-                    pDlg->StartExecuteAsync(
-                        [pDlg, pObj, sStrBuffer, format] (sal_Int32 
nResult)->void
-                        {
-                            if (nResult)
-                            {
-                                ScAsciiOptions aOptions;
-                                pDlg->GetOptions(aOptions);
-                                pDlg->SaveParameters();
-                                pObj->SetExtOptions(aOptions);
-                                pObj->ImportString(sStrBuffer, format);
-                            }
-                            pDlg->disposeOnce();
-                        }
-                    );
+                    if (pDlg->Execute()) {
+                        ScAsciiOptions aOptions;
+                        pDlg->GetOptions(aOptions);
+                        pDlg->SaveParameters();
+                        pObj->SetExtOptions(aOptions);
+                        pObj->ImportString(sStrBuffer, format);
+                    }
+                    pDlg->disposeOnce();
                     rReq.SetReturnValue(SfxInt16Item(nSlot, 1)); // 1 = 
success, 0 = fail
                     rReq.Done();
                 }
diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx
index 5fbde9ca526f..f4a932fff402 100644
--- a/sc/source/ui/view/cellsh2.cxx
+++ b/sc/source/ui/view/cellsh2.cxx
@@ -368,14 +368,10 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
 
                 ScAbstractDialogFactory* pFact = 
ScAbstractDialogFactory::Create();
 
-                VclPtr<AbstractScDataFormDlg> pDlg(pFact->CreateScDataFormDlg(
+                ScopedVclPtr<AbstractScDataFormDlg> 
pDlg(pFact->CreateScDataFormDlg(
                     pTabViewShell->GetFrameWeld(), pTabViewShell));
-                pDlg->StartExecuteAsync(
-                    [pDlg] (sal_Int32 /*nResult*/)->void
-                    {
-                        pDlg->disposeOnce();
-                    }
-                );
+
+                pDlg->Execute();
 
                 rReq.Done();
             }
diff --git a/sc/source/ui/view/gridwin2.cxx b/sc/source/ui/view/gridwin2.cxx
index c6af2c2cd74f..01f5f39dd7d3 100644
--- a/sc/source/ui/view/gridwin2.cxx
+++ b/sc/source/ui/view/gridwin2.cxx
@@ -150,9 +150,10 @@ bool ScGridWindow::DoAutoFilterButton( SCCOL nCol, SCROW 
nRow, const MouseEvent&
 
 void ScGridWindow::DoPushPivotButton( SCCOL nCol, SCROW nRow, const 
MouseEvent& rMEvt, bool bButton, bool bPopup, bool bMultiField )
 {
+    ScDocument& rDoc = mrViewData.GetDocument();
     SCTAB nTab = mrViewData.GetTabNo();
 
-    ScDPObject* pDPObj  = mrViewData.GetDocument().GetDPAtCursor(nCol, nRow, 
nTab);
+    ScDPObject* pDPObj  = rDoc.GetDPAtCursor(nCol, nRow, nTab);
 
     if (pDPObj)
     {
@@ -210,31 +211,24 @@ void ScGridWindow::DoPushPivotButton( SCCOL nCol, SCROW 
nRow, const MouseEvent&
 
             ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
 
-            VclPtr<AbstractScPivotFilterDlg> pDlg(
+            ScopedVclPtr<AbstractScPivotFilterDlg> pDlg(
                 pFact->CreateScPivotFilterDlg(
                     mrViewData.GetViewShell()->GetFrameWeld(), aArgSet, 
nSrcTab));
-            pDlg->StartExecuteAsync(
-                [this, pDlg, pDesc, pDPObj] (sal_Int32 nResult)->void
-                {
-                    if (nResult == RET_OK)
-                    {
-                        ScDocument& rDoc = mrViewData.GetDocument();
-                        ScSheetSourceDesc aNewDesc(&rDoc);
-                        if (pDesc)
-                            aNewDesc = *pDesc;
-
-                        const ScQueryItem& rQueryItem = pDlg->GetOutputItem();
-                        aNewDesc.SetQueryParam(rQueryItem.GetQueryData());
-
-                        ScDPObject aNewObj( *pDPObj );
-                        aNewObj.SetSheetDesc( aNewDesc );
-                        ScDBDocFunc aFunc( *mrViewData.GetDocShell() );
-                        aFunc.DataPilotUpdate( pDPObj, &aNewObj, true, false );
-                        mrViewData.GetView()->CursorPosChanged();       // 
shells may be switched
-                    }
-                    pDlg->disposeOnce();
-                }
-            );
+            if ( pDlg->Execute() == RET_OK )
+            {
+                ScSheetSourceDesc aNewDesc(&rDoc);
+                if (pDesc)
+                    aNewDesc = *pDesc;
+
+                const ScQueryItem& rQueryItem = pDlg->GetOutputItem();
+                aNewDesc.SetQueryParam(rQueryItem.GetQueryData());
+
+                ScDPObject aNewObj( *pDPObj );
+                aNewObj.SetSheetDesc( aNewDesc );
+                ScDBDocFunc aFunc( *mrViewData.GetDocShell() );
+                aFunc.DataPilotUpdate( pDPObj, &aNewObj, true, false );
+                mrViewData.GetView()->CursorPosChanged();       // shells may 
be switched
+            }
         }
     }
     else
diff --git a/sc/source/ui/view/pivotsh.cxx b/sc/source/ui/view/pivotsh.cxx
index efef27ba8a9c..b4ef807ffa46 100644
--- a/sc/source/ui/view/pivotsh.cxx
+++ b/sc/source/ui/view/pivotsh.cxx
@@ -93,36 +93,30 @@ void ScPivotShell::Execute( const SfxRequest& rReq )
                     nSrcTab = pDesc->GetSourceRange().aStart.Tab();
                 }
 
+                ScViewData& rViewData = pViewShell->GetViewData();
                 SfxItemSetFixed<SCITEM_QUERYDATA, SCITEM_QUERYDATA> aArgSet( 
pViewShell->GetPool() );
-                aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, 
&pViewShell->GetViewData(), &aQueryParam ) );
+                aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, &rViewData, 
&aQueryParam ) );
 
                 ScAbstractDialogFactory* pFact = 
ScAbstractDialogFactory::Create();
 
-                VclPtr<AbstractScPivotFilterDlg> 
pDlg(pFact->CreateScPivotFilterDlg(
+                ScopedVclPtr<AbstractScPivotFilterDlg> 
pDlg(pFact->CreateScPivotFilterDlg(
                     pViewShell->GetFrameWeld(), aArgSet, nSrcTab));
 
-                pDlg->StartExecuteAsync(
-                    [this, pDlg, pDesc, pDPObj] (sal_Int32 nResult)->void
-                    {
-                        if (nResult == RET_OK)
-                        {
-                            ScViewData& rViewData = pViewShell->GetViewData();
-                            ScSheetSourceDesc 
aNewDesc(&rViewData.GetDocument());
-                            if( pDesc )
-                                aNewDesc = *pDesc;
-
-                            const ScQueryItem& rQueryItem = 
pDlg->GetOutputItem();
-                            aNewDesc.SetQueryParam(rQueryItem.GetQueryData());
-
-                            ScDPObject aNewObj( *pDPObj );
-                            aNewObj.SetSheetDesc( aNewDesc );
-                            ScDBDocFunc aFunc( *rViewData.GetDocShell() );
-                            aFunc.DataPilotUpdate( pDPObj, &aNewObj, true, 
false );
-                            rViewData.GetView()->CursorPosChanged();       // 
shells may be switched
-                        }
-                        pDlg->disposeOnce();
-                    }
-                );
+                if( pDlg->Execute() == RET_OK )
+                {
+                    ScSheetSourceDesc aNewDesc(&rViewData.GetDocument());
+                    if( pDesc )
+                        aNewDesc = *pDesc;
+
+                    const ScQueryItem& rQueryItem = pDlg->GetOutputItem();
+                    aNewDesc.SetQueryParam(rQueryItem.GetQueryData());
+
+                    ScDPObject aNewObj( *pDPObj );
+                    aNewObj.SetSheetDesc( aNewDesc );
+                    ScDBDocFunc aFunc( *rViewData.GetDocShell() );
+                    aFunc.DataPilotUpdate( pDPObj, &aNewObj, true, false );
+                    rViewData.GetView()->CursorPosChanged();       // shells 
may be switched
+                }
             }
         }
         break;
diff --git a/sc/source/ui/view/tabvwshb.cxx b/sc/source/ui/view/tabvwshb.cxx
index 75e381cafb08..13ba1dcf04c0 100644
--- a/sc/source/ui/view/tabvwshb.cxx
+++ b/sc/source/ui/view/tabvwshb.cxx
@@ -460,14 +460,9 @@ void ScTabViewShell::ExecDrawIns(SfxRequest& rReq)
                 const uno::Reference<frame::XModel> xModel( 
GetViewData().GetDocShell()->GetBaseModel() );
 
                 VclAbstractDialogFactory* pFact = 
VclAbstractDialogFactory::Create();
-                VclPtr<AbstractQrCodeGenDialog> 
pDialog(pFact->CreateQrCodeGenDialog(
+                ScopedVclPtr<AbstractQrCodeGenDialog> 
pDialog(pFact->CreateQrCodeGenDialog(
                     pWin->GetFrameWeld(), xModel, rReq.GetSlot() == 
SID_EDIT_QRCODE));
-                pDialog->StartExecuteAsync(
-                    [pDialog] (sal_Int32 /*nResult*/)->void
-                    {
-                        pDialog->disposeOnce();
-                    }
-                );
+                pDialog->Execute();
                 break;
             }
 

Reply via email to