editeng/source/editeng/impedit.cxx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
New commits: commit 2ce5938b38c5080e5ac7f200afa1446abe53db28 Author: Marco Cecchetti <marco.cecche...@collabora.com> AuthorDate: Thu Apr 9 18:51:46 2020 +0200 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sun May 10 11:17:01 2020 +0200 lok: calc: formula bar: improve selection handling This patch provides some improvements for the single input line case with a multi-line text selection: - selection rectangles are correct when selection is expanded to the previous or the next line - two flag parameters for notifying the client if the start/end selection handles should be visible or they don't Change-Id: Ica0428786183c4b5a15870c43490bc69452c2a49 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92121 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Andras Timar <andras.ti...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93344 Tested-by: Jenkins diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx index b5be152d6ece..e087305effd1 100644 --- a/editeng/source/editeng/impedit.cxx +++ b/editeng/source/editeng/impedit.cxx @@ -278,6 +278,10 @@ void ImpEditView::DrawSelectionXOR( EditSelection aTmpSel, vcl::Region* pRegion, const sal_Int32 nEndPara = pEditEngine->GetEditDoc().GetPos(pEndNode); if (nStartPara == EE_PARA_NOT_FOUND || nEndPara == EE_PARA_NOT_FOUND) return; + + bool bStartHandleVisible = false; + bool bEndHandleVisible = false; + for ( sal_Int32 nPara = nStartPara; nPara <= nEndPara; nPara++ ) { ParaPortion* pTmpPortion = pEditEngine->GetParaPortions().SafeGetObject( nPara ); @@ -341,6 +345,11 @@ void ImpEditView::DrawSelectionXOR( EditSelection aTmpSel, vcl::Region* pRegion, if ( aBottomRight.Y() < GetVisDocTop() ) continue; + if ( ( nPara == nStartPara ) && ( nLine == nStartLine ) ) + bStartHandleVisible = true; + if ( ( nPara == nEndPara ) && ( nLine == nEndLine ) ) + bEndHandleVisible = true; + // Now that we have Bidi, the first/last index doesn't have to be the 'most outside' position if ( !bPartOfLine ) { @@ -405,6 +414,8 @@ void ImpEditView::DrawSelectionXOR( EditSelection aTmpSel, vcl::Region* pRegion, const OUString rAction("text_selection"); std::vector<vcl::LOKPayloadItem> aItems; aItems.emplace_back("rectangles", sRectangle); + aItems.emplace_back("startHandleVisible", OString::boolean(bStartHandleVisible)); + aItems.emplace_back("endHandleVisible", OString::boolean(bEndHandleVisible)); pNotifier->notifyWindow(pParent->GetLOKWindowId(), rAction, aItems); pPolyPoly.reset(); return; @@ -1384,6 +1395,11 @@ Pair ImpEditView::Scroll( long ndX, long ndY, ScrollRangeCheck nRangeCheck ) EENotify aNotify( EE_NOTIFY_TEXTVIEWSCROLLED ); pEditEngine->pImpEditEngine->GetNotifyHdl().Call( aNotify ); } + + if (comphelper::LibreOfficeKit::isActive()) + { + DrawSelectionXOR(); + } } return Pair( nRealDiffX, nRealDiffY ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits