sc/source/ui/drawfunc/drawsh.cxx | 66 ++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 24 deletions(-)
New commits: commit b315e9d5bad90ca3e4eaaee5cb7da7739557f2e2 Author: Muhammet Kara <muhammet.k...@collabora.com> AuthorDate: Fri Jun 28 23:37:10 2019 +0300 Commit: Muhammet Kara <muhammet.k...@collabora.com> CommitDate: Sat Jun 29 14:02:55 2019 +0200 lokdialog: Convert the Format -> Position and Size... to async exec for sc Change-Id: I715ed025d97de8eb69b6e9ba227b955b49add855 Reviewed-on: https://gerrit.libreoffice.org/74861 Tested-by: Jenkins Reviewed-by: Muhammet Kara <muhammet.k...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/74873 Tested-by: Muhammet Kara <muhammet.k...@collabora.com> diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx index f41eb161665c..c13001d9e294 100644 --- a/sc/source/ui/drawfunc/drawsh.cxx +++ b/sc/source/ui/drawfunc/drawsh.cxx @@ -98,6 +98,20 @@ static void lcl_setModified( const SfxObjectShell* pShell ) } } +static void lcl_invalidateTransformAttr(const ScTabViewShell* pViewShell) +{ + SfxBindings& rBindings=pViewShell->GetViewFrame()->GetBindings(); + rBindings.Invalidate(SID_ATTR_TRANSFORM_WIDTH); + rBindings.Invalidate(SID_ATTR_TRANSFORM_HEIGHT); + rBindings.Invalidate(SID_ATTR_TRANSFORM_POS_X); + rBindings.Invalidate(SID_ATTR_TRANSFORM_POS_Y); + rBindings.Invalidate(SID_ATTR_TRANSFORM_ANGLE); + rBindings.Invalidate(SID_ATTR_TRANSFORM_ROT_X); + rBindings.Invalidate(SID_ATTR_TRANSFORM_ROT_Y); + rBindings.Invalidate(SID_ATTR_TRANSFORM_AUTOWIDTH); + rBindings.Invalidate(SID_ATTR_TRANSFORM_AUTOHEIGHT); +} + void ScDrawShell::ExecDrawAttr( SfxRequest& rReq ) { sal_uInt16 nSlot = rReq.GetSlot(); @@ -256,6 +270,9 @@ void ScDrawShell::ExecDrawAttr( SfxRequest& rReq ) if( rMarkList.GetMark(0) != nullptr ) { SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); + std::shared_ptr<SfxRequest> pRequest; + pRequest.reset(new SfxRequest(rReq)); + if( pObj->GetObjIdentifier() == OBJ_CAPTION ) { // Caption Itemset @@ -265,7 +282,7 @@ void ScDrawShell::ExecDrawAttr( SfxRequest& rReq ) SfxItemSet aNewGeoAttr(pView->GetGeoAttrFromMarked()); SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateCaptionDialog(pWin ? pWin->GetFrameWeld() : nullptr, pView)); + VclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateCaptionDialog(pWin ? pWin->GetFrameWeld() : nullptr, pView)); const sal_uInt16* pRange = pDlg->GetInputRanges( *aNewAttr.GetPool() ); SfxItemSet aCombSet( *aNewAttr.GetPool(), pRange ); @@ -273,23 +290,34 @@ void ScDrawShell::ExecDrawAttr( SfxRequest& rReq ) aCombSet.Put( aNewGeoAttr ); pDlg->SetInputSet( &aCombSet ); - if (pDlg->Execute() == RET_OK) - { - rReq.Done(*(pDlg->GetOutputItemSet())); - pView->SetAttributes(*pDlg->GetOutputItemSet()); - pView->SetGeoAttrToMarked(*pDlg->GetOutputItemSet()); - } + pDlg->StartExecuteAsync([=](sal_Int32 nResult){ + if (nResult == RET_OK) + { + pRequest->Done(*(pDlg->GetOutputItemSet())); + pView->SetAttributes(*pDlg->GetOutputItemSet()); + pView->SetGeoAttrToMarked(*pDlg->GetOutputItemSet()); + } + + lcl_invalidateTransformAttr(pViewData->GetViewShell()); + pDlg->disposeOnce(); + }); } else { SfxItemSet aNewAttr(pView->GetGeoAttrFromMarked()); SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateSvxTransformTabDialog(pWin ? pWin->GetFrameWeld() : nullptr, &aNewAttr, pView)); - if (pDlg->Execute() == RET_OK) - { - rReq.Done(*(pDlg->GetOutputItemSet())); - pView->SetGeoAttrToMarked(*pDlg->GetOutputItemSet()); - } + VclPtr<SfxAbstractTabDialog> pDlg(pFact->CreateSvxTransformTabDialog(pWin ? pWin->GetFrameWeld() : nullptr, &aNewAttr, pView)); + + pDlg->StartExecuteAsync([=](sal_Int32 nResult){ + if (nResult == RET_OK) + { + pRequest->Done(*(pDlg->GetOutputItemSet())); + pView->SetGeoAttrToMarked(*pDlg->GetOutputItemSet()); + } + + lcl_invalidateTransformAttr(pViewData->GetViewShell()); + pDlg->disposeOnce(); + }); } } @@ -299,17 +327,7 @@ void ScDrawShell::ExecDrawAttr( SfxRequest& rReq ) } } - ScTabViewShell* pViewShell = pViewData->GetViewShell(); - SfxBindings& rBindings=pViewShell->GetViewFrame()->GetBindings(); - rBindings.Invalidate(SID_ATTR_TRANSFORM_WIDTH); - rBindings.Invalidate(SID_ATTR_TRANSFORM_HEIGHT); - rBindings.Invalidate(SID_ATTR_TRANSFORM_POS_X); - rBindings.Invalidate(SID_ATTR_TRANSFORM_POS_Y); - rBindings.Invalidate(SID_ATTR_TRANSFORM_ANGLE); - rBindings.Invalidate(SID_ATTR_TRANSFORM_ROT_X); - rBindings.Invalidate(SID_ATTR_TRANSFORM_ROT_Y); - rBindings.Invalidate(SID_ATTR_TRANSFORM_AUTOWIDTH); - rBindings.Invalidate(SID_ATTR_TRANSFORM_AUTOHEIGHT); + lcl_invalidateTransformAttr(pViewData->GetViewShell()); break; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits