svx/source/accessibility/AccessibleFrameSelector.cxx |   17 +++++++++++++++++
 svx/source/inc/AccessibleFrameSelector.hxx           |    1 +
 2 files changed, 18 insertions(+)

New commits:
commit d522a31a095eacc8eadc26419c02bd939c195c6b
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Aug 19 13:12:13 2022 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Aug 19 20:35:43 2022 +0200

    implement line arrangement valueset a11y getLocationOnScreen
    
    directly rather than the default which iterates through the a11y
    parent to calculate it, which doesn't work when hosted in a gtk widget
    
    Change-Id: I90264a99c859a8b2a50daaf3befb016569b5a3ec
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138557
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/svx/source/accessibility/AccessibleFrameSelector.cxx 
b/svx/source/accessibility/AccessibleFrameSelector.cxx
index 4f5af742feaf..9816c7c8d4dd 100644
--- a/svx/source/accessibility/AccessibleFrameSelector.cxx
+++ b/svx/source/accessibility/AccessibleFrameSelector.cxx
@@ -192,6 +192,23 @@ css::awt::Rectangle AccFrameSelector::implGetBounds()
     return aRet;
 }
 
+css::awt::Point AccFrameSelector::getLocationOnScreen()
+{
+    SolarMutexGuard aGuard;
+    IsValid();
+
+    css::awt::Point aScreenLoc(0, 0);
+
+    if (weld::DrawingArea* pDrawingArea = mpFrameSel->GetDrawingArea())
+    {
+        Point aPos = pDrawingArea->get_accessible_location_on_screen();
+        aScreenLoc.X = aPos.X();
+        aScreenLoc.Y = aPos.Y();
+    }
+
+    return aScreenLoc;
+}
+
 void AccFrameSelector::IsValid()
 {
     if(!mpFrameSel)
diff --git a/svx/source/inc/AccessibleFrameSelector.hxx 
b/svx/source/inc/AccessibleFrameSelector.hxx
index cb6fbda5cd9e..46083e4aade5 100644
--- a/svx/source/inc/AccessibleFrameSelector.hxx
+++ b/svx/source/inc/AccessibleFrameSelector.hxx
@@ -57,6 +57,7 @@ public:
     virtual OUString SAL_CALL getAccessibleName(  ) override;
     virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > 
SAL_CALL getAccessibleRelationSet(  ) override;
     virtual sal_Int64 SAL_CALL getAccessibleStateSet(  ) override;
+    virtual css::awt::Point SAL_CALL getLocationOnScreen() override;
 
     //XAccessible
     virtual css::uno::Reference< css::accessibility::XAccessibleContext > 
SAL_CALL getAccessibleContext(  ) override;

Reply via email to