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 c0a500b9f1b47ee1beea3c22ff029a03e657cb8a 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 (cherry picked from commit 732ec36edfd09d2091d70c4d71b5f182fe279c45) 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 e5e1231..5f3d5fc 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 fd7cb4b05c1ac336f2430e05864bf98afe3030da 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 (cherry picked from commit d04c970e8f33109a1ef5c52f922a48a0ff62adb0) 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 930b8f4d51010ddf748225ff445e0d1d19b8768e 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 (cherry picked from commit ccb1e06bdb3c37c82ddc7b61135eda09fcdecae4) 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 0a3bd6a8340a7c5adcae62b7c6863a03875ebf5d 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 (cherry picked from commit a5e281ff0468416e5bb20b16ccac16550a83a9fd) diff --git a/winaccessibility/source/UAccCOM/MAccessible.cxx b/winaccessibility/source/UAccCOM/MAccessible.cxx index 419b60d..ba6a5cd 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 050f835bb390e82eaee4520e8e6c4e255d2c5038 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 (cherry picked from commit 58ab5239868039bc9e4dff391fc0c420a2eb3d8d) diff --git a/winaccessibility/source/UAccCOM/MAccessible.cxx b/winaccessibility/source/UAccCOM/MAccessible.cxx index 493c793..419b60d 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 eb32f6e90d5b4f554044bb94bc0e9c3cb88aac17 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 (cherry picked from commit fd2877ee09fd4cd738769cda5de5b641f73adee2) diff --git a/winaccessibility/source/UAccCOM/MAccessible.cxx b/winaccessibility/source/UAccCOM/MAccessible.cxx index 8998ec9..493c793 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