diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2024-01-23 13:24:29 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2024-01-23 14:32:25 +0100 |
commit | f690e8218a74a0f7792407a1d46198883d2528ff (patch) | |
tree | 0c70dd98f344e9d32f8a5acab01dcdc5a27c7d34 /sc | |
parent | 6e20e58270c88c8c77f156be75c23c66e1169e44 (diff) |
make event config dialog async
Change-Id: Ibbfbc5024fb2be4906d0c312577310f28dde212d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162434
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/drawfunc/drawsh.cxx | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx index 21e6cb736b7a..43ef902ddd6b 100644 --- a/sc/source/ui/drawfunc/drawsh.cxx +++ b/sc/source/ui/drawfunc/drawsh.cxx @@ -441,32 +441,39 @@ void ScDrawShell::ExecuteMacroAssign(SdrObject* pObj, weld::Window* pWin) xFrame = GetViewShell()->GetViewFrame().GetFrame().GetFrameInterface(); SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - ScopedVclPtr<SfxAbstractDialog> pMacroDlg(pFact->CreateEventConfigDialog( pWin, aItemSet, xFrame )); - if ( pMacroDlg->Execute() != RET_OK ) - return; + VclPtr<SfxAbstractDialog> pMacroDlg(pFact->CreateEventConfigDialog( pWin, aItemSet, xFrame )); + pMacroDlg->StartExecuteAsync( + [this, pMacroDlg, pObj, pInfo] (sal_Int32 nResult) mutable -> void + { + ScopedVclPtr<SfxAbstractDialog> pDlgDisposer(std::move(pMacroDlg)); + if (nResult != RET_OK) + return; - const SfxItemSet* pOutSet = pMacroDlg->GetOutputItemSet(); - const SvxMacroItem* pItem = pOutSet->GetItemIfSet( SID_ATTR_MACROITEM, false ); - if( !pItem ) - return; + const SfxItemSet* pOutSet = pDlgDisposer->GetOutputItemSet(); + const SvxMacroItem* pItem = pOutSet->GetItemIfSet( SID_ATTR_MACROITEM, false ); + if( !pItem ) + return; - OUString sMacro; - const SvxMacro* pMacro = pItem->GetMacroTable().Get( SvMacroItemId::OnClick ); - if ( pMacro ) - sMacro = pMacro->GetMacName(); + OUString sMacro; + const SvxMacro* pMacro = pItem->GetMacroTable().Get( SvMacroItemId::OnClick ); + if ( pMacro ) + sMacro = pMacro->GetMacName(); - if ( pObj->IsGroupObject() ) - { - SdrObjList* pOL = pObj->GetSubList(); - for (const rtl::Reference<SdrObject>& pChildObj : *pOL) - { - pInfo = ScDrawLayer::GetMacroInfo( pChildObj.get(), true ); - pInfo->SetMacro( sMacro ); + if ( pObj->IsGroupObject() ) + { + SdrObjList* pOL = pObj->GetSubList(); + for (const rtl::Reference<SdrObject>& pChildObj : *pOL) + { + pInfo = ScDrawLayer::GetMacroInfo( pChildObj.get(), true ); + pInfo->SetMacro( sMacro ); + } + } + else + pInfo->SetMacro( sMacro ); + setModified(); } - } - else - pInfo->SetMacro( sMacro ); - setModified(); + ); + } void ScDrawShell::ExecuteLineDlg( const SfxRequest& rReq ) |