winaccessibility/inc/AccObjectManagerAgent.hxx                        |    2 
 winaccessibility/inc/AccObjectWinManager.hxx                          |    1 
 winaccessibility/source/service/AccDescendantManagerEventListener.cxx |    3 
 winaccessibility/source/service/AccObjectManagerAgent.cxx             |  146 
+++-------
 winaccessibility/source/service/AccObjectWinManager.cxx               |    9 
 5 files changed, 65 insertions(+), 96 deletions(-)

New commits:
commit e5aab6900f86042e4360bb792bc47690d09eaed7
Author:     Michael Weghorn <[email protected]>
AuthorDate: Mon Aug 7 09:17:45 2023 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Tue Aug 8 08:17:52 2023 +0200

    wina11y: Move GetIAccessibleFromXAccessible logic
    
    Move the logic from AccObjectManagerAgent::GetIAccessibleFromXAccessible
    to the new AccObjectWinManager::GetIAccessibleFromXAccessible and just
    forward to that one.
    
    This is in preparation of dropping the AccObjectManagerAgent
    indirection altogether.
    
    Change-Id: Ic276a04cf7dda3762cee0d3932962e2a0947cfde
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155435
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/winaccessibility/inc/AccObjectWinManager.hxx 
b/winaccessibility/inc/AccObjectWinManager.hxx
index 86a75c80fad7..55640fd8c6cb 100644
--- a/winaccessibility/inc/AccObjectWinManager.hxx
+++ b/winaccessibility/inc/AccObjectWinManager.hxx
@@ -123,6 +123,7 @@ public:
     static bool IsContainer( css::accessibility::XAccessible* pAccessible );
 
     IMAccessible* GetIMAccByXAcc( css::accessibility::XAccessible* pXAcc );
+    bool GetIAccessibleFromXAccessible(css::accessibility::XAccessible* pXAcc, 
IAccessible** ppIA);
     IMAccessible* GetIAccessibleFromResID(long resID);
 
     void NotifyDestroy( css::accessibility::XAccessible* pXAcc );
diff --git a/winaccessibility/source/service/AccObjectManagerAgent.cxx 
b/winaccessibility/source/service/AccObjectManagerAgent.cxx
index 073a5da7f748..eb242c243183 100644
--- a/winaccessibility/source/service/AccObjectManagerAgent.cxx
+++ b/winaccessibility/source/service/AccObjectManagerAgent.cxx
@@ -258,10 +258,7 @@ bool AccObjectManagerAgent::GetIAccessibleFromXAccessible(
         XAccessible* pXAcc, IAccessible** ppXI)
 {
     assert(pWinManager);
-    *ppXI = pWinManager->GetIMAccByXAcc(pXAcc);
-    if(*ppXI)
-        return true;
-    return false;
+    return pWinManager->GetIAccessibleFromXAccessible(pXAcc, ppXI);
 }
 
 XAccessible* AccObjectManagerAgent::GetParentXAccessible( XAccessible* pXAcc )
diff --git a/winaccessibility/source/service/AccObjectWinManager.cxx 
b/winaccessibility/source/service/AccObjectWinManager.cxx
index c8e5c7ac936b..dfc74f7bd4ef 100644
--- a/winaccessibility/source/service/AccObjectWinManager.cxx
+++ b/winaccessibility/source/service/AccObjectWinManager.cxx
@@ -1023,6 +1023,15 @@ IMAccessible* 
AccObjectWinManager::GetIMAccByXAcc(XAccessible* pXAcc)
     }
 }
 
+bool 
AccObjectWinManager::GetIAccessibleFromXAccessible(css::accessibility::XAccessible*
 pXAcc,
+                                                        IAccessible** ppIA)
+{
+    *ppIA = GetIMAccByXAcc(pXAcc);
+    if (*ppIA)
+        return true;
+    return false;
+}
+
 /**
    * Query and get IAccessible interface by child id from list.
    * @param resID, childID.
commit 532078a68b7e491845262524ba5e8338cd42f303
Author:     Michael Weghorn <[email protected]>
AuthorDate: Mon Aug 7 09:04:32 2023 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Tue Aug 8 08:17:44 2023 +0200

    wina11y: Replace nullptr check with assert
    
    `AccObjectManagerAgent::pWinManager` gets set
    in the ctor and is never reset explicitly, so
    I don't see any way it can ever be null before
    the `AccObjectManagerAgent` object itself gets
    destroyed.
    
    Change-Id: I027ca0d15cbc7ca8e183b71b0dbee7ce1acc925d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155434
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/winaccessibility/source/service/AccObjectManagerAgent.cxx 
b/winaccessibility/source/service/AccObjectManagerAgent.cxx
index f5fbecb0eb98..073a5da7f748 100644
--- a/winaccessibility/source/service/AccObjectManagerAgent.cxx
+++ b/winaccessibility/source/service/AccObjectManagerAgent.cxx
@@ -46,8 +46,8 @@ AccObjectManagerAgent::~AccObjectManagerAgent()
    */
 void  AccObjectManagerAgent::UpdateAccName( XAccessible* pXAcc )
 {
-    if( pWinManager )
-        pWinManager->UpdateAccName( pXAcc );
+    assert(pWinManager);
+    pWinManager->UpdateAccName( pXAcc );
 }
 
 /**
@@ -57,8 +57,8 @@ void  AccObjectManagerAgent::UpdateAccName( XAccessible* 
pXAcc )
    */
 void  AccObjectManagerAgent::UpdateAction( XAccessible* pXAcc )
 {
-    if( pWinManager )
-        pWinManager->UpdateAction( pXAcc );
+    assert(pWinManager);
+    pWinManager->UpdateAction( pXAcc );
 }
 
 /**
@@ -69,8 +69,8 @@ void  AccObjectManagerAgent::UpdateAction( XAccessible* pXAcc 
)
    */
 void  AccObjectManagerAgent::UpdateValue( XAccessible* pXAcc, Any pAny )
 {
-    if( pWinManager )
-        pWinManager->SetValue( pXAcc, pAny );
+    assert(pWinManager);
+    pWinManager->SetValue( pXAcc, pAny );
 }
 
 /**
@@ -81,8 +81,8 @@ void  AccObjectManagerAgent::UpdateValue( XAccessible* pXAcc, 
Any pAny )
    */
 void  AccObjectManagerAgent::UpdateValue( XAccessible* pXAcc )
 {
-    if( pWinManager )
-        pWinManager->UpdateValue( pXAcc );
+    assert(pWinManager);
+    pWinManager->UpdateValue( pXAcc );
 }
 
 /**
@@ -93,8 +93,8 @@ void  AccObjectManagerAgent::UpdateValue( XAccessible* pXAcc )
    */
 void  AccObjectManagerAgent::UpdateAccName( XAccessible* pXAcc, Any newName)
 {
-    if( pWinManager )
-        pWinManager->SetAccName( pXAcc, newName );
+    assert(pWinManager);
+    pWinManager->SetAccName( pXAcc, newName );
 }
 
 /**
@@ -107,10 +107,8 @@ void  AccObjectManagerAgent::UpdateAccName( XAccessible* 
pXAcc, Any newName)
 bool AccObjectManagerAgent::InsertAccObj(
         XAccessible* pXAcc, XAccessible* pParentXAcc, HWND hWnd)
 {
-    if( pWinManager )
-        return pWinManager->InsertAccObj(pXAcc, pParentXAcc, hWnd);
-
-    return false;
+    assert(pWinManager);
+    return pWinManager->InsertAccObj(pXAcc, pParentXAcc, hWnd);
 }
 
 /**
@@ -122,8 +120,8 @@ bool AccObjectManagerAgent::InsertAccObj(
 void
 AccObjectManagerAgent::SaveTopWindowHandle(HWND hWnd, XAccessible* pXAcc)
 {
-    if( pWinManager )
-        pWinManager->SaveTopWindowHandle(hWnd, pXAcc);
+    assert(pWinManager);
+    pWinManager->SaveTopWindowHandle(hWnd, pXAcc);
 }
 
 
@@ -137,10 +135,8 @@ AccObjectManagerAgent::SaveTopWindowHandle(HWND hWnd, 
XAccessible* pXAcc)
 bool
 AccObjectManagerAgent::InsertChildrenAccObj(XAccessible* pXAcc, HWND hWnd)
 {
-    if( pWinManager )
-        return pWinManager->InsertChildrenAccObj(pXAcc, hWnd);
-
-    return false;
+    assert(pWinManager);
+    return pWinManager->InsertChildrenAccObj(pXAcc, hWnd);
 }
 
 /**
@@ -151,8 +147,8 @@ AccObjectManagerAgent::InsertChildrenAccObj(XAccessible* 
pXAcc, HWND hWnd)
    */
 void AccObjectManagerAgent::DeleteAccObj( XAccessible* pXAcc )
 {
-    if( pWinManager )
-        pWinManager->DeleteAccObj( pXAcc );
+    assert(pWinManager);
+    pWinManager->DeleteAccObj( pXAcc );
 }
 
 /**
@@ -163,8 +159,8 @@ void AccObjectManagerAgent::DeleteAccObj( XAccessible* 
pXAcc )
    */
 void AccObjectManagerAgent::DeleteChildrenAccObj( XAccessible* pXAcc )
 {
-    if( pWinManager )
-        pWinManager->DeleteChildrenAccObj( pXAcc );
+    assert(pWinManager);
+    pWinManager->DeleteChildrenAccObj( pXAcc );
 }
 
 /**
@@ -175,10 +171,8 @@ void AccObjectManagerAgent::DeleteChildrenAccObj( 
XAccessible* pXAcc )
    */
 void AccObjectManagerAgent::DecreaseState( XAccessible* pXAcc, sal_Int64 
pState )
 {
-    if(pWinManager)
-    {
-        pWinManager->DecreaseState( pXAcc,  pState );
-    }
+    assert(pWinManager);
+    pWinManager->DecreaseState( pXAcc,  pState );
 }
 
 /**
@@ -189,16 +183,14 @@ void AccObjectManagerAgent::DecreaseState( XAccessible* 
pXAcc, sal_Int64 pState
    */
 void AccObjectManagerAgent::IncreaseState( XAccessible* pXAcc, sal_Int64 
pState )
 {
-    if(pWinManager)
-    {
-        pWinManager->IncreaseState( pXAcc,  pState );
-    }
+    assert(pWinManager);
+    pWinManager->IncreaseState( pXAcc,  pState );
 }
 
 void  AccObjectManagerAgent::UpdateState( css::accessibility::XAccessible* 
pXAcc )
 {
-    if(pWinManager)
-        pWinManager->UpdateState(pXAcc);
+    assert(pWinManager);
+    pWinManager->UpdateState(pXAcc);
 }
 
 /**
@@ -209,10 +201,8 @@ void  AccObjectManagerAgent::UpdateState( 
css::accessibility::XAccessible* pXAcc
    */
 bool AccObjectManagerAgent::NotifyAccEvent(UnoMSAAEvent eEvent, XAccessible* 
pXAcc)
 {
-    if(pWinManager)
-        return pWinManager->NotifyAccEvent(pXAcc, eEvent);
-
-    return false;
+    assert(pWinManager);
+    return pWinManager->NotifyAccEvent(pXAcc, eEvent);
 }
 
 /**
@@ -222,10 +212,8 @@ bool AccObjectManagerAgent::NotifyAccEvent(UnoMSAAEvent 
eEvent, XAccessible* pXA
    */
 bool AccObjectManagerAgent::IsContainer( XAccessible* pXAcc )
 {
-    if(pWinManager)
-        return AccObjectWinManager::IsContainer(pXAcc);
-
-    return false;
+    assert(pWinManager);
+    return AccObjectWinManager::IsContainer(pXAcc);
 }
 
 /**
@@ -235,10 +223,8 @@ bool AccObjectManagerAgent::IsContainer( XAccessible* 
pXAcc )
    */
 IMAccessible* AccObjectManagerAgent::GetIMAccByXAcc(XAccessible* pXAcc)
 {
-    if(pWinManager)
-        return pWinManager->GetIMAccByXAcc(pXAcc);
-
-    return nullptr;
+    assert(pWinManager);
+    return pWinManager->GetIMAccByXAcc(pXAcc);
 }
 
 /**
@@ -248,8 +234,8 @@ IMAccessible* 
AccObjectManagerAgent::GetIMAccByXAcc(XAccessible* pXAcc)
    */
 void  AccObjectManagerAgent::NotifyDestroy(XAccessible* pXAcc)
 {
-    if(pWinManager)
-        pWinManager->NotifyDestroy(pXAcc);
+    assert(pWinManager);
+    pWinManager->NotifyDestroy(pXAcc);
 }
 
 /**
@@ -259,8 +245,8 @@ void  AccObjectManagerAgent::NotifyDestroy(XAccessible* 
pXAcc)
    */
 void AccObjectManagerAgent::GetIAccessibleFromResID(long 
childID,IMAccessible** pIMAcc)
 {
-    if(pWinManager)
-        *pIMAcc = pWinManager->GetIAccessibleFromResID(childID);
+    assert(pWinManager);
+    *pIMAcc = pWinManager->GetIAccessibleFromResID(childID);
 }
 
 /**
@@ -271,69 +257,54 @@ void AccObjectManagerAgent::GetIAccessibleFromResID(long 
childID,IMAccessible**
 bool AccObjectManagerAgent::GetIAccessibleFromXAccessible(
         XAccessible* pXAcc, IAccessible** ppXI)
 {
-    if(pWinManager)
-    {
-        *ppXI = pWinManager->GetIMAccByXAcc(pXAcc);
-        if(*ppXI)
-            return true;
-    }
+    assert(pWinManager);
+    *ppXI = pWinManager->GetIMAccByXAcc(pXAcc);
+    if(*ppXI)
+        return true;
     return false;
 }
 
 XAccessible* AccObjectManagerAgent::GetParentXAccessible( XAccessible* pXAcc )
 {
-    if(pWinManager)
-        return pWinManager->GetParentXAccessible( pXAcc );
-
-    return nullptr;
+    assert(pWinManager);
+    return pWinManager->GetParentXAccessible( pXAcc );
 }
 
 short AccObjectManagerAgent::GetParentRole( XAccessible* pXAcc )
 {
-    if(pWinManager)
-        return pWinManager->GetParentRole( pXAcc );
-
-    return -1;
+    assert(pWinManager);
+    return pWinManager->GetParentRole( pXAcc );
 }
 
 void AccObjectManagerAgent::UpdateChildState(XAccessible* pXAcc)
 {
-    if(pWinManager)
-        pWinManager->UpdateChildState( pXAcc );
+    assert(pWinManager);
+    pWinManager->UpdateChildState( pXAcc );
 }
 
 
 bool AccObjectManagerAgent::IsSpecialToolbarItem(XAccessible* pXAcc)
 {
-    if(pWinManager)
-        return pWinManager->IsSpecialToolbarItem(pXAcc);
-
-    return false;
+    assert(pWinManager);
+    return pWinManager->IsSpecialToolbarItem(pXAcc);
 }
 
 XAccessible* AccObjectManagerAgent::GetAccDocByAccTopWin( XAccessible* pXAcc )
 {
-    if (pWinManager)
-    {
-        return pWinManager->GetAccDocByAccTopWin( pXAcc );
-    }
-    return nullptr;
+    assert(pWinManager);
+    return pWinManager->GetAccDocByAccTopWin( pXAcc );
 }
+
 bool AccObjectManagerAgent::IsTopWinAcc(XAccessible* pXAcc)
 {
-    if (pWinManager)
-    {
-        return pWinManager->IsTopWinAcc( pXAcc );
-    }
-    return false;
+    assert(pWinManager);
+    return pWinManager->IsTopWinAcc( pXAcc );
 }
 
 bool AccObjectManagerAgent::IsStateManageDescendant(XAccessible* pXAcc)
 {
-    if(pWinManager)
-        return AccObjectWinManager::IsStateManageDescendant( pXAcc );
-
-    return false;
+    assert(pWinManager);
+    return AccObjectWinManager::IsStateManageDescendant( pXAcc );
 }
 
 /**
commit 2f41574c3472f46feede6f5a62a4f26254dccee1
Author:     Michael Weghorn <[email protected]>
AuthorDate: Mon Aug 7 08:58:16 2023 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Tue Aug 8 08:17:37 2023 +0200

    wina11y: Drop AccObjectManagerAgent indirection to get a11y role
    
    Just retrieve it from the context directly here, and drop the now
    unused `AccObjectWinManager::GetRole`.
    
    Change-Id: I4c14d2f9b6fb1df9c58149576897c8585ba4a437
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155433
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/winaccessibility/inc/AccObjectManagerAgent.hxx 
b/winaccessibility/inc/AccObjectManagerAgent.hxx
index a83650141cd9..8cbfdff1ad53 100644
--- a/winaccessibility/inc/AccObjectManagerAgent.hxx
+++ b/winaccessibility/inc/AccObjectManagerAgent.hxx
@@ -87,8 +87,6 @@ public:
 
     bool IsSpecialToolbarItem(css::accessibility::XAccessible* pXAcc);
 
-    short GetRole(css::accessibility::XAccessible* pXAcc);
-
     css::accessibility::XAccessible* GetAccDocByAccTopWin( 
css::accessibility::XAccessible* pXAcc );
     bool IsTopWinAcc( css::accessibility::XAccessible* pXAcc );
 
diff --git 
a/winaccessibility/source/service/AccDescendantManagerEventListener.cxx 
b/winaccessibility/source/service/AccDescendantManagerEventListener.cxx
index daecf6e295f4..d132c4022d88 100644
--- a/winaccessibility/source/service/AccDescendantManagerEventListener.cxx
+++ b/winaccessibility/source/service/AccDescendantManagerEventListener.cxx
@@ -84,8 +84,9 @@ void 
AccDescendantManagerEventListener::HandleSelectionChangedEvent(Any oldValue
         if(xChild.is())
         {
             XAccessible* pAcc = xChild.get();
+            Reference<css::accessibility::XAccessibleContext> xContext = 
pAcc->getAccessibleContext();
             //if the Role is the SC cell ,don't add the selected state.
-            if (pAgent->GetRole(pAcc) != AccessibleRole::TABLE_CELL)
+            if (xContext.is() && xContext->getAccessibleRole() != 
AccessibleRole::TABLE_CELL)
             {
                 pAgent->IncreaseState( pAcc, AccessibleStateType::SELECTED);
             }
diff --git a/winaccessibility/source/service/AccObjectManagerAgent.cxx 
b/winaccessibility/source/service/AccObjectManagerAgent.cxx
index 3ed3984c8828..f5fbecb0eb98 100644
--- a/winaccessibility/source/service/AccObjectManagerAgent.cxx
+++ b/winaccessibility/source/service/AccObjectManagerAgent.cxx
@@ -311,14 +311,6 @@ bool 
AccObjectManagerAgent::IsSpecialToolbarItem(XAccessible* pXAcc)
     return false;
 }
 
-short AccObjectManagerAgent::GetRole(XAccessible* pXAcc)
-{
-    if(pWinManager)
-        return AccObjectWinManager::GetRole( pXAcc );
-
-    return -1;
-}
-
 XAccessible* AccObjectManagerAgent::GetAccDocByAccTopWin( XAccessible* pXAcc )
 {
     if (pWinManager)

Reply via email to