sc/inc/scabstdlg.hxx | 7 +++--- sc/source/ui/attrdlg/scdlgfact.cxx | 15 ++++++-------- sc/source/ui/attrdlg/scdlgfact.hxx | 6 ++--- sc/source/ui/view/cellsh1.cxx | 38 +++++++++++++++++++++++++++---------- 4 files changed, 42 insertions(+), 24 deletions(-)
New commits: commit 34b0e97c25a943c2e4ba98750b970bee542f5819 Author: Szymon Kłos <[email protected]> AuthorDate: Tue Aug 4 16:18:42 2020 +0200 Commit: Szymon Kłos <[email protected]> CommitDate: Wed Aug 5 09:40:57 2020 +0200 Make Group dialog async Change-Id: I37fd6c44d43b0f0b424bd023e13ffa07f601a08b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100119 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Szymon Kłos <[email protected]> diff --git a/sc/inc/scabstdlg.hxx b/sc/inc/scabstdlg.hxx index 2991a224f3ea..a72573c808b9 100644 --- a/sc/inc/scabstdlg.hxx +++ b/sc/inc/scabstdlg.hxx @@ -173,12 +173,13 @@ public: virtual void SetEdStartValEnabled(bool bFlag) = 0; }; -class AbstractScGroupDlg : public VclAbstractDialog +class AbstractScGroupDlg { protected: - virtual ~AbstractScGroupDlg() override = default; + virtual ~AbstractScGroupDlg() = default; public: virtual bool GetColsChecked() const = 0; + virtual std::shared_ptr<weld::DialogController> getDialogController() = 0; }; class AbstractScInsertCellDlg : public VclAbstractDialog @@ -445,7 +446,7 @@ public: double fMax, sal_uInt16 nPossDir) = 0; - virtual VclPtr<AbstractScGroupDlg> CreateAbstractScGroupDlg(weld::Window* pParent, bool bUnGroup = false) = 0; + virtual std::shared_ptr<AbstractScGroupDlg> CreateAbstractScGroupDlg(weld::Window* pParent, bool bUnGroup = false) = 0; virtual VclPtr<AbstractScInsertCellDlg> CreateScInsertCellDlg(weld::Window* pParent, bool bDisallowCellMove) = 0; diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx index 238a46fb725e..ab717e1ee05e 100644 --- a/sc/source/ui/attrdlg/scdlgfact.cxx +++ b/sc/source/ui/attrdlg/scdlgfact.cxx @@ -148,11 +148,6 @@ short AbstractScFillSeriesDlg_Impl::Execute() return m_xDlg->run(); } -short AbstractScGroupDlg_Impl::Execute() -{ - return m_xDlg->run(); -} - short AbstractScInsertCellDlg_Impl::Execute() { return m_xDlg->run(); @@ -493,7 +488,11 @@ void AbstractScFillSeriesDlg_Impl::SetEdStartValEnabled(bool bFlag) bool AbstractScGroupDlg_Impl::GetColsChecked() const { - return m_xDlg->GetColsChecked(); + ScGroupDlg* pDlg = dynamic_cast<ScGroupDlg*>(m_xDlg.get()); + if (pDlg) + return pDlg->GetColsChecked(); + + return false; } InsCellCmd AbstractScInsertCellDlg_Impl::GetInsCellCmd() const @@ -1034,9 +1033,9 @@ VclPtr<AbstractScFillSeriesDlg> ScAbstractDialogFactory_Impl::CreateScFillSeries return VclPtr<AbstractScFillSeriesDlg_Impl>::Create(std::make_unique<ScFillSeriesDlg>(pParent, rDocument,eFillDir, eFillCmd,eFillDateCmd, aStartStr,fStep,fMax,nPossDir)); } -VclPtr<AbstractScGroupDlg> ScAbstractDialogFactory_Impl::CreateAbstractScGroupDlg(weld::Window* pParent, bool bUnGroup) +std::shared_ptr<AbstractScGroupDlg> ScAbstractDialogFactory_Impl::CreateAbstractScGroupDlg(weld::Window* pParent, bool bUnGroup) { - return VclPtr<AbstractScGroupDlg_Impl>::Create(std::make_unique<ScGroupDlg>(pParent, bUnGroup, true/*bRows*/)); + return std::make_shared<AbstractScGroupDlg_Impl>(std::make_unique<ScGroupDlg>(pParent, bUnGroup, true/*bRows*/)); } VclPtr<AbstractScInsertCellDlg> ScAbstractDialogFactory_Impl::CreateScInsertCellDlg(weld::Window* pParent, diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx b/sc/source/ui/attrdlg/scdlgfact.hxx index aa9c28a35ebb..4f8987bc4e1a 100644 --- a/sc/source/ui/attrdlg/scdlgfact.hxx +++ b/sc/source/ui/attrdlg/scdlgfact.hxx @@ -285,14 +285,14 @@ public: class AbstractScGroupDlg_Impl : public AbstractScGroupDlg { - std::unique_ptr<ScGroupDlg> m_xDlg; + std::shared_ptr<weld::DialogController> m_xDlg; public: explicit AbstractScGroupDlg_Impl(std::unique_ptr<ScGroupDlg> p) : m_xDlg(std::move(p)) { } - virtual short Execute() override; virtual bool GetColsChecked() const override; + virtual std::shared_ptr<weld::DialogController> getDialogController() override { return m_xDlg; } }; class AbstractScInsertCellDlg_Impl : public AbstractScInsertCellDlg @@ -714,7 +714,7 @@ public: double fStep, double fMax, sal_uInt16 nPossDir) override; - virtual VclPtr<AbstractScGroupDlg> CreateAbstractScGroupDlg(weld::Window* pParent, bool bUnGroup = false) override; + virtual std::shared_ptr<AbstractScGroupDlg> CreateAbstractScGroupDlg(weld::Window* pParent, bool bUnGroup = false) override; virtual VclPtr<AbstractScInsertCellDlg> CreateScInsertCellDlg(weld::Window* pParent, bool bDisallowCellMove) override; diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx index 5873272f1dfe..e715c721c721 100644 --- a/sc/source/ui/view/cellsh1.cxx +++ b/sc/source/ui/view/cellsh1.cxx @@ -1160,11 +1160,20 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) { ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); - ScopedVclPtr<AbstractScGroupDlg> pDlg(pFact->CreateAbstractScGroupDlg(pTabViewShell->GetFrameWeld())); - if ( pDlg->Execute() == RET_OK ) - bColumns = pDlg->GetColsChecked(); - else - bOk = false; + std::shared_ptr<AbstractScGroupDlg> pDlg(pFact->CreateAbstractScGroupDlg(pTabViewShell->GetFrameWeld())); + std::shared_ptr<weld::DialogController> pDialogController(pDlg->getDialogController()); + + weld::DialogController::runAsync(pDialogController, + [pDlg, pTabViewShell] (sal_Int32 nResult) { + if( RET_OK == nResult ) + { + bool bColumn = pDlg->GetColsChecked(); + pTabViewShell->MakeOutline( bColumn ); + } + } + ); + + bOk = false; } } if (bOk) @@ -1218,11 +1227,20 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) { ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create(); - ScopedVclPtr<AbstractScGroupDlg> pDlg(pFact->CreateAbstractScGroupDlg(pTabViewShell->GetFrameWeld(), true)); - if ( pDlg->Execute() == RET_OK ) - bColumns = pDlg->GetColsChecked(); - else - bOk = false; + std::shared_ptr<AbstractScGroupDlg> pDlg(pFact->CreateAbstractScGroupDlg(pTabViewShell->GetFrameWeld(), true)); + std::shared_ptr<weld::DialogController> pDialogController(pDlg->getDialogController()); + + weld::DialogController::runAsync(pDialogController, + [pDlg, pTabViewShell] (sal_Int32 nResult) { + if( RET_OK == nResult ) + { + bool bColumn = pDlg->GetColsChecked(); + pTabViewShell->RemoveOutline( bColumn ); + } + } + ); + + bOk = false; } else if ( bColPoss ) bColumns = true; _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
