diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-01-10 14:42:36 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-01-18 14:24:57 +0100 |
commit | 171710c655061b3ac80b764cb234eec02224b639 (patch) | |
tree | 53efeaae6be6f43127aff41e6f0c4e7c06a826fa | |
parent | f5499236c69d602ae518359c8e3e7d5e239b8eda (diff) |
make Format->Conditional Formatting->Manage dialog async
Reviewed-on: https://gerrit.libreoffice.org/66097
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
(cherry picked from commit f548dfa29239913fd71be67eadc2905010cabd95)
Change-Id: I13a40c13340ea34cbcbde11289d3420855a7264f
Reviewed-on: https://gerrit.libreoffice.org/66206
Reviewed-by: Mert Tümer <mert.tumer@collabora.com>
Tested-by: Mert Tümer <mert.tumer@collabora.com>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r-- | sc/source/ui/view/cellsh1.cxx | 65 |
1 files changed, 33 insertions, 32 deletions
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx index abed90879ea8..e1af6030e534 100644 --- a/sc/source/ui/view/cellsh1.cxx +++ b/sc/source/ui/view/cellsh1.cxx @@ -2651,44 +2651,45 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq ) if (!pList) pList = pDoc->GetCondFormList( aPos.Tab() ); - ScopedVclPtr<AbstractScCondFormatManagerDlg> pDlg(pFact->CreateScCondFormatMgrDlg( + VclPtr<AbstractScCondFormatManagerDlg> pDlg(pFact->CreateScCondFormatMgrDlg( pTabViewShell->GetDialogParent(), pDoc, pList)); if (pDlgItem) pDlg->SetModified(); - short nRet = pDlg->Execute(); - ScConditionalFormatList* pCondFormatList = pDlg->GetConditionalFormatList(); - if(nRet == RET_OK && pDlg->CondFormatsChanged()) - { - pData->GetDocShell()->GetDocFunc().SetConditionalFormatList(pCondFormatList, aPos.Tab()); - } - else if(nRet == DLG_RET_ADD) - { - // Put the xml string parameter to initialize the - // Conditional Format Dialog. ( add new ) - pTabViewShell->GetPool().Put(ScCondFormatDlgItem( - std::shared_ptr<ScConditionalFormatList>(pCondFormatList), -1, true)); - // Queue message to open Conditional Format Dialog - GetViewData()->GetDispatcher().Execute( SID_OPENDLG_CONDFRMT, SfxCallMode::ASYNCHRON ); - } - else if (nRet == DLG_RET_EDIT) - { - ScConditionalFormat* pFormat = pDlg->GetCondFormatSelected(); - sal_Int32 nIndex = pFormat ? pFormat->GetKey() : -1; - // Put the xml string parameter to initialize the - // Conditional Format Dialog. ( edit selected conditional format ) - pTabViewShell->GetPool().Put(ScCondFormatDlgItem( - std::shared_ptr<ScConditionalFormatList>(pCondFormatList), nIndex, true)); - - // Queue message to open Conditional Format Dialog - GetViewData()->GetDispatcher().Execute( SID_OPENDLG_CONDFRMT, SfxCallMode::ASYNCHRON ); - } - else - delete pCondFormatList; + pDlg->StartExecuteAsync([this, pDlg, pData, pTabViewShell, pDlgItem, aPos](sal_Int32 nRet){ + std::unique_ptr<ScConditionalFormatList> pCondFormatList(pDlg->GetConditionalFormatList()); + if(nRet == RET_OK && pDlg->CondFormatsChanged()) + { + pData->GetDocShell()->GetDocFunc().SetConditionalFormatList(pCondFormatList.release(), aPos.Tab()); + } + else if(nRet == DLG_RET_ADD) + { + // Put the xml string parameter to initialize the + // Conditional Format Dialog. ( add new ) + pTabViewShell->GetPool().Put(ScCondFormatDlgItem( + std::shared_ptr<ScConditionalFormatList>(pCondFormatList.release()), -1, true)); + // Queue message to open Conditional Format Dialog + GetViewData()->GetDispatcher().Execute( SID_OPENDLG_CONDFRMT, SfxCallMode::ASYNCHRON ); + } + else if (nRet == DLG_RET_EDIT) + { + ScConditionalFormat* pFormat = pDlg->GetCondFormatSelected(); + sal_Int32 nIndex = pFormat ? pFormat->GetKey() : -1; + // Put the xml string parameter to initialize the + // Conditional Format Dialog. ( edit selected conditional format ) + pTabViewShell->GetPool().Put(ScCondFormatDlgItem( + std::shared_ptr<ScConditionalFormatList>(pCondFormatList.release()), nIndex, true)); + + // Queue message to open Conditional Format Dialog + GetViewData()->GetDispatcher().Execute( SID_OPENDLG_CONDFRMT, SfxCallMode::ASYNCHRON ); + } + else + pCondFormatList.reset(); - if (pDlgItem) - pTabViewShell->GetPool().Remove(*pDlgItem); + if (pDlgItem) + pTabViewShell->GetPool().Remove(*pDlgItem); + }); } break; |