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; }