summaryrefslogtreecommitdiff
path: root/sc/source
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2024-01-22 08:36:28 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2024-01-24 06:58:14 +0100
commit76e9023c8abc823447b1128056e55238f90da8d6 (patch)
treede637aa9059a5baee266de2e48e9568a6b40e70f /sc/source
parent0d37cbb937e4c8a72de07621ae7d4943b4a032e8 (diff)
convert more calc dialogs to async
Change-Id: I6349942f0a4d6156ef59f43a6e96049128f47524 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162360 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/ui/attrdlg/scdlgfact.cxx35
-rw-r--r--sc/source/ui/attrdlg/scdlgfact.hxx39
-rw-r--r--sc/source/ui/docshell/arealink.cxx30
-rw-r--r--sc/source/ui/docshell/docsh4.cxx23
-rw-r--r--sc/source/ui/drawfunc/drawsh.cxx54
-rw-r--r--sc/source/ui/pagedlg/tphfedit.cxx27
-rw-r--r--sc/source/ui/view/cellsh1.cxx67
-rw-r--r--sc/source/ui/view/cellsh2.cxx10
-rw-r--r--sc/source/ui/view/gridwin2.cxx42
-rw-r--r--sc/source/ui/view/pivotsh.cxx42
-rw-r--r--sc/source/ui/view/tabvwshb.cxx9
11 files changed, 246 insertions, 132 deletions
diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx
index 7fe3435d1bce..24fecf8e9966 100644
--- a/sc/source/ui/attrdlg/scdlgfact.cxx
+++ b/sc/source/ui/attrdlg/scdlgfact.cxx
@@ -148,6 +148,11 @@ 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());
@@ -245,6 +250,11 @@ 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();
@@ -270,21 +280,41 @@ 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();
@@ -334,6 +364,11 @@ 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 880c1f153652..954e58f0f2a8 100644
--- a/sc/source/ui/attrdlg/scdlgfact.hxx
+++ b/sc/source/ui/attrdlg/scdlgfact.hxx
@@ -176,7 +176,7 @@ class AbstractScDeleteCellDlg_Impl : public AbstractScDeleteCellDlg
{
std::shared_ptr<ScDeleteCellDlg> m_xDlg;
public:
- explicit AbstractScDeleteCellDlg_Impl(std::unique_ptr<ScDeleteCellDlg> p)
+ explicit AbstractScDeleteCellDlg_Impl(std::shared_ptr<ScDeleteCellDlg> p)
: m_xDlg(std::move(p))
{
}
@@ -192,13 +192,14 @@ public:
//for dataform
class AbstractScDataFormDlg_Impl : public AbstractScDataFormDlg
{
- std::unique_ptr<ScDataFormDlg> m_xDlg;
+ std::shared_ptr<ScDataFormDlg> m_xDlg;
public:
- explicit AbstractScDataFormDlg_Impl(std::unique_ptr<ScDataFormDlg> p)
+ explicit AbstractScDataFormDlg_Impl(std::shared_ptr<ScDataFormDlg> p)
: m_xDlg(std::move(p))
{
}
virtual short Execute() override;
+ virtual bool StartExecuteAsync(AsyncContext& rCtx) override;
// screenshotting
virtual BitmapEx createScreenshot() const override;
@@ -258,7 +259,7 @@ class AbstractScInsertCellDlg_Impl : public AbstractScInsertCellDlg
{
std::shared_ptr<ScInsertCellDlg> m_xDlg;
public:
- explicit AbstractScInsertCellDlg_Impl(std::unique_ptr<ScInsertCellDlg> p)
+ explicit AbstractScInsertCellDlg_Impl(std::shared_ptr<ScInsertCellDlg> p)
: m_xDlg(std::move(p))
{
}
@@ -328,14 +329,15 @@ public:
class AbstractScLinkedAreaDlg_Impl : public AbstractScLinkedAreaDlg
{
- std::unique_ptr<ScLinkedAreaDlg> m_xDlg;
+ std::shared_ptr<ScLinkedAreaDlg> m_xDlg;
public:
- explicit AbstractScLinkedAreaDlg_Impl(std::unique_ptr<ScLinkedAreaDlg> p)
+ explicit AbstractScLinkedAreaDlg_Impl(std::shared_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;
@@ -412,13 +414,14 @@ public:
class AbstractScPivotFilterDlg_Impl : public AbstractScPivotFilterDlg
{
- std::unique_ptr<ScPivotFilterDlg> m_xDlg;
+ std::shared_ptr<ScPivotFilterDlg> m_xDlg;
public:
- explicit AbstractScPivotFilterDlg_Impl(std::unique_ptr<ScPivotFilterDlg> p)
+ explicit AbstractScPivotFilterDlg_Impl(std::shared_ptr<ScPivotFilterDlg> p)
: m_xDlg(std::move(p))
{
}
virtual short Execute() override;
+ virtual bool StartExecuteAsync(AsyncContext& rCtx) override;
virtual const ScQueryItem& GetOutputItem() override;
};
@@ -454,50 +457,54 @@ public:
class AbstractScDPNumGroupDlg_Impl : public AbstractScDPNumGroupDlg
{
- std::unique_ptr<ScDPNumGroupDlg> m_xDlg;
+ std::shared_ptr<ScDPNumGroupDlg> m_xDlg;
public:
- explicit AbstractScDPNumGroupDlg_Impl(std::unique_ptr<ScDPNumGroupDlg> p)
+ explicit AbstractScDPNumGroupDlg_Impl(std::shared_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::unique_ptr<ScDPDateGroupDlg> m_xDlg;
+ std::shared_ptr<ScDPDateGroupDlg> m_xDlg;
public:
- explicit AbstractScDPDateGroupDlg_Impl(std::unique_ptr<ScDPDateGroupDlg> p)
+ explicit AbstractScDPDateGroupDlg_Impl(std::shared_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::unique_ptr<ScDPShowDetailDlg> m_xDlg;
+ std::shared_ptr<ScDPShowDetailDlg> m_xDlg;
public:
- explicit AbstractScDPShowDetailDlg_Impl(std::unique_ptr<ScDPShowDetailDlg> p)
+ explicit AbstractScDPShowDetailDlg_Impl(std::shared_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::unique_ptr<ScNewScenarioDlg> m_xDlg;
+ std::shared_ptr<ScNewScenarioDlg> m_xDlg;
public:
- explicit AbstractScNewScenarioDlg_Impl(std::unique_ptr<ScNewScenarioDlg> p)
+ explicit AbstractScNewScenarioDlg_Impl(std::shared_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 31636bd148af..1ebd60763654 100644
--- a/sc/source/ui/docshell/arealink.cxx
+++ b/sc/source/ui/docshell/arealink.cxx
@@ -77,19 +77,25 @@ void ScAreaLink::Edit(weld::Window* pParent, const Link<SvBaseLink&,void>& /* rE
// use own dialog instead of SvBaseLink::Edit...
ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
- ScopedVclPtr<AbstractScLinkedAreaDlg> pDlg(pFact->CreateScLinkedAreaDlg(pParent));
+ VclPtr<AbstractScLinkedAreaDlg> pDlg(pFact->CreateScLinkedAreaDlg(pParent));
pDlg->InitFromOldLink( aFileName, aFilterName, aOptions, aSourceArea, GetRefreshDelaySeconds() );
- 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 );
- }
+ 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();
+ }
+ );
}
::sfx2::SvBaseLink::UpdateResult ScAreaLink::DataChanged(
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index e6fa6417dacb..9396b59518fe 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -973,14 +973,23 @@ void ScDocShell::Execute( SfxRequest& rReq )
ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
- ScopedVclPtr<AbstractScNewScenarioDlg> pNewDlg(pFact->CreateScNewScenarioDlg(GetActiveDialogParent(), aName, true, bSheetProtected));
+ VclPtr<AbstractScNewScenarioDlg> pNewDlg(pFact->CreateScNewScenarioDlg(GetActiveDialogParent(), aName, true, bSheetProtected));
pNewDlg->SetScenarioData( aName, aComment, aColor, nFlags );
- if ( pNewDlg->Execute() == RET_OK )
- {
- pNewDlg->GetScenarioData( aName, aComment, aColor, nFlags );
- ModifyScenario( nTab, aName, aComment, aColor, nFlags );
- rReq.Done();
- }
+ 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();
}
}
}
diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx
index 43ef902ddd6b..dfc3d94ef79f 100644
--- a/sc/source/ui/drawfunc/drawsh.cxx
+++ b/sc/source/ui/drawfunc/drawsh.cxx
@@ -557,20 +557,25 @@ void ScDrawShell::ExecuteTextAttrDlg( SfxRequest& rReq )
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
weld::Window* pWin = rViewData.GetDialogParent();
- ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateTextTabDialog(pWin, &aNewAttr, pView));
+ VclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateTextTabDialog(pWin, &aNewAttr, pView));
- sal_uInt16 nResult = pDlg->Execute();
+ pDlg->StartExecuteAsync(
+ [pDlg, bHasMarked, pView] (sal_Int32 nResult)->void
+ {
+ if (nResult == RET_OK)
+ {
+ if ( bHasMarked )
+ pView->SetAttributes( *pDlg->GetOutputItemSet() );
+ else
+ pView->SetDefaultAttr( *pDlg->GetOutputItemSet(), false );
- if ( RET_OK == nResult )
- {
- if ( bHasMarked )
- pView->SetAttributes( *pDlg->GetOutputItemSet() );
- else
- pView->SetDefaultAttr( *pDlg->GetOutputItemSet(), false );
+ pView->InvalidateAttribs();
+ }
+ pDlg->disposeOnce();
+ }
+ );
- pView->InvalidateAttribs();
- rReq.Done();
- }
+ rReq.Done();
}
void ScDrawShell::ExecuteMeasureDlg( SfxRequest& rReq )
@@ -584,20 +589,25 @@ void ScDrawShell::ExecuteMeasureDlg( SfxRequest& rReq )
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
weld::Window* pWin = rViewData.GetDialogParent();
- ScopedVclPtr<SfxAbstractDialog> pDlg(pFact->CreateSfxDialog(pWin, aNewAttr, pView, RID_SVXPAGE_MEASURE));
+ VclPtr<SfxAbstractDialog> pDlg(pFact->CreateSfxDialog(pWin, aNewAttr, pView, RID_SVXPAGE_MEASURE));
- sal_uInt16 nResult = pDlg->Execute();
+ 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 );
- if ( RET_OK == nResult )
- {
- if ( bHasMarked )
- pView->SetAttrToMarked( *pDlg->GetOutputItemSet(), false );
- else
- pView->SetDefaultAttr( *pDlg->GetOutputItemSet(), false );
+ pView->InvalidateAttribs();
+ }
+ pDlg->disposeOnce();
+ }
+ );
- pView->InvalidateAttribs();
- rReq.Done();
- }
+ 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 617f2208a9f9..ffcdd167ae32 100644
--- a/sc/source/ui/pagedlg/tphfedit.cxx
+++ b/sc/source/ui/pagedlg/tphfedit.cxx
@@ -189,21 +189,26 @@ void ScEditWindow::SetCharAttributes()
if(pTabViewSh!=nullptr) pTabViewSh->SetInFormatDialog(true);
- SfxItemSet aSet( m_xEditView->GetAttribs() );
+ std::shared_ptr<SfxItemSet> xSet = std::make_shared<SfxItemSet>( m_xEditView->GetAttribs() );
ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
- ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateScCharDlg(
- mpDialog, &aSet, pDocSh, false));
+ VclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateScCharDlg(
+ mpDialog, xSet.get(), pDocSh, false));
pDlg->SetText( ScResId( STR_TEXTATTRS ) );
- if ( pDlg->Execute() == RET_OK )
- {
- aSet.ClearItem();
- aSet.Put( *pDlg->GetOutputItemSet() );
- m_xEditView->SetAttribs( aSet );
- }
-
- if(pTabViewSh!=nullptr) pTabViewSh->SetInFormatDialog(false);
+ 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);
+ }
+ );
}
bool ScEditWindow::KeyInput( const KeyEvent& rKEvt )
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index ea9c1d948cc6..b54837ea763a 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -1213,13 +1213,19 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
if ( pTabViewShell->HasSelectionForDrillDown( nOrientation ) )
{
ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
- ScopedVclPtr<AbstractScDPShowDetailDlg> pDlg( pFact->CreateScDPShowDetailDlg(
+ VclPtr<AbstractScDPShowDetailDlg> pDlg( pFact->CreateScDPShowDetailDlg(
pTabViewShell->GetFrameWeld(), *pDPObj, nOrientation ) );
- if ( pDlg->Execute() == RET_OK )
- {
- OUString aNewDimName( pDlg->GetDimensionName() );
- pTabViewShell->SetDataPilotDetails( true, &aNewDimName );
- }
+ pDlg->StartExecuteAsync(
+ [pDlg, pTabViewShell] (sal_Int32 nResult)->void
+ {
+ if (nResult == RET_OK)
+ {
+ OUString aNewDimName( pDlg->GetDimensionName() );
+ pTabViewShell->SetDataPilotDetails( true, &aNewDimName );
+ }
+ pDlg->disposeOnce();
+ }
+ );
}
else if ( !pDPObj->IsServiceData() &&
pDPObj->GetDataFieldPositionData(
@@ -1252,22 +1258,31 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
{
ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
const Date& rNullDate( GetViewData().GetDocument().GetFormatTable()->GetNullDate() );
- ScopedVclPtr<AbstractScDPDateGroupDlg> pDlg( pFact->CreateScDPDateGroupDlg(
+ VclPtr<AbstractScDPDateGroupDlg> pDlg( pFact->CreateScDPDateGroupDlg(
pTabViewShell->GetFrameWeld(),
aNumInfo, nParts, rNullDate ) );
- if( pDlg->Execute() == RET_OK )
- {
- aNumInfo = pDlg->GetGroupInfo();
- pTabViewShell->DateGroupDataPilot( aNumInfo, pDlg->GetDatePart() );
- }
+ pDlg->StartExecuteAsync(
+ [pDlg, pTabViewShell] (sal_Int32 nResult)->void
+ {
+ if (nResult == RET_OK)
+ pTabViewShell->DateGroupDataPilot( pDlg->GetGroupInfo(), pDlg->GetDatePart() );
+ pDlg->disposeOnce();
+ }
+ );
}
else if ( pTabViewShell->HasSelectionForNumGroup( aNumInfo ) )
{
ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
- ScopedVclPtr<AbstractScDPNumGroupDlg> pDlg( pFact->CreateScDPNumGroupDlg(
+ VclPtr<AbstractScDPNumGroupDlg> pDlg( pFact->CreateScDPNumGroupDlg(
pTabViewShell->GetFrameWeld(), aNumInfo ) );
- if( pDlg->Execute() == RET_OK )
- pTabViewShell->NumGroupDataPilot( pDlg->GetGroupInfo() );
+ pDlg->StartExecuteAsync(
+ [pDlg, pTabViewShell] (sal_Int32 nResult)->void
+ {
+ if (nResult == RET_OK)
+ pTabViewShell->NumGroupDataPilot( pDlg->GetGroupInfo() );
+ pDlg->disposeOnce();
+ }
+ );
}
else
pTabViewShell->GroupDataPilot();
@@ -1719,14 +1734,20 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
ScAddress aCellPos(nPosX, nPosY, GetViewData().GetTabNo());
auto pObj = std::make_shared<ScImportExport>(GetViewData().GetDocument(), aCellPos);
pObj->SetOverwriting(true);
- if (pDlg->Execute()) {
- ScAsciiOptions aOptions;
- pDlg->GetOptions(aOptions);
- pDlg->SaveParameters();
- pObj->SetExtOptions(aOptions);
- pObj->ImportString(sStrBuffer, format);
- }
- pDlg->disposeOnce();
+ 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();
+ }
+ );
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 71bcd6cac315..8911cb33fbc1 100644
--- a/sc/source/ui/view/cellsh2.cxx
+++ b/sc/source/ui/view/cellsh2.cxx
@@ -355,10 +355,14 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
{
ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
- ScopedVclPtr<AbstractScDataFormDlg> pDlg(pFact->CreateScDataFormDlg(
+ VclPtr<AbstractScDataFormDlg> pDlg(pFact->CreateScDataFormDlg(
pTabViewShell->GetFrameWeld(), pTabViewShell));
-
- pDlg->Execute();
+ pDlg->StartExecuteAsync(
+ [pDlg] (sal_Int32 /*nResult*/)->void
+ {
+ pDlg->disposeOnce();
+ }
+ );
rReq.Done();
}
diff --git a/sc/source/ui/view/gridwin2.cxx b/sc/source/ui/view/gridwin2.cxx
index 01f5f39dd7d3..c6af2c2cd74f 100644
--- a/sc/source/ui/view/gridwin2.cxx
+++ b/sc/source/ui/view/gridwin2.cxx
@@ -150,10 +150,9 @@ 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 = rDoc.GetDPAtCursor(nCol, nRow, nTab);
+ ScDPObject* pDPObj = mrViewData.GetDocument().GetDPAtCursor(nCol, nRow, nTab);
if (pDPObj)
{
@@ -211,24 +210,31 @@ void ScGridWindow::DoPushPivotButton( SCCOL nCol, SCROW nRow, const MouseEvent&
ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
- ScopedVclPtr<AbstractScPivotFilterDlg> pDlg(
+ VclPtr<AbstractScPivotFilterDlg> pDlg(
pFact->CreateScPivotFilterDlg(
mrViewData.GetViewShell()->GetFrameWeld(), aArgSet, nSrcTab));
- 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
- }
+ 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();
+ }
+ );
}
}
else
diff --git a/sc/source/ui/view/pivotsh.cxx b/sc/source/ui/view/pivotsh.cxx
index b4ef807ffa46..efef27ba8a9c 100644
--- a/sc/source/ui/view/pivotsh.cxx
+++ b/sc/source/ui/view/pivotsh.cxx
@@ -93,30 +93,36 @@ 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, &rViewData, &aQueryParam ) );
+ aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, &pViewShell->GetViewData(), &aQueryParam ) );
ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
- ScopedVclPtr<AbstractScPivotFilterDlg> pDlg(pFact->CreateScPivotFilterDlg(
+ VclPtr<AbstractScPivotFilterDlg> pDlg(pFact->CreateScPivotFilterDlg(
pViewShell->GetFrameWeld(), aArgSet, nSrcTab));
- 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
- }
+ 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();
+ }
+ );
}
}
break;
diff --git a/sc/source/ui/view/tabvwshb.cxx b/sc/source/ui/view/tabvwshb.cxx
index 098ea68d33d5..57fb7f63b72d 100644
--- a/sc/source/ui/view/tabvwshb.cxx
+++ b/sc/source/ui/view/tabvwshb.cxx
@@ -443,9 +443,14 @@ void ScTabViewShell::ExecDrawIns(SfxRequest& rReq)
const uno::Reference<frame::XModel> xModel( GetViewData().GetDocShell()->GetBaseModel() );
VclAbstractDialogFactory* pFact = VclAbstractDialogFactory::Create();
- ScopedVclPtr<AbstractQrCodeGenDialog> pDialog(pFact->CreateQrCodeGenDialog(
+ VclPtr<AbstractQrCodeGenDialog> pDialog(pFact->CreateQrCodeGenDialog(
pWin->GetFrameWeld(), xModel, rReq.GetSlot() == SID_EDIT_QRCODE));
- pDialog->Execute();
+ pDialog->StartExecuteAsync(
+ [pDialog] (sal_Int32 /*nResult*/)->void
+ {
+ pDialog->disposeOnce();
+ }
+ );
break;
}