[Libreoffice-commits] core.git: sd/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Fri Jan 11 10:56:19 UTC 2019


 sd/source/ui/dlg/sddlgfact.hxx |    7 ++++++-
 sd/source/ui/view/drviews3.cxx |   18 +++++++++---------
 2 files changed, 15 insertions(+), 10 deletions(-)

New commits:
commit d095a887a9b0cce81b4f828feed759b5d0b3ad3f
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Thu Jan 10 15:07:01 2019 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Fri Jan 11 11:55:55 2019 +0100

    make Insert->Header and Footer dialog async
    
    Change-Id: Icb2c507970c35a8ddee47912915882dede87ebca
    Reviewed-on: https://gerrit.libreoffice.org/66099
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

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;
         }
 


More information about the Libreoffice-commits mailing list