[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - sc/inc sc/source
Szymon KÅos (via logerrit)
logerrit at kemper.freedesktop.org
Wed Aug 5 07:41:31 UTC 2020
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 <szymon.klos at collabora.com>
AuthorDate: Tue Aug 4 16:18:42 2020 +0200
Commit: Szymon Kłos <szymon.klos at collabora.com>
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 <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
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;
More information about the Libreoffice-commits
mailing list