diff options
Diffstat (limited to 'sd')
-rw-r--r-- | sd/source/ui/dlg/sddlgfact.hxx | 7 | ||||
-rw-r--r-- | sd/source/ui/view/drviews3.cxx | 18 |
2 files changed, 15 insertions, 10 deletions
diff --git a/sd/source/ui/dlg/sddlgfact.hxx b/sd/source/ui/dlg/sddlgfact.hxx index 6e206bbeb7b1..ebf4e4980b3c 100644 --- a/sd/source/ui/dlg/sddlgfact.hxx +++ b/sd/source/ui/dlg/sddlgfact.hxx @@ -35,7 +35,8 @@ public: \ virtual BitmapEx createScreenshot() const override; \ virtual OString GetScreenshotId() const override; \ virtual ~Class() override; \ - virtual short Execute() override ; + virtual short Execute() override; \ + virtual bool StartExecuteAsync(AsyncContext &ctx) override; #define IMPL_ABSTDLG_BASE(Class) \ std::vector<OString> Class::getAllPageUIXMLDescriptions() const { return pDlg->getAllPageUIXMLDescriptions(); } \ @@ -48,6 +49,10 @@ Class::~Class() \ short Class::Execute() \ { \ return pDlg->Execute(); \ +} \ +bool Class::StartExecuteAsync(AsyncContext &ctx) \ +{ \ + return pDlg->StartExecuteAsync(ctx); \ } namespace sd { diff --git a/sd/source/ui/view/drviews3.cxx b/sd/source/ui/view/drviews3.cxx index b2ab0cbbb573..7d0d48fed5d3 100644 --- a/sd/source/ui/view/drviews3.cxx +++ b/sd/source/ui/view/drviews3.cxx @@ -295,16 +295,16 @@ void DrawViewShell::ExecCtrl(SfxRequest& rReq) case SID_INSERT_DATE_TIME: { SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create(); - ScopedVclPtr<AbstractHeaderFooterDialog> pDlg(pFact ? pFact->CreateHeaderFooterDialog( this, GetActiveWindow(), GetDoc(), mpActualPage ) : nullptr); - pDlg->Execute(); - pDlg.disposeAndClear(); - - GetActiveWindow()->Invalidate(); - UpdatePreview( mpActualPage ); - - Invalidate(); - rReq.Done (); + VclPtr<AbstractHeaderFooterDialog> pDlg(pFact ? pFact->CreateHeaderFooterDialog( this, GetActiveWindow(), GetDoc(), mpActualPage ) : nullptr); + std::shared_ptr<SfxRequest> xRequest(new SfxRequest(rReq)); + rReq.Ignore(); // the 'old' request is not relevant any more + pDlg->StartExecuteAsync([this, xRequest](sal_Int32 /*nResult*/){ + GetActiveWindow()->Invalidate(); + UpdatePreview( mpActualPage ); + Invalidate(); + xRequest->Done(); + }); break; } |