svx/source/svdraw/svdmrkv.cxx | 82 ++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 42 deletions(-)
New commits: commit f74846aa83b5285bd6b53cfb1ea75bcf80d7f74d Author: Tomaž Vajngerl <[email protected]> AuthorDate: Sun Aug 25 23:00:53 2019 +0900 Commit: Tomaž Vajngerl <[email protected]> CommitDate: Thu Sep 5 13:02:19 2019 +0200 lok: cleanup and simplify graphic selection code Don't get SfxViewShell all the time, just one and ask if it is available (non-null). Rename sSelection to sSelectionText so it doesn't look similar to aSelection. Group more if statement together - especially to bring them under bTiledRendering "umbrella" Reviewed-on: https://gerrit.libreoffice.org/78082 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <[email protected]> (cherry picked from commit f876dc9e16b9c85ae85ed848865531a8be0e911c) Change-Id: Ic998f67a2e5de7482a0073a67ddffd721c012525 Reviewed-on: https://gerrit.libreoffice.org/78328 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Tomaž Vajngerl <[email protected]> diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx index ffebad84a9c3..00a2e44e428b 100644 --- a/svx/source/svdraw/svdmrkv.cxx +++ b/svx/source/svdraw/svdmrkv.cxx @@ -757,6 +757,8 @@ void SdrMarkView::SetMarkHandles(SfxViewShell* pOtherShell) // correct position ) Point aGridOff = GetGridOffset(); + SfxViewShell* pViewShell = GetSfxViewShell(); + // check if text edit or ole is active and handles need to be suppressed. This may be the case // when a single object is selected // Using a strict return statement is okay here; no handles means *no* handles. @@ -777,7 +779,7 @@ void SdrMarkView::SetMarkHandles(SfxViewShell* pOtherShell) if (bTiledRendering) { // Suppress handles -> empty graphic selection. - if(SfxViewShell* pViewShell = GetSfxViewShell()) + if (pViewShell) { pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_GRAPHIC_SELECTION, "EMPTY"); SfxLokHelper::notifyOtherViews(pViewShell, LOK_CALLBACK_GRAPHIC_VIEW_SELECTION, "selection", "EMPTY"); @@ -790,14 +792,11 @@ void SdrMarkView::SetMarkHandles(SfxViewShell* pOtherShell) // formerly #i118524#: if inplace activated OLE is selected, suppress handles const SdrOle2Obj* pSdrOle2Obj = dynamic_cast< const SdrOle2Obj* >(mpMarkedObj); - if(pSdrOle2Obj && (pSdrOle2Obj->isInplaceActive() || pSdrOle2Obj->isUiActive())) + if (pSdrOle2Obj && (pSdrOle2Obj->isInplaceActive() || pSdrOle2Obj->isUiActive())) { - if(SfxViewShell* pViewShell = GetSfxViewShell()) - { - pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_GRAPHIC_SELECTION, "INPLACE"); - SfxLokHelper::notifyOtherViews(pViewShell, LOK_CALLBACK_GRAPHIC_VIEW_SELECTION, "selection", "INPLACE"); - return; - } + pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_GRAPHIC_SELECTION, "INPLACE"); + SfxLokHelper::notifyOtherViews(pViewShell, LOK_CALLBACK_GRAPHIC_VIEW_SELECTION, "selection", "INPLACE"); + return; } if (bTiledRendering && mpMarkedObj->GetObjIdentifier() == OBJ_TABLE) @@ -806,7 +805,7 @@ void SdrMarkView::SetMarkHandles(SfxViewShell* pOtherShell) if (xController.is() && xController->hasSelectedCells()) { // The table shape has selected cells, which provide text selection already -> no graphic selection. - if(SfxViewShell* pViewShell = GetSfxViewShell()) + if (pViewShell) { pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_GRAPHIC_SELECTION, "EMPTY"); SfxLokHelper::notifyOtherViews(pViewShell, LOK_CALLBACK_GRAPHIC_VIEW_SELECTION, "selection", "EMPTY"); @@ -817,35 +816,33 @@ void SdrMarkView::SetMarkHandles(SfxViewShell* pOtherShell) } tools::Rectangle aRect(GetMarkedObjRect()); - tools::Rectangle aSelection(aRect); - bool bIsChart = false; - if (bTiledRendering && !aRect.IsEmpty()) + if (bTiledRendering && pViewShell) { - sal_uInt32 nTotalPaintWindows = this->PaintWindowCount(); - if (nTotalPaintWindows == 1) + tools::Rectangle aSelection(aRect); + bool bIsChart = false; + + if (!aRect.IsEmpty()) { - const vcl::Window* pWin = dynamic_cast<const vcl::Window*>(this->GetFirstOutputDevice()); - if (pWin && pWin->IsChart()) + sal_uInt32 nTotalPaintWindows = this->PaintWindowCount(); + if (nTotalPaintWindows == 1) { - bIsChart = true; - const vcl::Window* pViewShellWindow = GetSfxViewShell()->GetEditWindowForActiveOLEObj(); - if (pViewShellWindow && pViewShellWindow->IsAncestorOf(*pWin)) + const vcl::Window* pWin = dynamic_cast<const vcl::Window*>(this->GetFirstOutputDevice()); + if (pWin && pWin->IsChart()) { - Point aOffsetPx = pWin->GetOffsetPixelFrom(*pViewShellWindow); - Point aLogicOffset = pWin->PixelToLogic(aOffsetPx); - aSelection.Move(aLogicOffset.getX(), aLogicOffset.getY()); + bIsChart = true; + const vcl::Window* pViewShellWindow = GetSfxViewShell()->GetEditWindowForActiveOLEObj(); + if (pViewShellWindow && pViewShellWindow->IsAncestorOf(*pWin)) + { + Point aOffsetPx = pWin->GetOffsetPixelFrom(*pViewShellWindow); + Point aLogicOffset = pWin->PixelToLogic(aOffsetPx); + aSelection.Move(aLogicOffset.getX(), aLogicOffset.getY()); + } } } } - } - if (bTiledRendering) - { - OString sSelection; - if (aSelection.IsEmpty()) - sSelection = "EMPTY"; - else + if (!aSelection.IsEmpty()) { // In case the map mode is in 100th MM, then need to convert the coordinates over to twips for LOK. if (mpMarkedPV) @@ -857,14 +854,13 @@ void SdrMarkView::SetMarkHandles(SfxViewShell* pOtherShell) } } - sSelection = aSelection.toString(); - // hide the text selection too - if(SfxViewShell* pViewShell = GetSfxViewShell()) - pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_TEXT_SELECTION, ""); + pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_TEXT_SELECTION, ""); } - if(SfxViewShell* pViewShell = GetSfxViewShell()) + { + OString sSelectionText; + if (GetMarkedObjectCount()) { SdrMark* pM = GetSdrMarkByIndex(0); @@ -879,8 +875,6 @@ void SdrMarkView::SetMarkHandles(SfxViewShell* pOtherShell) nRotAngle *= 10; } - sSelection += OString(", ") + OString::number(nRotAngle); - OStringBuffer aExtraInfo; if (bWriterGraphic) { @@ -1014,27 +1008,31 @@ void SdrMarkView::SetMarkHandles(SfxViewShell* pOtherShell) } } } - + sSelectionText = aSelection.toString(); + sSelectionText += OString(", ") + OString::number(nRotAngle); if (!aExtraInfo.isEmpty()) { - sSelection += ", "; - sSelection += aExtraInfo.makeStringAndClear(); + sSelectionText += ", "; + sSelectionText += aExtraInfo.makeStringAndClear(); } } + if (sSelectionText.isEmpty()) + sSelectionText = "EMPTY"; + if (pOtherShell) { // An other shell wants to know about our existing // selection. if (pViewShell != pOtherShell) - SfxLokHelper::notifyOtherView(pViewShell, pOtherShell, LOK_CALLBACK_GRAPHIC_VIEW_SELECTION, "selection", sSelection); + SfxLokHelper::notifyOtherView(pViewShell, pOtherShell, LOK_CALLBACK_GRAPHIC_VIEW_SELECTION, "selection", sSelectionText); } else { // We have a new selection, so both pViewShell and the // other views want to know about it. - pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_GRAPHIC_SELECTION, sSelection.getStr()); - SfxLokHelper::notifyOtherViews(pViewShell, LOK_CALLBACK_GRAPHIC_VIEW_SELECTION, "selection", sSelection); + pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_GRAPHIC_SELECTION, sSelectionText.getStr()); + SfxLokHelper::notifyOtherViews(pViewShell, LOK_CALLBACK_GRAPHIC_VIEW_SELECTION, "selection", sSelectionText); } } } _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
