On Mon, 2019-12-16 at 13:10 +0100, Martin Pieuchot wrote: > I'm looking for help/explanation about the coordinate system and > scrolling API to use in `SwAccessibleParagraph'. > > I'm currently working on bug #118418 [1], trying to implement > scrollSubstringTo() and scrollSubstringToPoint() like I did for > gtk [2] and evince [3]. > > The diff below clearly shows that I don't know how to translate a > character index to coordinates that can be feed to Window's Scroll(). > > So here are my questions: > > - Is calling getWindow()'s Scroll() the correct way to realize the > scrolling. If so, the code below doesn't correctly refresh all the > text, so what am I missing? > > - What API should I use to convert the coordinates? I don't know for sure the correct answer, but I feel that for writer ScrollMDI might be your friend here and that the code should look something like the attached SwAccessibleParagraph::scrollToPosition demo. I haven't tested or checked further if its the right approach but maybe that helps.
From a55b4e20faef145f4bb0619bd22a9f78e0a61ca6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@xxxxxxxxxx> Date: Wed, 22 Jan 2020 17:17:34 +0000 Subject: [PATCH] wip: demo how I think ScrollMDI could be used here Change-Id: I56ad6a303ef3c9e54ffa3ac506cf206b664831fc --- sw/source/core/access/accpara.cxx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sw/source/core/access/accpara.cxx b/sw/source/core/access/accpara.cxx index 0ffeea847e82..678aa2dce64c 100644 --- a/sw/source/core/access/accpara.cxx +++ b/sw/source/core/access/accpara.cxx @@ -21,6 +21,7 @@ #include <numeric> #include <txtfrm.hxx> #include <flyfrm.hxx> +#include <mdiexp.hxx> #include <ndtxt.hxx> #include <pam.hxx> #include <unotextrange.hxx> @@ -2899,9 +2900,14 @@ sal_Int32 SAL_CALL SwAccessibleParagraph::getTextMarkupCount( sal_Int32 nTextMar } //MSAA Extension Implementation in app module -sal_Bool SAL_CALL SwAccessibleParagraph::scrollToPosition( const css::awt::Point&, sal_Bool ) +sal_Bool SAL_CALL SwAccessibleParagraph::scrollToPosition( const css::awt::Point& rPoint, sal_Bool ) { - return false; + Point aPt(rPoint.X, rPoint.Y); + Point aCorePoint(GetMap()->PixelToCore(aPt)); + const SwRect aRect(aCorePoint, aCorePoint); + SwViewShell* pViewShell = GetMap()->GetShell(); + ScrollMDI(pViewShell, aRect, USHRT_MAX, USHRT_MAX); + return true; } sal_Int32 SAL_CALL SwAccessibleParagraph::getSelectedPortionCount( ) -- 2.24.1
_______________________________________________ LibreOffice mailing list LibreOffice@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/libreoffice