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

Jan Holesovsky kendy at collabora.com
Thu Jan 18 14:19:11 UTC 2018


 sd/source/ui/func/fuarea.cxx   |   34 ++++++++++++++++++++--------------
 sd/source/ui/view/drviews2.cxx |    2 +-
 2 files changed, 21 insertions(+), 15 deletions(-)

New commits:
commit b479e9625475e87546b7945732a0e66a2a9dbb1f
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Wed Jan 17 20:15:22 2018 +0100

    lokdialog: Convert the Format -> ... -> Area... to async exec.
    
    Change-Id: I3756bd472b4e54db1d1c9da382d5d655f472bdb7
    Reviewed-on: https://gerrit.libreoffice.org/48080
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/sd/source/ui/func/fuarea.cxx b/sd/source/ui/func/fuarea.cxx
index 1e891416483a..1d9197871071 100644
--- a/sd/source/ui/func/fuarea.cxx
+++ b/sd/source/ui/func/fuarea.cxx
@@ -52,19 +52,28 @@ rtl::Reference<FuPoor> FuArea::Create( ViewShell* pViewSh, ::sd::Window* pWin, :
 
 void FuArea::DoExecute( SfxRequest& rReq )
 {
+    rReq.Ignore ();
+
     const SfxItemSet* pArgs = rReq.GetArgs();
+    if (pArgs)
+    {
+        mpViewShell->Cancel();
+        return;
+    }
+
+    SfxItemSet aNewAttr( mpDoc->GetPool() );
+    mpView->GetAttributes( aNewAttr );
 
-    if( !pArgs )
+    SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
+    VclPtr<AbstractSvxAreaTabDialog> pDlg(pFact ? pFact->CreateSvxAreaTabDialog(nullptr, &aNewAttr, mpDoc, true) : nullptr);
+    if (!pDlg)
     {
-        SfxItemSet aNewAttr( mpDoc->GetPool() );
-        mpView->GetAttributes( aNewAttr );
-
-        SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
-        ScopedVclPtr<AbstractSvxAreaTabDialog> pDlg(pFact ? pFact->CreateSvxAreaTabDialog( nullptr,
-                                                                        &aNewAttr,
-                                                                        mpDoc,
-                                                                        true) : nullptr);
-        if( pDlg && (pDlg->Execute() == RET_OK) )
+        mpViewShell->Cancel();
+        return;
+    }
+
+    pDlg->StartExecuteAsync([=](sal_Int32 nResult){
+        if (nResult == RET_OK)
         {
             mpView->SetAttributes (*(pDlg->GetOutputItemSet ()));
 
@@ -81,10 +90,7 @@ void FuArea::DoExecute( SfxRequest& rReq )
 
             mpViewShell->GetViewFrame()->GetBindings().Invalidate( SidArray );
         }
-    }
-
-    rReq.Ignore ();
-
+    }, pDlg);
 }
 
 void FuArea::Activate()
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index 4cbe90ccc623..02d514ae611c 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -1374,7 +1374,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
         case SID_ATTRIBUTES_AREA:  // BASIC
         {
             SetCurrentFunction( FuArea::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
-            Cancel();
+            // Cancel() called directly in FuTransform::Create()
         }
         break;
 


More information about the Libreoffice-commits mailing list