1*5fdc4257SSteve Yin /*************************************************************************
2*5fdc4257SSteve Yin  *
3*5fdc4257SSteve Yin  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*5fdc4257SSteve Yin  *
5*5fdc4257SSteve Yin  * Copyright IBM Corporation 2010.
6*5fdc4257SSteve Yin  * Copyright 2000, 2010 Oracle and/or its affiliates.
7*5fdc4257SSteve Yin  *
8*5fdc4257SSteve Yin  * OpenOffice.org - a multi-platform office productivity suite
9*5fdc4257SSteve Yin  *
10*5fdc4257SSteve Yin  * This file is part of OpenOffice.org.
11*5fdc4257SSteve Yin  *
12*5fdc4257SSteve Yin  * OpenOffice.org is free software: you can redistribute it and/or modify
13*5fdc4257SSteve Yin  * it under the terms of the GNU Lesser General Public License version 3
14*5fdc4257SSteve Yin  * only, as published by the Free Software Foundation.
15*5fdc4257SSteve Yin  *
16*5fdc4257SSteve Yin  * OpenOffice.org is distributed in the hope that it will be useful,
17*5fdc4257SSteve Yin  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18*5fdc4257SSteve Yin  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19*5fdc4257SSteve Yin  * GNU Lesser General Public License version 3 for more details
20*5fdc4257SSteve Yin  * (a copy is included in the LICENSE file that accompanied this code).
21*5fdc4257SSteve Yin  *
22*5fdc4257SSteve Yin  * You should have received a copy of the GNU Lesser General Public License
23*5fdc4257SSteve Yin  * version 3 along with OpenOffice.org.  If not, see
24*5fdc4257SSteve Yin  * <http://www.openoffice.org/license.html>
25*5fdc4257SSteve Yin  * for a copy of the LGPLv3 License.
26*5fdc4257SSteve Yin  *
27*5fdc4257SSteve Yin  ************************************************************************/
28*5fdc4257SSteve Yin 
29*5fdc4257SSteve Yin #include "AccObjectManagerAgent.hxx"
30*5fdc4257SSteve Yin #include "AccObjectWinManager.hxx"
31*5fdc4257SSteve Yin 
32*5fdc4257SSteve Yin #include "UAccCOM2.h"
33*5fdc4257SSteve Yin 
34*5fdc4257SSteve Yin using namespace com::sun::star::uno;
35*5fdc4257SSteve Yin using namespace com::sun::star::accessibility;
36*5fdc4257SSteve Yin 
37*5fdc4257SSteve Yin /**
38*5fdc4257SSteve Yin    * Construction/Destruction.
39*5fdc4257SSteve Yin    * @param
40*5fdc4257SSteve Yin    * @return
41*5fdc4257SSteve Yin    */
42*5fdc4257SSteve Yin AccObjectManagerAgent::AccObjectManagerAgent():
43*5fdc4257SSteve Yin         pWinManager(NULL)
44*5fdc4257SSteve Yin {
45*5fdc4257SSteve Yin     if( pWinManager == NULL )
46*5fdc4257SSteve Yin     {
47*5fdc4257SSteve Yin         pWinManager = AccObjectWinManager::CreateAccObjectWinManagerInstance(this);
48*5fdc4257SSteve Yin     }
49*5fdc4257SSteve Yin }
50*5fdc4257SSteve Yin 
51*5fdc4257SSteve Yin AccObjectManagerAgent::~AccObjectManagerAgent()
52*5fdc4257SSteve Yin {
53*5fdc4257SSteve Yin     delete pWinManager;
54*5fdc4257SSteve Yin     pWinManager = NULL;
55*5fdc4257SSteve Yin }
56*5fdc4257SSteve Yin 
57*5fdc4257SSteve Yin /**
58*5fdc4257SSteve Yin    * Interface of updating MSAA name when UNO name_changed event occurs.
59*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
60*5fdc4257SSteve Yin    * @return
61*5fdc4257SSteve Yin    */
62*5fdc4257SSteve Yin void  AccObjectManagerAgent::UpdateAccName( XAccessible* pXAcc )
63*5fdc4257SSteve Yin {
64*5fdc4257SSteve Yin     if( pWinManager )
65*5fdc4257SSteve Yin         pWinManager->UpdateAccName( pXAcc );
66*5fdc4257SSteve Yin }
67*5fdc4257SSteve Yin 
68*5fdc4257SSteve Yin /**
69*5fdc4257SSteve Yin    * Interface of updating MSAA name when UNO action changed event occurs.
70*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
71*5fdc4257SSteve Yin    * @return
72*5fdc4257SSteve Yin    */
73*5fdc4257SSteve Yin void  AccObjectManagerAgent::UpdateAction( XAccessible* pXAcc )
74*5fdc4257SSteve Yin {
75*5fdc4257SSteve Yin     if( pWinManager )
76*5fdc4257SSteve Yin         pWinManager->UpdateAction( pXAcc );
77*5fdc4257SSteve Yin }
78*5fdc4257SSteve Yin 
79*5fdc4257SSteve Yin /**
80*5fdc4257SSteve Yin    * Interface of updating MSAA value when UNO value_changed event occurs.
81*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
82*5fdc4257SSteve Yin    * @param pAny New value.
83*5fdc4257SSteve Yin    * @return
84*5fdc4257SSteve Yin    */
85*5fdc4257SSteve Yin void  AccObjectManagerAgent::UpdateValue( XAccessible* pXAcc, Any pAny )
86*5fdc4257SSteve Yin {
87*5fdc4257SSteve Yin     if( pWinManager )
88*5fdc4257SSteve Yin         pWinManager->SetValue( pXAcc, pAny );
89*5fdc4257SSteve Yin }
90*5fdc4257SSteve Yin 
91*5fdc4257SSteve Yin /**
92*5fdc4257SSteve Yin    * Interface of updating MSAA value when UNO value_changed event occurs.If we can not
93*5fdc4257SSteve Yin    * find new value,we'll get new value from pXAcc to update com value.
94*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
95*5fdc4257SSteve Yin    * @return
96*5fdc4257SSteve Yin    */
97*5fdc4257SSteve Yin void  AccObjectManagerAgent::UpdateValue( XAccessible* pXAcc )
98*5fdc4257SSteve Yin {
99*5fdc4257SSteve Yin     if( pWinManager )
100*5fdc4257SSteve Yin         pWinManager->UpdateValue( pXAcc );
101*5fdc4257SSteve Yin }
102*5fdc4257SSteve Yin 
103*5fdc4257SSteve Yin /**
104*5fdc4257SSteve Yin    * Interface of updating MSAA name when UNO name_changed event occurs.
105*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
106*5fdc4257SSteve Yin    * @param newName New UNO accessible name.
107*5fdc4257SSteve Yin    * @return
108*5fdc4257SSteve Yin    */
109*5fdc4257SSteve Yin void  AccObjectManagerAgent::UpdateAccName( XAccessible* pXAcc, Any newName)
110*5fdc4257SSteve Yin {
111*5fdc4257SSteve Yin     if( pWinManager )
112*5fdc4257SSteve Yin         pWinManager->SetAccName( pXAcc, newName );
113*5fdc4257SSteve Yin }
114*5fdc4257SSteve Yin 
115*5fdc4257SSteve Yin 
116*5fdc4257SSteve Yin /**
117*5fdc4257SSteve Yin    * Interface of updating MSAA location when UNO location_changed event occurs.
118*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
119*5fdc4257SSteve Yin    * @param pXAcc Uno The top position of new location.
120*5fdc4257SSteve Yin    * @param pXAcc Uno The left position of new location.
121*5fdc4257SSteve Yin    * @param pXAcc Uno The width of new location.
122*5fdc4257SSteve Yin    * @param pXAcc Uno The width of new location.
123*5fdc4257SSteve Yin    * @return
124*5fdc4257SSteve Yin    */
125*5fdc4257SSteve Yin void  AccObjectManagerAgent::UpdateLocation( XAccessible* /* pXAcc */, long /*top*/, long /*left*/, long /*width*/, long /*height*/ )
126*5fdc4257SSteve Yin {
127*5fdc4257SSteve Yin #ifdef _IMPL_WIN
128*5fdc4257SSteve Yin     if( pWinManager )
129*5fdc4257SSteve Yin         pWinManager->SetLocation( pXAcc, top, left, width, height );
130*5fdc4257SSteve Yin #endif
131*5fdc4257SSteve Yin }
132*5fdc4257SSteve Yin 
133*5fdc4257SSteve Yin /**
134*5fdc4257SSteve Yin    * Interface of updating MSAA name when UNO description_changed event occurs.
135*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
136*5fdc4257SSteve Yin    * @param newDesc New UNO accessible description.
137*5fdc4257SSteve Yin    * @return
138*5fdc4257SSteve Yin    */
139*5fdc4257SSteve Yin void  AccObjectManagerAgent::UpdateDescription( XAccessible* pXAcc, Any newDesc )
140*5fdc4257SSteve Yin {
141*5fdc4257SSteve Yin     if( pWinManager )
142*5fdc4257SSteve Yin         pWinManager->SetDescription( pXAcc, newDesc );
143*5fdc4257SSteve Yin }
144*5fdc4257SSteve Yin 
145*5fdc4257SSteve Yin /**
146*5fdc4257SSteve Yin    * When a new UNO XAccessible object is found by listener,we'll create a corresponding
147*5fdc4257SSteve Yin    * com object and insert it to our manager list.
148*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
149*5fdc4257SSteve Yin    * @param pWnd The top window handle containing control.
150*5fdc4257SSteve Yin    * @return If the method is correctly processed.
151*5fdc4257SSteve Yin    */
152*5fdc4257SSteve Yin unsigned char AccObjectManagerAgent::InsertAccObj( XAccessible* pXAcc,XAccessible* pParentXAcc,long pWnd)
153*5fdc4257SSteve Yin {
154*5fdc4257SSteve Yin     if( pWinManager )
155*5fdc4257SSteve Yin         return (unsigned char)pWinManager->InsertAccObj( pXAcc, pParentXAcc,HWND((void*)pWnd) );
156*5fdc4257SSteve Yin 
157*5fdc4257SSteve Yin     return sal_False;
158*5fdc4257SSteve Yin }
159*5fdc4257SSteve Yin 
160*5fdc4257SSteve Yin /**
161*5fdc4257SSteve Yin    * save the pair <topwindowhandle, XAccessible>
162*5fdc4257SSteve Yin    * @param hWnd, top window handle
163*5fdc4257SSteve Yin    * @param pXAcc XAccessible interface for top window
164*5fdc4257SSteve Yin    * @return void
165*5fdc4257SSteve Yin    */
166*5fdc4257SSteve Yin void AccObjectManagerAgent::SaveTopWindowHandle(long hWnd, com::sun::star::accessibility::XAccessible* pXAcc)
167*5fdc4257SSteve Yin {
168*5fdc4257SSteve Yin     if( pWinManager )
169*5fdc4257SSteve Yin         pWinManager->SaveTopWindowHandle( HWND((void*)hWnd), pXAcc );
170*5fdc4257SSteve Yin }
171*5fdc4257SSteve Yin 
172*5fdc4257SSteve Yin 
173*5fdc4257SSteve Yin /**
174*5fdc4257SSteve Yin    * When a UNO XAccessible object's new children are found by listener,we'll create
175*5fdc4257SSteve Yin    * corresponding com objects and insert them to our manager list.
176*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
177*5fdc4257SSteve Yin    * @param pWnd The top window handle containing control.
178*5fdc4257SSteve Yin    * @return If the method is correctly processed.
179*5fdc4257SSteve Yin    */
180*5fdc4257SSteve Yin unsigned char AccObjectManagerAgent::InsertChildrenAccObj( XAccessible* pXAcc,
181*5fdc4257SSteve Yin         long pWnd)
182*5fdc4257SSteve Yin {
183*5fdc4257SSteve Yin     if( pWinManager )
184*5fdc4257SSteve Yin         return (unsigned char)pWinManager->InsertChildrenAccObj( pXAcc, HWND((void*)pWnd) );
185*5fdc4257SSteve Yin 
186*5fdc4257SSteve Yin     return sal_False;
187*5fdc4257SSteve Yin }
188*5fdc4257SSteve Yin 
189*5fdc4257SSteve Yin /**
190*5fdc4257SSteve Yin    * When a new UNO XAccessible object is destroied,we'll delete its corresponding
191*5fdc4257SSteve Yin    * com object and remove it from our manager list.
192*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
193*5fdc4257SSteve Yin    * @return
194*5fdc4257SSteve Yin    */
195*5fdc4257SSteve Yin void AccObjectManagerAgent::DeleteAccObj( XAccessible* pXAcc )
196*5fdc4257SSteve Yin {
197*5fdc4257SSteve Yin     if( pWinManager )
198*5fdc4257SSteve Yin         pWinManager->DeleteAccObj( pXAcc );
199*5fdc4257SSteve Yin }
200*5fdc4257SSteve Yin 
201*5fdc4257SSteve Yin /**
202*5fdc4257SSteve Yin    * When new UNO children XAccessible objects are destroyed,we'll delete their
203*5fdc4257SSteve Yin    * corresponding com objects and remove them from our manager list.
204*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
205*5fdc4257SSteve Yin    * @return
206*5fdc4257SSteve Yin    */
207*5fdc4257SSteve Yin void AccObjectManagerAgent::DeleteChildrenAccObj( XAccessible* pXAcc )
208*5fdc4257SSteve Yin {
209*5fdc4257SSteve Yin     if( pWinManager )
210*5fdc4257SSteve Yin         pWinManager->DeleteChildrenAccObj( pXAcc );
211*5fdc4257SSteve Yin }
212*5fdc4257SSteve Yin 
213*5fdc4257SSteve Yin /**
214*5fdc4257SSteve Yin    * Interface of decreasing MSAA state when some UNO state is decreased.
215*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
216*5fdc4257SSteve Yin    * @param pState The lost state of control.
217*5fdc4257SSteve Yin    * @return
218*5fdc4257SSteve Yin    */
219*5fdc4257SSteve Yin void AccObjectManagerAgent::DecreaseState( XAccessible* pXAcc,unsigned short pState )
220*5fdc4257SSteve Yin {
221*5fdc4257SSteve Yin     if(pWinManager)
222*5fdc4257SSteve Yin     {
223*5fdc4257SSteve Yin         pWinManager->DecreaseState( pXAcc,  pState );
224*5fdc4257SSteve Yin     }
225*5fdc4257SSteve Yin }
226*5fdc4257SSteve Yin 
227*5fdc4257SSteve Yin /**
228*5fdc4257SSteve Yin    * Interface of increasing MSAA name when some UNO state is increased.
229*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
230*5fdc4257SSteve Yin    * @param pState The new state of control.
231*5fdc4257SSteve Yin    * @return
232*5fdc4257SSteve Yin    */
233*5fdc4257SSteve Yin void AccObjectManagerAgent::IncreaseState( XAccessible* pXAcc,unsigned short pState )
234*5fdc4257SSteve Yin {
235*5fdc4257SSteve Yin     if(pWinManager)
236*5fdc4257SSteve Yin     {
237*5fdc4257SSteve Yin         pWinManager->IncreaseState( pXAcc,  pState );
238*5fdc4257SSteve Yin     }
239*5fdc4257SSteve Yin }
240*5fdc4257SSteve Yin 
241*5fdc4257SSteve Yin void  AccObjectManagerAgent::UpdateState( com::sun::star::accessibility::XAccessible* pXAcc )
242*5fdc4257SSteve Yin {
243*5fdc4257SSteve Yin     if(pWinManager)
244*5fdc4257SSteve Yin         pWinManager->UpdateState(pXAcc);
245*5fdc4257SSteve Yin }
246*5fdc4257SSteve Yin 
247*5fdc4257SSteve Yin /**
248*5fdc4257SSteve Yin    * Interface of notify MSAA event when some UNO event occured.
249*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
250*5fdc4257SSteve Yin    * @param pEvent UNO event ID.
251*5fdc4257SSteve Yin    * @return If the method is correctly processed.
252*5fdc4257SSteve Yin    */
253*5fdc4257SSteve Yin unsigned char AccObjectManagerAgent::NotifyAccEvent( short pEvent,XAccessible* pXAcc )
254*5fdc4257SSteve Yin {
255*5fdc4257SSteve Yin     if(pWinManager)
256*5fdc4257SSteve Yin         return (unsigned char)pWinManager->NotifyAccEvent(pXAcc,pEvent);
257*5fdc4257SSteve Yin 
258*5fdc4257SSteve Yin     return sal_False;
259*5fdc4257SSteve Yin }
260*5fdc4257SSteve Yin 
261*5fdc4257SSteve Yin /**
262*5fdc4257SSteve Yin    * Judge whether a XAccessible object is a container object.
263*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
264*5fdc4257SSteve Yin    * @return If the method is correctly processed.
265*5fdc4257SSteve Yin    */
266*5fdc4257SSteve Yin unsigned short AccObjectManagerAgent::IsContainer( XAccessible* pXAcc )
267*5fdc4257SSteve Yin {
268*5fdc4257SSteve Yin     if(pWinManager)
269*5fdc4257SSteve Yin         return (unsigned char)pWinManager->IsContainer(pXAcc);
270*5fdc4257SSteve Yin 
271*5fdc4257SSteve Yin     return sal_False;
272*5fdc4257SSteve Yin }
273*5fdc4257SSteve Yin 
274*5fdc4257SSteve Yin /**
275*5fdc4257SSteve Yin    * Return com object interface by querying XAccessible interface.
276*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
277*5fdc4257SSteve Yin    * @return Com interface.
278*5fdc4257SSteve Yin    */
279*5fdc4257SSteve Yin IMAccessible* AccObjectManagerAgent::GetIMAccByXAcc(XAccessible* pXAcc)
280*5fdc4257SSteve Yin {
281*5fdc4257SSteve Yin     if(pWinManager)
282*5fdc4257SSteve Yin         return pWinManager->GetIMAccByXAcc(pXAcc);
283*5fdc4257SSteve Yin 
284*5fdc4257SSteve Yin     return NULL;
285*5fdc4257SSteve Yin }
286*5fdc4257SSteve Yin 
287*5fdc4257SSteve Yin /**
288*5fdc4257SSteve Yin    * Notify manger when a XAccessible object is destroying.
289*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
290*5fdc4257SSteve Yin    * @return.
291*5fdc4257SSteve Yin    */
292*5fdc4257SSteve Yin void  AccObjectManagerAgent::NotifyDestroy(XAccessible* pXAcc)
293*5fdc4257SSteve Yin {
294*5fdc4257SSteve Yin     if(pWinManager)
295*5fdc4257SSteve Yin         pWinManager->NotifyDestroy(pXAcc);
296*5fdc4257SSteve Yin }
297*5fdc4257SSteve Yin 
298*5fdc4257SSteve Yin /**
299*5fdc4257SSteve Yin    * Return com object interface by querying child id.
300*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
301*5fdc4257SSteve Yin    * @return Com interface.
302*5fdc4257SSteve Yin    */
303*5fdc4257SSteve Yin void AccObjectManagerAgent::GetIAccessibleFromResID(long childID,IMAccessible** pIMAcc)
304*5fdc4257SSteve Yin {
305*5fdc4257SSteve Yin     if(pWinManager)
306*5fdc4257SSteve Yin         *pIMAcc = pWinManager->GetIAccessibleFromResID(childID);
307*5fdc4257SSteve Yin }
308*5fdc4257SSteve Yin 
309*5fdc4257SSteve Yin /**
310*5fdc4257SSteve Yin    * Return object interface by querying interface.
311*5fdc4257SSteve Yin    * @param pXAcc Uno XAccessible interface of control.
312*5fdc4257SSteve Yin    * @return Com interface.
313*5fdc4257SSteve Yin    */
314*5fdc4257SSteve Yin unsigned char AccObjectManagerAgent::GetIAccessibleFromXAccessible(XAccessible* pXAcc, IAccessible** ppXI)
315*5fdc4257SSteve Yin {
316*5fdc4257SSteve Yin     if(pWinManager)
317*5fdc4257SSteve Yin     {
318*5fdc4257SSteve Yin         *ppXI = (IAccessible*)pWinManager->GetIMAccByXAcc(pXAcc);
319*5fdc4257SSteve Yin         if(*ppXI)
320*5fdc4257SSteve Yin             return sal_True;
321*5fdc4257SSteve Yin     }
322*5fdc4257SSteve Yin     return sal_False;
323*5fdc4257SSteve Yin }
324*5fdc4257SSteve Yin 
325*5fdc4257SSteve Yin XAccessible* AccObjectManagerAgent::GetParentXAccessible( XAccessible* pXAcc )
326*5fdc4257SSteve Yin {
327*5fdc4257SSteve Yin     if(pWinManager)
328*5fdc4257SSteve Yin         return pWinManager->GetParentXAccessible( pXAcc );
329*5fdc4257SSteve Yin 
330*5fdc4257SSteve Yin     return NULL;
331*5fdc4257SSteve Yin }
332*5fdc4257SSteve Yin 
333*5fdc4257SSteve Yin short AccObjectManagerAgent::GetParentRole( XAccessible* pXAcc )
334*5fdc4257SSteve Yin {
335*5fdc4257SSteve Yin     if(pWinManager)
336*5fdc4257SSteve Yin         return pWinManager->GetParentRole( pXAcc );
337*5fdc4257SSteve Yin 
338*5fdc4257SSteve Yin     return -1;
339*5fdc4257SSteve Yin }
340*5fdc4257SSteve Yin 
341*5fdc4257SSteve Yin void AccObjectManagerAgent::UpdateDescription( XAccessible* pXAcc )
342*5fdc4257SSteve Yin {
343*5fdc4257SSteve Yin     if(pWinManager)
344*5fdc4257SSteve Yin         pWinManager->UpdateDescription( pXAcc );
345*5fdc4257SSteve Yin }
346*5fdc4257SSteve Yin 
347*5fdc4257SSteve Yin void AccObjectManagerAgent::UpdateChildState(com::sun::star::accessibility::XAccessible* pXAcc)
348*5fdc4257SSteve Yin {
349*5fdc4257SSteve Yin     if(pWinManager)
350*5fdc4257SSteve Yin         pWinManager->UpdateChildState( pXAcc );
351*5fdc4257SSteve Yin }
352*5fdc4257SSteve Yin 
353*5fdc4257SSteve Yin 
354*5fdc4257SSteve Yin bool AccObjectManagerAgent::IsSpecialToolboItem(com::sun::star::accessibility::XAccessible* pXAcc)
355*5fdc4257SSteve Yin {
356*5fdc4257SSteve Yin     if(pWinManager)
357*5fdc4257SSteve Yin         return pWinManager->IsSpecialToolboItem( pXAcc );
358*5fdc4257SSteve Yin 
359*5fdc4257SSteve Yin     return false;
360*5fdc4257SSteve Yin }
361*5fdc4257SSteve Yin 
362*5fdc4257SSteve Yin short AccObjectManagerAgent::GetRole(com::sun::star::accessibility::XAccessible* pXAcc)
363*5fdc4257SSteve Yin {
364*5fdc4257SSteve Yin     if(pWinManager)
365*5fdc4257SSteve Yin         return pWinManager->GetRole( pXAcc );
366*5fdc4257SSteve Yin 
367*5fdc4257SSteve Yin     return -1;
368*5fdc4257SSteve Yin }
369*5fdc4257SSteve Yin 
370*5fdc4257SSteve Yin XAccessible* AccObjectManagerAgent::GetAccDocByAccTopWin( XAccessible* pXAcc )
371*5fdc4257SSteve Yin {
372*5fdc4257SSteve Yin     if (pWinManager)
373*5fdc4257SSteve Yin     {
374*5fdc4257SSteve Yin         return pWinManager->GetAccDocByAccTopWin( pXAcc );
375*5fdc4257SSteve Yin     }
376*5fdc4257SSteve Yin     return NULL;
377*5fdc4257SSteve Yin }
378*5fdc4257SSteve Yin bool AccObjectManagerAgent::IsTopWinAcc( com::sun::star::accessibility::XAccessible* pXAcc )
379*5fdc4257SSteve Yin {
380*5fdc4257SSteve Yin     if (pWinManager)
381*5fdc4257SSteve Yin     {
382*5fdc4257SSteve Yin         return pWinManager->IsTopWinAcc( pXAcc );
383*5fdc4257SSteve Yin     }
384*5fdc4257SSteve Yin     return NULL;
385*5fdc4257SSteve Yin }
386*5fdc4257SSteve Yin 
387*5fdc4257SSteve Yin bool AccObjectManagerAgent::IsStateManageDescendant(com::sun::star::accessibility::XAccessible* pXAcc)
388*5fdc4257SSteve Yin {
389*5fdc4257SSteve Yin     if(pWinManager)
390*5fdc4257SSteve Yin         return pWinManager->IsStateManageDescendant( pXAcc );
391*5fdc4257SSteve Yin 
392*5fdc4257SSteve Yin     return sal_False;
393*5fdc4257SSteve Yin }
394