winaccessibility/inc/AccObjectWinManager.hxx | 1 winaccessibility/source/UAccCOM/AccTable.cxx | 34 ++-- winaccessibility/source/UAccCOM/MAccessible.cxx | 128 ++++++++-------- winaccessibility/source/UAccCOM/MAccessible.h | 11 - winaccessibility/source/UAccCOM/UAccCOM.cxx | 4 winaccessibility/source/service/AccObjectWinManager.cxx | 10 - winaccessibility/source/service/msaaservice_impl.cxx | 8 + 7 files changed, 104 insertions(+), 92 deletions(-)
New commits: commit 732ec36edfd09d2091d70c4d71b5f182fe279c45 Author: Michael Stahl <mst...@redhat.com> Date: Sun Nov 24 00:23:44 2013 +0100 winaccessibility: let CoCreateInstance calls find the components The COM services are not found because they are not registered in the registry via regsvr32 (doing that is unnecessary since the components are only instantiated by winaccessibility code and undesirable since that would likely register the IAccessible2 types too, breaking A11y tools) and the special manifest resource #97 that ActivateActContext() tries to load does not exist in UAccCOM.dll; this would need to be a XML manifest, the *.rgs and *.tlb that are already included as individual resources won't work. After reading ATL headers for hours it is immediately obvious that the COM components can simply be registered by a call to CComModule::RegisterClassObjects() from DllMain; this just requires actually loading the UAccCOM library from somewhere so the DllMain runs. Change-Id: Id58b754835cd2f1bcada37e5639a6b6042a42fd5 diff --git a/winaccessibility/source/UAccCOM/UAccCOM.cxx b/winaccessibility/source/UAccCOM/UAccCOM.cxx index 1f7eab4..851464f 100644 --- a/winaccessibility/source/UAccCOM/UAccCOM.cxx +++ b/winaccessibility/source/UAccCOM/UAccCOM.cxx @@ -66,10 +66,14 @@ extern "C" if (dwReason == DLL_PROCESS_ATTACH) { _Module.Init(ObjectMap, hInstance, &LIBID_UACCCOMLib); + _Module.RegisterClassObjects(CLSCTX_INPROC_SERVER, REGCLS_MULTIPLEUSE); DisableThreadLibraryCalls(hInstance); } else if (dwReason == DLL_PROCESS_DETACH) + { + _Module.RevokeClassObjects(); _Module.Term(); + } return TRUE; // ok } diff --git a/winaccessibility/source/service/msaaservice_impl.cxx b/winaccessibility/source/service/msaaservice_impl.cxx index 950ef9b..6dc1b25 100644 --- a/winaccessibility/source/service/msaaservice_impl.cxx +++ b/winaccessibility/source/service/msaaservice_impl.cxx @@ -267,6 +267,14 @@ Reference< XInterface > SAL_CALL create_MSAAServiceImpl( Reference< XComponentCo } } + // load UAccCOM library so its DllMain can register its COM components + static HMODULE h = LoadLibrary("UAccCOM.dll"); + if (!h) + { + assert(false); + return 0; + } + Reference< XMSAAService > xAccMgr( new MSAAServiceImpl() ); AccessBridgeUpdateOldTopWindows( xAccMgr ); commit d04c970e8f33109a1ef5c52f922a48a0ff62adb0 Author: Michael Stahl <mst...@redhat.com> Date: Sun Nov 24 00:43:06 2013 +0100 winaccessibility: fix some error handling in CAccTable Change-Id: I3c8bc6a476a6254a4ddc3a7cb0585544f3f78431 diff --git a/winaccessibility/source/UAccCOM/AccTable.cxx b/winaccessibility/source/UAccCOM/AccTable.cxx index e7935b2..f3a1558 100644 --- a/winaccessibility/source/UAccCOM/AccTable.cxx +++ b/winaccessibility/source/UAccCOM/AccTable.cxx @@ -213,22 +213,23 @@ STDMETHODIMP CAccTable::get_columnHeader(IAccessibleTable __RPC_FAR *__RPC_FAR * } *startingRowIndex = 0 ; - IAccessible* m_pIMacc = NULL; + IMAccessible* pIMacc = NULL; ActivateActContext(); HRESULT hr = CoCreateInstance( CLSID_MAccessible, NULL, CLSCTX_ALL , IID_IMAccessible, - (void **)&m_pIMacc + (void **)&pIMacc ); DeactivateActContext(); - ((CMAccessible*)m_pIMacc)->SetXAccessible( - reinterpret_cast<hyper>(pRXColumnHeader.get())); - m_pIMacc->QueryInterface(IID_IAccessibleTable,(void **)accessibleTable); - if( SUCCEEDED(hr) ) + + if (!SUCCEEDED(hr)) { - return S_OK; + return E_FAIL; } + pIMacc->SetXAccessible( + reinterpret_cast<hyper>(pRXColumnHeader.get())); + pIMacc->QueryInterface(IID_IAccessibleTable,(void **)accessibleTable); - return E_FAIL; + return S_OK; LEAVE_PROTECTED_BLOCK } @@ -446,22 +447,23 @@ STDMETHODIMP CAccTable::get_rowHeader(IAccessibleTable __RPC_FAR *__RPC_FAR *acc } *startingColumnIndex = 0 ; - IAccessible* m_pIMacc = NULL; + IMAccessible* pIMacc = NULL; ActivateActContext(); HRESULT hr = CoCreateInstance( CLSID_MAccessible, NULL, CLSCTX_ALL , IID_IMAccessible, - (void **)&m_pIMacc + (void **)&pIMacc ); DeactivateActContext(); - ((CMAccessible*)m_pIMacc)->SetXAccessible( - reinterpret_cast<hyper>(pRXRowHeader.get())); - m_pIMacc->QueryInterface(IID_IAccessibleTable,(void **)accessibleTable); - if( SUCCEEDED(hr) ) + + if (!SUCCEEDED(hr)) { - return S_OK; + return E_FAIL; } + pIMacc->SetXAccessible( + reinterpret_cast<hyper>(pRXRowHeader.get())); + pIMacc->QueryInterface(IID_IAccessibleTable,(void **)accessibleTable); - return E_FAIL; + return S_OK; LEAVE_PROTECTED_BLOCK } commit ccb1e06bdb3c37c82ddc7b61135eda09fcdecae4 Author: Michael Stahl <mst...@redhat.com> Date: Fri Nov 22 19:36:04 2013 +0100 winaccessibility: don't need 2 global pointers for AccObjectWinManager Sadly can't use rtl::Static because it needs a ctor parameter... Change-Id: I98bbfbb4d2ef54f40a5f110527b260c0b5b01eed diff --git a/winaccessibility/inc/AccObjectWinManager.hxx b/winaccessibility/inc/AccObjectWinManager.hxx index 41ae6a2..ab05a21 100644 --- a/winaccessibility/inc/AccObjectWinManager.hxx +++ b/winaccessibility/inc/AccObjectWinManager.hxx @@ -70,7 +70,6 @@ private: com::sun::star::accessibility::XAccessible* oldFocus; AccObjectManagerAgent* pAgent; - static AccObjectWinManager* me; ResIDGenerator ResIdGen; AccObjectWinManager(AccObjectManagerAgent* Agent=NULL); diff --git a/winaccessibility/source/service/AccObjectWinManager.cxx b/winaccessibility/source/service/AccObjectWinManager.cxx index 5773a63..0e9c165 100644 --- a/winaccessibility/source/service/AccObjectWinManager.cxx +++ b/winaccessibility/source/service/AccObjectWinManager.cxx @@ -54,7 +54,6 @@ using namespace com::sun::star::accessibility::AccessibleStateType; using namespace com::sun::star::uno; AccObjectWinManager* g_acc_manager = NULL; -AccObjectWinManager* AccObjectWinManager::me = NULL; /** * Implementation of interface XMSAAService's method getAccObjectPtr() that return the @@ -97,14 +96,11 @@ AccObjectWinManager::AccObjectWinManager( AccObjectManagerAgent* Agent ): */ AccObjectWinManager* AccObjectWinManager::CreateAccObjectWinManagerInstance( AccObjectManagerAgent* Agent ) { - if( me == NULL ) + if (!g_acc_manager) { - me = new AccObjectWinManager( Agent ); - g_acc_manager = me; - return me; + g_acc_manager = new AccObjectWinManager( Agent ); } - - return me; + return g_acc_manager; } commit a5e281ff0468416e5bb20b16ccac16550a83a9fd Author: Michael Stahl <mst...@redhat.com> Date: Fri Nov 22 00:38:45 2013 +0100 winaccessibility: make XAccessibleAction member Reference Maybe it would be kept alive by AccObject::m_AccActionRef but why not play it safe. Change-Id: I03c2be04e97dcde8a177ef8dfd0d75595ab13a53 diff --git a/winaccessibility/source/UAccCOM/MAccessible.cxx b/winaccessibility/source/UAccCOM/MAccessible.cxx index c65c5af..642e778 100644 --- a/winaccessibility/source/UAccCOM/MAccessible.cxx +++ b/winaccessibility/source/UAccCOM/MAccessible.cxx @@ -207,7 +207,6 @@ m_pszValue(NULL), m_pszDescription(NULL), m_isDestroy(FALSE), m_pszActionDescription(NULL), -m_pXAction(NULL), m_bRequiresSave(FALSE) { m_sLocation.m_dLeft=0; @@ -2409,7 +2408,7 @@ STDMETHODIMP CMAccessible::GetUNOInterface(hyper * pXAcc) */ STDMETHODIMP CMAccessible::SetDefaultAction(hyper pAction) { - m_pXAction = reinterpret_cast<XAccessibleAction*>(pAction); + m_xAction = reinterpret_cast<XAccessibleAction*>(pAction); return S_OK; } @@ -2434,7 +2433,7 @@ HRESULT STDMETHODCALLTYPE CMAccessible::get_accDefaultAction(VARIANT varChild, B { if(varChild.lVal==CHILDID_SELF) { - if( m_pXAction == NULL ) + if (!m_xAction.is()) return DISP_E_MEMBERNOTFOUND; SAFE_SYSFREESTRING(*pszDefaultAction); *pszDefaultAction = SysAllocString(m_pszActionDescription); @@ -2465,15 +2464,15 @@ HRESULT STDMETHODCALLTYPE CMAccessible::accDoDefaultAction(VARIANT varChild) ISDESTROY() if( varChild.vt != VT_I4 ) return E_INVALIDARG; - if( m_pXAction == NULL ) + if (!m_xAction.is()) return E_FAIL; - if( m_pXAction->getAccessibleActionCount() == 0 ) + if (m_xAction->getAccessibleActionCount() == 0) return E_FAIL; if(varChild.lVal==CHILDID_SELF) { - if(m_pXAction->getAccessibleActionCount() > 0) - m_pXAction->doAccessibleAction(0); + if (m_xAction->getAccessibleActionCount() > 0) + m_xAction->doAccessibleAction(0); return S_OK; } diff --git a/winaccessibility/source/UAccCOM/MAccessible.h b/winaccessibility/source/UAccCOM/MAccessible.h index 315ae3c..69c6e46 100644 --- a/winaccessibility/source/UAccCOM/MAccessible.h +++ b/winaccessibility/source/UAccCOM/MAccessible.h @@ -229,7 +229,9 @@ private: BOOL m_isDestroy; css::uno::Reference<css::accessibility::XAccessible> m_xAccessible; - css::accessibility::XAccessibleAction * m_pXAction; + // initially m_xAction and m_xContext are the same object + // but they may be different once AccObject::UpdateAction() is called? + css::uno::Reference<css::accessibility::XAccessibleAction> m_xAction; css::uno::Reference<css::accessibility::XAccessibleContext> m_xContext; private: commit 58ab5239868039bc9e4dff391fc0c420a2eb3d8d Author: Michael Stahl <mst...@redhat.com> Date: Fri Nov 22 00:27:43 2013 +0100 winaccessibility: CMAccessible needs only one XAccessibleContext Merge aliases pRContextInterface (unused) and pRContext; this is exacerbated by countless local variables pRContext that shadow the member... Change-Id: I6bc71911fb41a2ce2590d614020ecea36d6ab4f8 diff --git a/winaccessibility/source/UAccCOM/MAccessible.cxx b/winaccessibility/source/UAccCOM/MAccessible.cxx index 113cdde..c65c5af 100644 --- a/winaccessibility/source/UAccCOM/MAccessible.cxx +++ b/winaccessibility/source/UAccCOM/MAccessible.cxx @@ -248,7 +248,6 @@ CMAccessible::~CMAccessible() } m_pEnumVar->Release(); m_containedObjects.clear(); - pRContext = NULL; } /** @@ -1667,9 +1666,10 @@ STDMETHODIMP CMAccessible::get_nRelations( long __RPC_FAR *nRelations) *nRelations = 0; - if( !pRContext.is() ) + if (!m_xContext.is()) return E_FAIL; - Reference<XAccessibleRelationSet> pRrelationSet = pRContext.get()->getAccessibleRelationSet(); + Reference<XAccessibleRelationSet> pRrelationSet = + m_xContext.get()->getAccessibleRelationSet(); if(!pRrelationSet.is()) { *nRelations = 0; @@ -1694,7 +1694,7 @@ STDMETHODIMP CMAccessible::get_relation( long relationIndex, IAccessibleRelation return E_INVALIDARG; } - if( !pRContext.is() ) + if (!m_xContext.is()) return E_FAIL; @@ -1712,9 +1712,8 @@ STDMETHODIMP CMAccessible::get_relation( long relationIndex, IAccessibleRelation if( relationIndex < nMax ) { - - - Reference<XAccessibleRelationSet> pRrelationSet = pRContext.get()->getAccessibleRelationSet(); + Reference<XAccessibleRelationSet> const pRrelationSet = + m_xContext.get()->getAccessibleRelationSet(); if(!pRrelationSet.is()) { @@ -1762,10 +1761,11 @@ STDMETHODIMP CMAccessible::get_relations( long, IAccessibleRelation __RPC_FAR *_ } // #CHECK XInterface# - if( !pRContext.is() ) + if (!m_xContext.is()) return E_FAIL; - Reference<XAccessibleRelationSet> pRrelationSet = pRContext.get()->getAccessibleRelationSet(); + Reference<XAccessibleRelationSet> const pRrelationSet = + m_xContext.get()->getAccessibleRelationSet(); if(!pRrelationSet.is()) { *nRelations = 0; @@ -2284,8 +2284,7 @@ STDMETHODIMP CMAccessible::SetXAccessible(hyper pXAcc) m_pEnumVar->PutSelection(/*XAccessibleSelection*/ reinterpret_cast<hyper>(m_xAccessible.get())); - pRContext = m_xAccessible->getAccessibleContext(); - pRContextInterface = (XAccessibleContext*)pRContext.is(); + m_xContext = m_xAccessible->getAccessibleContext(); return S_OK; } @@ -3030,11 +3029,12 @@ STDMETHODIMP CMAccessible:: get_states(AccessibleStates __RPC_FAR *states ) CHECK_ENABLE_INF ENTER_PROTECTED_BLOCK ISDESTROY() - // #CHECK XInterface# - if( !pRContext.is() ) - return E_FAIL; - Reference<XAccessibleStateSet> pRStateSet = pRContext.get()->getAccessibleStateSet(); + if (!m_xContext.is()) + return E_FAIL; + + Reference<XAccessibleStateSet> const pRStateSet = + m_xContext.get()->getAccessibleStateSet(); if(!pRStateSet.is()) { return S_OK; @@ -3117,11 +3117,10 @@ STDMETHODIMP CMAccessible:: get_indexInParent( long __RPC_FAR *accParentIndex) if(accParentIndex == NULL) return E_INVALIDARG; - // #CHECK XInterface# - if( !pRContext.is() ) + if (!m_xContext.is()) return E_FAIL; - *accParentIndex = pRContext.get()->getAccessibleIndexInParent(); + *accParentIndex = m_xContext.get()->getAccessibleIndexInParent(); return S_OK; @@ -3135,12 +3134,11 @@ STDMETHODIMP CMAccessible:: get_locale( IA2Locale __RPC_FAR *locale ) ISDESTROY() if(locale == NULL) return E_INVALIDARG; - // #CHECK XInterface# - if( !pRContext.is() ) + if (!m_xContext.is()) return E_FAIL; - ::com::sun::star::lang::Locale unoLoc = pRContext.get()->getLocale(); + ::com::sun::star::lang::Locale unoLoc = m_xContext.get()->getLocale(); locale->language = SysAllocString((OLECHAR*)unoLoc.Language.getStr()); locale->country = SysAllocString((OLECHAR*)unoLoc.Country.getStr()); locale->variant = SysAllocString((OLECHAR*)unoLoc.Variant.getStr()); diff --git a/winaccessibility/source/UAccCOM/MAccessible.h b/winaccessibility/source/UAccCOM/MAccessible.h index f95ff77..315ae3c 100644 --- a/winaccessibility/source/UAccCOM/MAccessible.h +++ b/winaccessibility/source/UAccCOM/MAccessible.h @@ -230,8 +230,7 @@ private: css::uno::Reference<css::accessibility::XAccessible> m_xAccessible; css::accessibility::XAccessibleAction * m_pXAction; - css::accessibility::XAccessibleContext * pRContextInterface; - css::uno::Reference<css::accessibility::XAccessibleContext> pRContext; + css::uno::Reference<css::accessibility::XAccessibleContext> m_xContext; private: commit fd2877ee09fd4cd738769cda5de5b641f73adee2 Author: Michael Stahl <mst...@redhat.com> Date: Fri Nov 22 00:16:08 2013 +0100 winaccessibility: CMAccessible needs only one member for XAccessible Merge aliases pUNOInterface and pRef; also pAchorUNOInterface is never used. Change-Id: I1b3841a9aca9d2438b25c66c7f67d09ce13b41f9 diff --git a/winaccessibility/source/UAccCOM/MAccessible.cxx b/winaccessibility/source/UAccCOM/MAccessible.cxx index ce94896..113cdde 100644 --- a/winaccessibility/source/UAccCOM/MAccessible.cxx +++ b/winaccessibility/source/UAccCOM/MAccessible.cxx @@ -208,8 +208,7 @@ m_pszDescription(NULL), m_isDestroy(FALSE), m_pszActionDescription(NULL), m_pXAction(NULL), -m_bRequiresSave(FALSE), -pUNOInterface(NULL) +m_bRequiresSave(FALSE) { m_sLocation.m_dLeft=0; m_sLocation.m_dTop = 0; @@ -247,7 +246,6 @@ CMAccessible::~CMAccessible() m_pIParent->Release(); m_pIParent=NULL; } - pRef = NULL; m_pEnumVar->Release(); m_containedObjects.clear(); pRContext = NULL; @@ -310,10 +308,11 @@ STDMETHODIMP CMAccessible::get_accChildCount(long *pcountChildren) return E_INVALIDARG; } - if(!pUNOInterface) + if (!m_xAccessible.is()) return S_FALSE; - Reference< XAccessibleContext > pRContext = pUNOInterface->getAccessibleContext(); + Reference<XAccessibleContext> const pRContext = + m_xAccessible->getAccessibleContext(); if( pRContext.is() ) { *pcountChildren = pRContext->getAccessibleChildCount(); @@ -556,9 +555,10 @@ STDMETHODIMP CMAccessible::get_accState(VARIANT varChild, VARIANT *pvarState) { if(varChild.lVal == CHILDID_SELF) { - if(pUNOInterface) + if (m_xAccessible.is()) { - Reference< XAccessibleContext > pContext = pUNOInterface->getAccessibleContext(); + Reference<XAccessibleContext> const pContext = + m_xAccessible->getAccessibleContext(); if(pContext.is()) { // add the STATE_SYSTEM_LINKED state @@ -661,9 +661,10 @@ STDMETHODIMP CMAccessible::get_accKeyboardShortcut(VARIANT varChild, BSTR *pszKe { if(varChild.lVal == CHILDID_SELF) { - if( pUNOInterface ) + if (m_xAccessible.is()) { - Reference<XAccessibleContext> pRContext = pUNOInterface->getAccessibleContext(); + Reference<XAccessibleContext> const pRContext = + m_xAccessible->getAccessibleContext(); if( !pRContext.is() ) return S_FALSE; @@ -748,7 +749,7 @@ STDMETHODIMP CMAccessible::get_accKeyboardShortcut(VARIANT varChild, BSTR *pszKe { xTargets = paccRelation->TargetSet; pRAcc = xTargets[0]; - if(pUNOInterface != (XAccessible*)pRAcc.get()) + if (m_xAccessible.get() != (XAccessible*)pRAcc.get()) return S_FALSE; } @@ -903,9 +904,10 @@ STDMETHODIMP CMAccessible::accLocation(long *pxLeft, long *pyTop, long *pcxWidth if(varChild.lVal==CHILDID_SELF) { - if(pUNOInterface) + if (m_xAccessible.is()) { - Reference< XAccessibleContext > pRContext = pUNOInterface->getAccessibleContext(); + Reference<XAccessibleContext> const pRContext = + m_xAccessible->getAccessibleContext(); if( !pRContext.is() ) return S_FALSE; Reference< XAccessibleComponent > pRComponent(pRContext,UNO_QUERY); @@ -1006,7 +1008,7 @@ STDMETHODIMP CMAccessible::accHitTest(long xLeft, long yTop, VARIANT *pvarChild) { int i, nCount; pvarChild->vt = VT_EMPTY; - Reference< XAccessibleContext > pRContext = GetContextByXAcc(pUNOInterface); + Reference< XAccessibleContext > pRContext = GetContextByXAcc(m_xAccessible.get()); nCount = pRContext->getAccessibleChildCount(); if(nCount > 256) return E_FAIL; @@ -1344,7 +1346,7 @@ STDMETHODIMP CMAccessible::Put_XAccAgent(hyper pAgent) /** * When a UNO control disposing, it disposes its listeners, * then notify AccObject in bridge management, then notify -* COM that the XAccessible is invalid,so set pUNOInterface as NULL +* COM that the XAccessible is invalid,so set m_xAccessible as NULL * @param isDestroy, true is it need to be destroyed. * @return S_OK if successful and E_FAIL if failure. */ @@ -1352,7 +1354,7 @@ STDMETHODIMP CMAccessible::NotifyDestroy(BOOL isDestroy) { m_isDestroy = isDestroy; - pUNOInterface = NULL; + m_xAccessible.clear(); return S_OK; } @@ -1381,7 +1383,8 @@ IMAccessible* CMAccessible::GetChildInterface(long dChildID)//for test } else { - Reference< XAccessibleContext > pRContext = pUNOInterface->getAccessibleContext(); + Reference<XAccessibleContext> const pRContext = + m_xAccessible->getAccessibleContext(); if( !pRContext.is() ) return NULL; @@ -1394,7 +1397,7 @@ IMAccessible* CMAccessible::GetChildInterface(long dChildID)//for test if(!isGet) { - g_pAgent->InsertAccObj(pXChild.get(), pUNOInterface, + g_pAgent->InsertAccObj(pXChild.get(), m_xAccessible.get(), reinterpret_cast<sal_Int64>(m_hwnd)); isGet = get_IAccessibleFromXAccessible(pXChild.get(), &pChild); } @@ -1429,7 +1432,7 @@ BOOL CMAccessible::IsDecendantManage() IMAccessible* CMAccessible::GetNavigateChildForDM(VARIANT varCur, short flags) { - XAccessibleContext* pXContext = GetContextByXAcc(pUNOInterface); + XAccessibleContext* pXContext = GetContextByXAcc(m_xAccessible.get()); if(pXContext==NULL) { return NULL; @@ -1490,7 +1493,7 @@ IMAccessible* CMAccessible::GetNavigateChildForDM(VARIANT varCur, short flags) return NULL; } pChildXAcc = pRChildXAcc.get(); - g_pAgent->InsertAccObj(pChildXAcc,pUNOInterface); + g_pAgent->InsertAccObj(pChildXAcc, m_xAccessible.get()); return g_pAgent->GetIMAccByXAcc(pChildXAcc); } @@ -1589,7 +1592,8 @@ HRESULT CMAccessible::GetNextSibling(VARIANT varStart,VARIANT* pvarEndUpAt) return E_INVALIDARG; } - Reference< XAccessibleContext > pRContext = GetContextByXAcc(pUNOInterface); + Reference<XAccessibleContext> const pRContext = + GetContextByXAcc(m_xAccessible.get()); if(pRContext.is()) { varStart.iVal = sal_Int16(pRContext->getAccessibleIndexInParent() + 2); @@ -1628,7 +1632,8 @@ HRESULT CMAccessible::GetPreSibling(VARIANT varStart,VARIANT* pvarEndUpAt) return E_INVALIDARG; } - Reference< XAccessibleContext > pRContext = GetContextByXAcc(pUNOInterface); + Reference<XAccessibleContext> const pRContext = + GetContextByXAcc(m_xAccessible.get()); if(pRContext.is()) { varStart.iVal = sal_Int16(pRContext->getAccessibleIndexInParent()); @@ -1902,7 +1907,8 @@ STDMETHODIMP CMAccessible:: get_groupPosition(long __RPC_FAR *groupLevel,long __ return E_INVALIDARG; } - Reference<XAccessibleContext> pRContext = pUNOInterface->getAccessibleContext(); + Reference<XAccessibleContext> const pRContext = + m_xAccessible->getAccessibleContext(); if(!pRContext.is()) return E_FAIL; long Role = pRContext->getAccessibleRole(); @@ -1960,7 +1966,7 @@ STDMETHODIMP CMAccessible:: get_groupPosition(long __RPC_FAR *groupLevel,long __ == (XAccessible*)pRAcc.get() && pRParentContext->getAccessibleChild(j)->getAccessibleContext()->getAccessibleRole() == RADIO_BUTTON) number++; - if(pRParentContext->getAccessibleChild(j).get() == pUNOInterface) + if (pRParentContext->getAccessibleChild(j).get() == m_xAccessible.get()) index = number; } } @@ -2152,9 +2158,10 @@ XAccessibleContext* CMAccessible::GetContextByXAcc( XAccessible* pXAcc ) */ Reference< XAccessibleSelection > CMAccessible::GetSelection() { - if( pUNOInterface == NULL ) + if (!m_xAccessible.is()) return NULL; - Reference< XAccessibleContext > pRContext = pUNOInterface->getAccessibleContext(); + Reference<XAccessibleContext> const pRContext = + m_xAccessible->getAccessibleContext(); if(pRContext.is()) { Reference< XAccessibleSelection > pRSelection(pRContext,UNO_QUERY); @@ -2173,7 +2180,7 @@ HRESULT CMAccessible::SelectChild(XAccessible* pItem) ENTER_PROTECTED_BLOCK ISDESTROY() - XAccessibleContext* pParentContext = GetContextByXAcc( pUNOInterface ); + XAccessibleContext* pParentContext = GetContextByXAcc(m_xAccessible.get()); XAccessibleContext* pContext = GetContextByXAcc( pItem ); if( pParentContext == NULL || pContext == NULL ) return E_FAIL; @@ -2198,7 +2205,7 @@ HRESULT CMAccessible::DeSelectChild(XAccessible* pItem) ENTER_PROTECTED_BLOCK ISDESTROY() - XAccessibleContext* pParentContext = GetContextByXAcc( pUNOInterface ); + XAccessibleContext* pParentContext = GetContextByXAcc(m_xAccessible.get()); ; XAccessibleContext* pContext = GetContextByXAcc( pItem ); if( pParentContext == NULL || pContext == NULL ) @@ -2273,12 +2280,11 @@ HRESULT CMAccessible::DeSelectMutipleChildren( XAccessible** pItem,int size ) */ STDMETHODIMP CMAccessible::SetXAccessible(hyper pXAcc) { - pUNOInterface = reinterpret_cast<XAccessible*>(pXAcc); - pRef = pUNOInterface; + m_xAccessible = reinterpret_cast<XAccessible*>(pXAcc); m_pEnumVar->PutSelection(/*XAccessibleSelection*/ - reinterpret_cast<hyper>(pUNOInterface)); + reinterpret_cast<hyper>(m_xAccessible.get())); - pRContext = pUNOInterface->getAccessibleContext(); + pRContext = m_xAccessible->getAccessibleContext(); pRContextInterface = (XAccessibleContext*)pRContext.is(); return S_OK; @@ -2393,7 +2399,7 @@ STDMETHODIMP CMAccessible::GetUNOInterface(hyper * pXAcc) if(pXAcc == NULL) return E_INVALIDARG; - *pXAcc = reinterpret_cast<hyper>(pUNOInterface); + *pXAcc = reinterpret_cast<hyper>(m_xAccessible.get()); return S_OK; } @@ -2571,7 +2577,8 @@ HRESULT WINAPI CMAccessible::SmartQI(void* pv, REFIID iid, void** ppvObject) if(ImplIsEqualGUID(iid, *pMap->piid)) { XInterface* pXI = NULL; - BOOL bFound = GetXInterfaceFromXAccessible(pUNOInterface,&pXI,pMap->XIFIndex); + BOOL bFound = GetXInterfaceFromXAccessible(m_xAccessible.get(), + &pXI, pMap->XIFIndex); if(!bFound) { return E_FAIL; @@ -2595,7 +2602,7 @@ HRESULT WINAPI CMAccessible::SmartQI(void* pv, REFIID iid, void** ppvObject) if(wrapper) { wrapper->put_XInterface( - reinterpret_cast<hyper>(pUNOInterface)); + reinterpret_cast<hyper>(m_xAccessible.get())); wrapper->Release(); } return S_OK; @@ -3246,7 +3253,7 @@ STDMETHODIMP CMAccessible:: get_toolkitVersion(BSTR __RPC_FAR *version) STDMETHODIMP CMAccessible::get_attributes(/*[out]*/ BSTR *pAttr) { CHECK_ENABLE_INF - Reference<XAccessibleContext> pRContext = pUNOInterface->getAccessibleContext(); + Reference<XAccessibleContext> pRContext = m_xAccessible->getAccessibleContext(); if( !pRContext.is() ) { return E_FAIL; diff --git a/winaccessibility/source/UAccCOM/MAccessible.h b/winaccessibility/source/UAccCOM/MAccessible.h index def1171..f95ff77 100644 --- a/winaccessibility/source/UAccCOM/MAccessible.h +++ b/winaccessibility/source/UAccCOM/MAccessible.h @@ -228,9 +228,7 @@ private: // specify if the XAccessible is invalid BOOL m_isDestroy; - css::accessibility::XAccessible * pUNOInterface; - css::uno::Reference<css::accessibility::XAccessible> pRef; - css::accessibility::XAccessible * pAchorUNOInterface; + css::uno::Reference<css::accessibility::XAccessible> m_xAccessible; css::accessibility::XAccessibleAction * m_pXAction; css::accessibility::XAccessibleContext * pRContextInterface; css::uno::Reference<css::accessibility::XAccessibleContext> pRContext; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits