From eed212b1cc03b8f131e5c28730b0e6a55c3e22af Mon Sep 17 00:00:00 2001 From: Dennis Francis Date: Tue, 25 May 2021 10:35:22 +0530 Subject: sc: lokit: fix wrong edit cursor coordinates for numeric cells MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The cursor coordinates returned by editengine implementation is computed with respect to document-visible-area in "display" hmm and not "print" hmm. For numeric cells, the visible top-left is always non-zero, hence triggering this incorrect "refpoint" subtraction to compute "relrect". The fix is to calculate the correct "relrect" by subtracting the display hmm version of "refpoint" from the edit cursor rectange and then convert to twips. Change-Id: I4b663edcb1f74e1bdcc300788769d580fcfe7e17 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116426 Tested-by: Jenkins CollaboraOffice Reviewed-by: Luboš Luňák Reviewed-by: Dennis Francis (cherry picked from commit 77704022556bb97a64ef47666230a2c0232d45d3) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116540 Tested-by: Jenkins --- editeng/source/editeng/impedit.cxx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'editeng') diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx index bf7ac05e868e..919873893575 100644 --- a/editeng/source/editeng/impedit.cxx +++ b/editeng/source/editeng/impedit.cxx @@ -1318,11 +1318,15 @@ void ImpEditView::ShowCursor( bool bGotoCursor, bool bForceVisCursor ) MapUnit eDevUnit = rOutDev.GetMapMode().GetMapUnit(); tools::Rectangle aCursorRectPureLogical(aEditCursor.TopLeft(), GetCursor()->GetSize()); - // Get rectangle in window-coordinates from editeng(doc) coordinates. - aCursorRectPureLogical = mpLOKSpecialPositioning->GetWindowPos(aCursorRectPureLogical, eDevUnit); + // Get rectangle in window-coordinates from editeng(doc) coordinates in hmm. + aCursorRectPureLogical = GetWindowPos(aCursorRectPureLogical); + Point aRefPointLogical = GetOutputArea().TopLeft(); + // Get the relative coordinates w.r.t refpoint in display hmm. + aCursorRectPureLogical.Move(-aRefPointLogical.X(), -aRefPointLogical.Y()); + // Convert to twips. + aCursorRectPureLogical = OutputDevice::LogicToLogic(aCursorRectPureLogical, MapMode(eDevUnit), MapMode(MapUnit::MapTwip)); + // "refpoint" in print twips. const Point aRefPoint = mpLOKSpecialPositioning->GetRefPoint(); - // Get the relative coordinates w.r.t rRefPoint. - aCursorRectPureLogical.Move(-aRefPoint.X(), -aRefPoint.Y()); aMessageParams.put("relrect", aCursorRectPureLogical.toString()); aMessageParams.put("refpoint", aRefPoint.toString()); } -- cgit collabora/co-24.04.3 LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff