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)
