summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2024-01-23 13:24:29 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2024-01-23 14:32:25 +0100
commitf690e8218a74a0f7792407a1d46198883d2528ff (patch)
tree0c70dd98f344e9d32f8a5acab01dcdc5a27c7d34 /sc
parent6e20e58270c88c8c77f156be75c23c66e1169e44 (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.cxx51
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 )