10841af79SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
30841af79SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
40841af79SAndrew Rist * or more contributor license agreements. See the NOTICE file
50841af79SAndrew Rist * distributed with this work for additional information
60841af79SAndrew Rist * regarding copyright ownership. The ASF licenses this file
70841af79SAndrew Rist * to you under the Apache License, Version 2.0 (the
80841af79SAndrew Rist * "License"); you may not use this file except in compliance
90841af79SAndrew Rist * with the License. You may obtain a copy of the License at
100841af79SAndrew Rist *
110841af79SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
120841af79SAndrew Rist *
130841af79SAndrew Rist * Unless required by applicable law or agreed to in writing,
140841af79SAndrew Rist * software distributed under the License is distributed on an
150841af79SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
160841af79SAndrew Rist * KIND, either express or implied. See the License for the
170841af79SAndrew Rist * specific language governing permissions and limitations
180841af79SAndrew Rist * under the License.
190841af79SAndrew Rist *
200841af79SAndrew Rist *************************************************************/
210841af79SAndrew Rist
220841af79SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_accessibility.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir // includes --------------------------------------------------------------
28cdf0e10cSrcweir #include <accessibility/standard/accessiblemenubasecomponent.hxx>
29cdf0e10cSrcweir #include <accessibility/standard/vclxaccessiblemenu.hxx>
30cdf0e10cSrcweir #include <accessibility/standard/vclxaccessiblemenuitem.hxx>
31cdf0e10cSrcweir #include <accessibility/standard/vclxaccessiblemenuseparator.hxx>
32cdf0e10cSrcweir #include <toolkit/helper/externallock.hxx>
33cdf0e10cSrcweir #include <toolkit/helper/convert.hxx>
34cdf0e10cSrcweir
35cdf0e10cSrcweir #include <com/sun/star/accessibility/AccessibleEventId.hpp>
36cdf0e10cSrcweir #include <com/sun/star/accessibility/AccessibleRole.hpp>
37cdf0e10cSrcweir #include <com/sun/star/accessibility/AccessibleStateType.hpp>
38cdf0e10cSrcweir
39cdf0e10cSrcweir #include <unotools/accessiblestatesethelper.hxx>
40cdf0e10cSrcweir #include <vcl/svapp.hxx>
41cdf0e10cSrcweir #include <vcl/window.hxx>
42cdf0e10cSrcweir #include <vcl/menu.hxx>
43cdf0e10cSrcweir #include <tools/debug.hxx>
44cdf0e10cSrcweir
45cdf0e10cSrcweir using namespace ::com::sun::star;
46cdf0e10cSrcweir using namespace ::com::sun::star::lang;
47cdf0e10cSrcweir using namespace ::com::sun::star::uno;
48cdf0e10cSrcweir using namespace ::com::sun::star::accessibility;
49cdf0e10cSrcweir using namespace ::comphelper;
50cdf0e10cSrcweir
51cdf0e10cSrcweir
52cdf0e10cSrcweir // -----------------------------------------------------------------------------
53cdf0e10cSrcweir // OAccessibleMenuBaseComponent
54cdf0e10cSrcweir // -----------------------------------------------------------------------------
55cdf0e10cSrcweir
OAccessibleMenuBaseComponent(Menu * pMenu)56cdf0e10cSrcweir OAccessibleMenuBaseComponent::OAccessibleMenuBaseComponent( Menu* pMenu )
57cdf0e10cSrcweir :AccessibleExtendedComponentHelper_BASE( new VCLExternalSolarLock() )
58cdf0e10cSrcweir ,m_pMenu( pMenu )
59cdf0e10cSrcweir ,m_bEnabled( sal_False )
60cdf0e10cSrcweir ,m_bFocused( sal_False )
61cdf0e10cSrcweir ,m_bVisible( sal_False )
62cdf0e10cSrcweir ,m_bSelected( sal_False )
63cdf0e10cSrcweir ,m_bChecked( sal_False )
64cdf0e10cSrcweir {
65cdf0e10cSrcweir m_pExternalLock = static_cast< VCLExternalSolarLock* >( getExternalLock() );
66cdf0e10cSrcweir
67cdf0e10cSrcweir if ( m_pMenu )
68cdf0e10cSrcweir {
69cdf0e10cSrcweir m_aAccessibleChildren.assign( m_pMenu->GetItemCount(), Reference< XAccessible >() );
70cdf0e10cSrcweir m_pMenu->AddEventListener( LINK( this, OAccessibleMenuBaseComponent, MenuEventListener ) );
71cdf0e10cSrcweir }
72cdf0e10cSrcweir }
73cdf0e10cSrcweir
74cdf0e10cSrcweir // -----------------------------------------------------------------------------
75cdf0e10cSrcweir
~OAccessibleMenuBaseComponent()76cdf0e10cSrcweir OAccessibleMenuBaseComponent::~OAccessibleMenuBaseComponent()
77cdf0e10cSrcweir {
78cdf0e10cSrcweir if ( m_pMenu )
79cdf0e10cSrcweir m_pMenu->RemoveEventListener( LINK( this, OAccessibleMenuBaseComponent, MenuEventListener ) );
80cdf0e10cSrcweir
81cdf0e10cSrcweir delete m_pExternalLock;
82cdf0e10cSrcweir m_pExternalLock = NULL;
83cdf0e10cSrcweir }
84cdf0e10cSrcweir
85cdf0e10cSrcweir // -----------------------------------------------------------------------------
86cdf0e10cSrcweir
IsEnabled()87cdf0e10cSrcweir sal_Bool OAccessibleMenuBaseComponent::IsEnabled()
88cdf0e10cSrcweir {
89cdf0e10cSrcweir return sal_False;
90cdf0e10cSrcweir }
91cdf0e10cSrcweir
92cdf0e10cSrcweir // -----------------------------------------------------------------------------
93cdf0e10cSrcweir
IsFocused()94cdf0e10cSrcweir sal_Bool OAccessibleMenuBaseComponent::IsFocused()
95cdf0e10cSrcweir {
96cdf0e10cSrcweir return sal_False;
97cdf0e10cSrcweir }
98cdf0e10cSrcweir
99cdf0e10cSrcweir // -----------------------------------------------------------------------------
100cdf0e10cSrcweir
IsVisible()101cdf0e10cSrcweir sal_Bool OAccessibleMenuBaseComponent::IsVisible()
102cdf0e10cSrcweir {
103cdf0e10cSrcweir return sal_False;
104cdf0e10cSrcweir }
105cdf0e10cSrcweir
106cdf0e10cSrcweir // -----------------------------------------------------------------------------
107cdf0e10cSrcweir
IsSelected()108cdf0e10cSrcweir sal_Bool OAccessibleMenuBaseComponent::IsSelected()
109cdf0e10cSrcweir {
110cdf0e10cSrcweir return sal_False;
111cdf0e10cSrcweir }
112cdf0e10cSrcweir
113cdf0e10cSrcweir // -----------------------------------------------------------------------------
114cdf0e10cSrcweir
IsChecked()115cdf0e10cSrcweir sal_Bool OAccessibleMenuBaseComponent::IsChecked()
116cdf0e10cSrcweir {
117cdf0e10cSrcweir return sal_False;
118cdf0e10cSrcweir }
119cdf0e10cSrcweir
120cdf0e10cSrcweir // -----------------------------------------------------------------------------
121cdf0e10cSrcweir
SetStates()122cdf0e10cSrcweir void OAccessibleMenuBaseComponent::SetStates()
123cdf0e10cSrcweir {
124cdf0e10cSrcweir m_bEnabled = IsEnabled();
125cdf0e10cSrcweir m_bFocused = IsFocused();
126cdf0e10cSrcweir m_bVisible = IsVisible();
127cdf0e10cSrcweir m_bSelected = IsSelected();
128cdf0e10cSrcweir m_bChecked = IsChecked();
129cdf0e10cSrcweir }
130cdf0e10cSrcweir
131cdf0e10cSrcweir // -----------------------------------------------------------------------------
132cdf0e10cSrcweir
SetEnabled(sal_Bool bEnabled)133cdf0e10cSrcweir void OAccessibleMenuBaseComponent::SetEnabled( sal_Bool bEnabled )
134cdf0e10cSrcweir {
135cdf0e10cSrcweir if ( m_bEnabled != bEnabled )
136cdf0e10cSrcweir {
137*21075d77SSteve Yin sal_Int16 nStateType=AccessibleStateType::ENABLED;
138*21075d77SSteve Yin if (IsMenuHideDisabledEntries())
139*21075d77SSteve Yin {
140*21075d77SSteve Yin nStateType = AccessibleStateType::VISIBLE;
141*21075d77SSteve Yin }
142cdf0e10cSrcweir Any aOldValue[2], aNewValue[2];
143cdf0e10cSrcweir if ( m_bEnabled )
144cdf0e10cSrcweir {
145cdf0e10cSrcweir aOldValue[0] <<= AccessibleStateType::SENSITIVE;
146*21075d77SSteve Yin aOldValue[1] <<= nStateType;
147cdf0e10cSrcweir }
148cdf0e10cSrcweir else
149cdf0e10cSrcweir {
150*21075d77SSteve Yin aNewValue[0] <<= nStateType;
151cdf0e10cSrcweir aNewValue[1] <<= AccessibleStateType::SENSITIVE;
152cdf0e10cSrcweir }
153cdf0e10cSrcweir m_bEnabled = bEnabled;
154cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue[0], aNewValue[0] );
155cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue[1], aNewValue[1] );
156cdf0e10cSrcweir }
157cdf0e10cSrcweir }
158cdf0e10cSrcweir
159cdf0e10cSrcweir // -----------------------------------------------------------------------------
160cdf0e10cSrcweir
SetFocused(sal_Bool bFocused)161cdf0e10cSrcweir void OAccessibleMenuBaseComponent::SetFocused( sal_Bool bFocused )
162cdf0e10cSrcweir {
163cdf0e10cSrcweir if ( m_bFocused != bFocused )
164cdf0e10cSrcweir {
165cdf0e10cSrcweir Any aOldValue, aNewValue;
166cdf0e10cSrcweir if ( m_bFocused )
167cdf0e10cSrcweir aOldValue <<= AccessibleStateType::FOCUSED;
168cdf0e10cSrcweir else
169cdf0e10cSrcweir aNewValue <<= AccessibleStateType::FOCUSED;
170cdf0e10cSrcweir m_bFocused = bFocused;
171cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
172cdf0e10cSrcweir }
173cdf0e10cSrcweir }
174cdf0e10cSrcweir
175cdf0e10cSrcweir // -----------------------------------------------------------------------------
176cdf0e10cSrcweir
SetVisible(sal_Bool bVisible)177cdf0e10cSrcweir void OAccessibleMenuBaseComponent::SetVisible( sal_Bool bVisible )
178cdf0e10cSrcweir {
179cdf0e10cSrcweir if ( m_bVisible != bVisible )
180cdf0e10cSrcweir {
181cdf0e10cSrcweir Any aOldValue, aNewValue;
182cdf0e10cSrcweir if ( m_bVisible )
183cdf0e10cSrcweir aOldValue <<= AccessibleStateType::VISIBLE;
184cdf0e10cSrcweir else
185cdf0e10cSrcweir aNewValue <<= AccessibleStateType::VISIBLE;
186cdf0e10cSrcweir m_bVisible = bVisible;
187cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
188cdf0e10cSrcweir }
189cdf0e10cSrcweir }
190cdf0e10cSrcweir
191cdf0e10cSrcweir // -----------------------------------------------------------------------------
192cdf0e10cSrcweir
SetSelected(sal_Bool bSelected)193cdf0e10cSrcweir void OAccessibleMenuBaseComponent::SetSelected( sal_Bool bSelected )
194cdf0e10cSrcweir {
195cdf0e10cSrcweir if ( m_bSelected != bSelected )
196cdf0e10cSrcweir {
197cdf0e10cSrcweir Any aOldValue, aNewValue;
198cdf0e10cSrcweir if ( m_bSelected )
199cdf0e10cSrcweir aOldValue <<= AccessibleStateType::SELECTED;
200cdf0e10cSrcweir else
201cdf0e10cSrcweir aNewValue <<= AccessibleStateType::SELECTED;
202cdf0e10cSrcweir m_bSelected = bSelected;
203cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
204cdf0e10cSrcweir }
205cdf0e10cSrcweir }
206cdf0e10cSrcweir
207cdf0e10cSrcweir // -----------------------------------------------------------------------------
208cdf0e10cSrcweir
SetChecked(sal_Bool bChecked)209cdf0e10cSrcweir void OAccessibleMenuBaseComponent::SetChecked( sal_Bool bChecked )
210cdf0e10cSrcweir {
211cdf0e10cSrcweir if ( m_bChecked != bChecked )
212cdf0e10cSrcweir {
213cdf0e10cSrcweir Any aOldValue, aNewValue;
214cdf0e10cSrcweir if ( m_bChecked )
215cdf0e10cSrcweir aOldValue <<= AccessibleStateType::CHECKED;
216cdf0e10cSrcweir else
217cdf0e10cSrcweir aNewValue <<= AccessibleStateType::CHECKED;
218cdf0e10cSrcweir m_bChecked = bChecked;
219cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
220cdf0e10cSrcweir }
221cdf0e10cSrcweir }
222cdf0e10cSrcweir
223cdf0e10cSrcweir // -----------------------------------------------------------------------------
224cdf0e10cSrcweir
UpdateEnabled(sal_Int32 i,sal_Bool bEnabled)225cdf0e10cSrcweir void OAccessibleMenuBaseComponent::UpdateEnabled( sal_Int32 i, sal_Bool bEnabled )
226cdf0e10cSrcweir {
227cdf0e10cSrcweir if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
228cdf0e10cSrcweir {
229cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
230cdf0e10cSrcweir if ( xChild.is() )
231cdf0e10cSrcweir {
232cdf0e10cSrcweir OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xChild.get() );
233cdf0e10cSrcweir if ( pComp )
234cdf0e10cSrcweir pComp->SetEnabled( bEnabled );
235cdf0e10cSrcweir }
236cdf0e10cSrcweir }
237cdf0e10cSrcweir }
238cdf0e10cSrcweir
239cdf0e10cSrcweir // -----------------------------------------------------------------------------
240cdf0e10cSrcweir
UpdateFocused(sal_Int32 i,sal_Bool bFocused)241cdf0e10cSrcweir void OAccessibleMenuBaseComponent::UpdateFocused( sal_Int32 i, sal_Bool bFocused )
242cdf0e10cSrcweir {
243cdf0e10cSrcweir if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
244cdf0e10cSrcweir {
245cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
246cdf0e10cSrcweir if ( xChild.is() )
247cdf0e10cSrcweir {
248cdf0e10cSrcweir OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xChild.get() );
249cdf0e10cSrcweir if ( pComp )
250cdf0e10cSrcweir pComp->SetFocused( bFocused );
251cdf0e10cSrcweir }
252cdf0e10cSrcweir }
253cdf0e10cSrcweir }
254cdf0e10cSrcweir
255cdf0e10cSrcweir // -----------------------------------------------------------------------------
256cdf0e10cSrcweir
UpdateVisible()257cdf0e10cSrcweir void OAccessibleMenuBaseComponent::UpdateVisible()
258cdf0e10cSrcweir {
259cdf0e10cSrcweir SetVisible( IsVisible() );
260cdf0e10cSrcweir for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
261cdf0e10cSrcweir {
262cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
263cdf0e10cSrcweir if ( xChild.is() )
264cdf0e10cSrcweir {
265cdf0e10cSrcweir OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xChild.get() );
266cdf0e10cSrcweir if ( pComp )
267cdf0e10cSrcweir pComp->SetVisible( pComp->IsVisible() );
268cdf0e10cSrcweir }
269cdf0e10cSrcweir }
270cdf0e10cSrcweir }
271cdf0e10cSrcweir
272cdf0e10cSrcweir // -----------------------------------------------------------------------------
273cdf0e10cSrcweir
UpdateSelected(sal_Int32 i,sal_Bool bSelected)274cdf0e10cSrcweir void OAccessibleMenuBaseComponent::UpdateSelected( sal_Int32 i, sal_Bool bSelected )
275cdf0e10cSrcweir {
276cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() );
277cdf0e10cSrcweir
278cdf0e10cSrcweir if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
279cdf0e10cSrcweir {
280cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
281cdf0e10cSrcweir if ( xChild.is() )
282cdf0e10cSrcweir {
283cdf0e10cSrcweir OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xChild.get() );
284cdf0e10cSrcweir if ( pComp )
285cdf0e10cSrcweir pComp->SetSelected( bSelected );
286cdf0e10cSrcweir }
287cdf0e10cSrcweir }
288cdf0e10cSrcweir }
289cdf0e10cSrcweir
290cdf0e10cSrcweir // -----------------------------------------------------------------------------
291cdf0e10cSrcweir
UpdateChecked(sal_Int32 i,sal_Bool bChecked)292cdf0e10cSrcweir void OAccessibleMenuBaseComponent::UpdateChecked( sal_Int32 i, sal_Bool bChecked )
293cdf0e10cSrcweir {
294cdf0e10cSrcweir if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
295cdf0e10cSrcweir {
296cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
297cdf0e10cSrcweir if ( xChild.is() )
298cdf0e10cSrcweir {
299cdf0e10cSrcweir OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xChild.get() );
300cdf0e10cSrcweir if ( pComp )
301cdf0e10cSrcweir pComp->SetChecked( bChecked );
302cdf0e10cSrcweir }
303cdf0e10cSrcweir }
304cdf0e10cSrcweir }
305cdf0e10cSrcweir
306cdf0e10cSrcweir // -----------------------------------------------------------------------------
307cdf0e10cSrcweir
UpdateAccessibleName(sal_Int32 i)308cdf0e10cSrcweir void OAccessibleMenuBaseComponent::UpdateAccessibleName( sal_Int32 i )
309cdf0e10cSrcweir {
310cdf0e10cSrcweir if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
311cdf0e10cSrcweir {
312cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
313cdf0e10cSrcweir if ( xChild.is() )
314cdf0e10cSrcweir {
315cdf0e10cSrcweir OAccessibleMenuItemComponent* pComp = static_cast< OAccessibleMenuItemComponent* >( xChild.get() );
316cdf0e10cSrcweir if ( pComp )
317cdf0e10cSrcweir pComp->SetAccessibleName( pComp->GetAccessibleName() );
318cdf0e10cSrcweir }
319cdf0e10cSrcweir }
320cdf0e10cSrcweir }
321cdf0e10cSrcweir
322cdf0e10cSrcweir // -----------------------------------------------------------------------------
323cdf0e10cSrcweir
UpdateItemText(sal_Int32 i)324cdf0e10cSrcweir void OAccessibleMenuBaseComponent::UpdateItemText( sal_Int32 i )
325cdf0e10cSrcweir {
326cdf0e10cSrcweir if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
327cdf0e10cSrcweir {
328cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
329cdf0e10cSrcweir if ( xChild.is() )
330cdf0e10cSrcweir {
331cdf0e10cSrcweir OAccessibleMenuItemComponent* pComp = static_cast< OAccessibleMenuItemComponent* >( xChild.get() );
332cdf0e10cSrcweir if ( pComp )
333cdf0e10cSrcweir pComp->SetItemText( pComp->GetItemText() );
334cdf0e10cSrcweir }
335cdf0e10cSrcweir }
336cdf0e10cSrcweir }
337cdf0e10cSrcweir
338cdf0e10cSrcweir // -----------------------------------------------------------------------------
339cdf0e10cSrcweir
GetChildCount()340cdf0e10cSrcweir sal_Int32 OAccessibleMenuBaseComponent::GetChildCount()
341cdf0e10cSrcweir {
342cdf0e10cSrcweir return m_aAccessibleChildren.size();
343cdf0e10cSrcweir }
344cdf0e10cSrcweir
345cdf0e10cSrcweir // -----------------------------------------------------------------------------
346cdf0e10cSrcweir
GetChild(sal_Int32 i)347cdf0e10cSrcweir Reference< XAccessible > OAccessibleMenuBaseComponent::GetChild( sal_Int32 i )
348cdf0e10cSrcweir {
349cdf0e10cSrcweir Reference< XAccessible > xChild = m_aAccessibleChildren[i];
350cdf0e10cSrcweir if ( !xChild.is() )
351cdf0e10cSrcweir {
352cdf0e10cSrcweir if ( m_pMenu )
353cdf0e10cSrcweir {
354cdf0e10cSrcweir // create a new child
355cdf0e10cSrcweir OAccessibleMenuBaseComponent* pChild;
356cdf0e10cSrcweir
357cdf0e10cSrcweir if ( m_pMenu->GetItemType( (sal_uInt16)i ) == MENUITEM_SEPARATOR )
358cdf0e10cSrcweir {
359cdf0e10cSrcweir pChild = new VCLXAccessibleMenuSeparator( m_pMenu, (sal_uInt16)i );
360cdf0e10cSrcweir }
361cdf0e10cSrcweir else
362cdf0e10cSrcweir {
363cdf0e10cSrcweir PopupMenu* pPopupMenu = m_pMenu->GetPopupMenu( m_pMenu->GetItemId( (sal_uInt16)i ) );
364cdf0e10cSrcweir if ( pPopupMenu )
365cdf0e10cSrcweir {
366cdf0e10cSrcweir pChild = new VCLXAccessibleMenu( m_pMenu, (sal_uInt16)i, pPopupMenu );
367cdf0e10cSrcweir pPopupMenu->SetAccessible( pChild );
368cdf0e10cSrcweir }
369cdf0e10cSrcweir else
370cdf0e10cSrcweir {
371cdf0e10cSrcweir pChild = new VCLXAccessibleMenuItem( m_pMenu, (sal_uInt16)i );
372cdf0e10cSrcweir }
373cdf0e10cSrcweir }
374cdf0e10cSrcweir
375cdf0e10cSrcweir // set states
376cdf0e10cSrcweir pChild->SetStates();
377cdf0e10cSrcweir
378cdf0e10cSrcweir xChild = pChild;
379cdf0e10cSrcweir
380cdf0e10cSrcweir // insert into menu item list
381cdf0e10cSrcweir m_aAccessibleChildren[i] = xChild;
382cdf0e10cSrcweir }
383cdf0e10cSrcweir }
384cdf0e10cSrcweir
385cdf0e10cSrcweir return xChild;
386cdf0e10cSrcweir }
387cdf0e10cSrcweir
388cdf0e10cSrcweir // -----------------------------------------------------------------------------
389cdf0e10cSrcweir
GetChildAt(const awt::Point & rPoint)390cdf0e10cSrcweir Reference< XAccessible > OAccessibleMenuBaseComponent::GetChildAt( const awt::Point& rPoint )
391cdf0e10cSrcweir {
392cdf0e10cSrcweir Reference< XAccessible > xChild;
393cdf0e10cSrcweir for ( sal_uInt32 i = 0, nCount = getAccessibleChildCount(); i < nCount; ++i )
394cdf0e10cSrcweir {
395cdf0e10cSrcweir Reference< XAccessible > xAcc = getAccessibleChild( i );
396cdf0e10cSrcweir if ( xAcc.is() )
397cdf0e10cSrcweir {
398cdf0e10cSrcweir Reference< XAccessibleComponent > xComp( xAcc->getAccessibleContext(), UNO_QUERY );
399cdf0e10cSrcweir if ( xComp.is() )
400cdf0e10cSrcweir {
401cdf0e10cSrcweir Rectangle aRect = VCLRectangle( xComp->getBounds() );
402cdf0e10cSrcweir Point aPos = VCLPoint( rPoint );
403cdf0e10cSrcweir if ( aRect.IsInside( aPos ) )
404cdf0e10cSrcweir {
405cdf0e10cSrcweir xChild = xAcc;
406cdf0e10cSrcweir break;
407cdf0e10cSrcweir }
408cdf0e10cSrcweir }
409cdf0e10cSrcweir }
410cdf0e10cSrcweir }
411cdf0e10cSrcweir
412cdf0e10cSrcweir return xChild;
413cdf0e10cSrcweir }
414cdf0e10cSrcweir
415cdf0e10cSrcweir // -----------------------------------------------------------------------------
416cdf0e10cSrcweir
InsertChild(sal_Int32 i)417cdf0e10cSrcweir void OAccessibleMenuBaseComponent::InsertChild( sal_Int32 i )
418cdf0e10cSrcweir {
419cdf0e10cSrcweir if ( i > (sal_Int32)m_aAccessibleChildren.size() )
420cdf0e10cSrcweir i = m_aAccessibleChildren.size();
421cdf0e10cSrcweir
422cdf0e10cSrcweir if ( i >= 0 )
423cdf0e10cSrcweir {
424cdf0e10cSrcweir // insert entry in child list
425cdf0e10cSrcweir m_aAccessibleChildren.insert( m_aAccessibleChildren.begin() + i, Reference< XAccessible >() );
426cdf0e10cSrcweir
427cdf0e10cSrcweir // update item position of accessible children
428cdf0e10cSrcweir for ( sal_uInt32 j = i, nCount = m_aAccessibleChildren.size(); j < nCount; ++j )
429cdf0e10cSrcweir {
430cdf0e10cSrcweir Reference< XAccessible > xAcc( m_aAccessibleChildren[j] );
431cdf0e10cSrcweir if ( xAcc.is() )
432cdf0e10cSrcweir {
433cdf0e10cSrcweir OAccessibleMenuItemComponent* pComp = static_cast< OAccessibleMenuItemComponent* >( xAcc.get() );
434cdf0e10cSrcweir if ( pComp )
435cdf0e10cSrcweir pComp->SetItemPos( (sal_uInt16)j );
436cdf0e10cSrcweir }
437cdf0e10cSrcweir }
438cdf0e10cSrcweir
439cdf0e10cSrcweir // send accessible child event
440cdf0e10cSrcweir Reference< XAccessible > xChild( GetChild( i ) );
441cdf0e10cSrcweir if ( xChild.is() )
442cdf0e10cSrcweir {
443cdf0e10cSrcweir Any aOldValue, aNewValue;
444cdf0e10cSrcweir aNewValue <<= xChild;
445cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
446cdf0e10cSrcweir }
447cdf0e10cSrcweir }
448cdf0e10cSrcweir }
449cdf0e10cSrcweir
450cdf0e10cSrcweir // -----------------------------------------------------------------------------
451cdf0e10cSrcweir
RemoveChild(sal_Int32 i)452cdf0e10cSrcweir void OAccessibleMenuBaseComponent::RemoveChild( sal_Int32 i )
453cdf0e10cSrcweir {
454cdf0e10cSrcweir if ( i >= 0 && i < (sal_Int32)m_aAccessibleChildren.size() )
455cdf0e10cSrcweir {
456cdf0e10cSrcweir // keep the accessible of the removed item
457cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
458cdf0e10cSrcweir
459cdf0e10cSrcweir // remove entry in child list
460cdf0e10cSrcweir m_aAccessibleChildren.erase( m_aAccessibleChildren.begin() + i );
461cdf0e10cSrcweir
462cdf0e10cSrcweir // update item position of accessible children
463cdf0e10cSrcweir for ( sal_uInt32 j = i, nCount = m_aAccessibleChildren.size(); j < nCount; ++j )
464cdf0e10cSrcweir {
465cdf0e10cSrcweir Reference< XAccessible > xAcc( m_aAccessibleChildren[j] );
466cdf0e10cSrcweir if ( xAcc.is() )
467cdf0e10cSrcweir {
468cdf0e10cSrcweir OAccessibleMenuItemComponent* pComp = static_cast< OAccessibleMenuItemComponent* >( xAcc.get() );
469cdf0e10cSrcweir if ( pComp )
470cdf0e10cSrcweir pComp->SetItemPos( (sal_uInt16)j );
471cdf0e10cSrcweir }
472cdf0e10cSrcweir }
473cdf0e10cSrcweir
474cdf0e10cSrcweir // send accessible child event
475cdf0e10cSrcweir if ( xChild.is() )
476cdf0e10cSrcweir {
477cdf0e10cSrcweir Any aOldValue, aNewValue;
478cdf0e10cSrcweir aOldValue <<= xChild;
479cdf0e10cSrcweir NotifyAccessibleEvent( AccessibleEventId::CHILD, aOldValue, aNewValue );
480cdf0e10cSrcweir
481cdf0e10cSrcweir Reference< XComponent > xComponent( xChild, UNO_QUERY );
482cdf0e10cSrcweir if ( xComponent.is() )
483cdf0e10cSrcweir xComponent->dispose();
484cdf0e10cSrcweir }
485cdf0e10cSrcweir }
486cdf0e10cSrcweir }
487cdf0e10cSrcweir
488cdf0e10cSrcweir // -----------------------------------------------------------------------------
489cdf0e10cSrcweir
IsHighlighted()490cdf0e10cSrcweir sal_Bool OAccessibleMenuBaseComponent::IsHighlighted()
491cdf0e10cSrcweir {
492cdf0e10cSrcweir return sal_False;
493cdf0e10cSrcweir }
494cdf0e10cSrcweir
495cdf0e10cSrcweir // -----------------------------------------------------------------------------
496cdf0e10cSrcweir
IsChildHighlighted()497cdf0e10cSrcweir sal_Bool OAccessibleMenuBaseComponent::IsChildHighlighted()
498cdf0e10cSrcweir {
499cdf0e10cSrcweir sal_Bool bChildHighlighted = sal_False;
500cdf0e10cSrcweir
501cdf0e10cSrcweir for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
502cdf0e10cSrcweir {
503cdf0e10cSrcweir Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
504cdf0e10cSrcweir if ( xChild.is() )
505cdf0e10cSrcweir {
506cdf0e10cSrcweir OAccessibleMenuBaseComponent* pComp = static_cast< OAccessibleMenuBaseComponent* >( xChild.get() );
507cdf0e10cSrcweir if ( pComp && pComp->IsHighlighted() )
508cdf0e10cSrcweir {
509cdf0e10cSrcweir bChildHighlighted = sal_True;
510cdf0e10cSrcweir break;
511cdf0e10cSrcweir }
512cdf0e10cSrcweir }
513cdf0e10cSrcweir }
514cdf0e10cSrcweir
515cdf0e10cSrcweir return bChildHighlighted;
516cdf0e10cSrcweir }
517cdf0e10cSrcweir
518cdf0e10cSrcweir // -----------------------------------------------------------------------------
519cdf0e10cSrcweir
SelectChild(sal_Int32 i)520cdf0e10cSrcweir void OAccessibleMenuBaseComponent::SelectChild( sal_Int32 i )
521cdf0e10cSrcweir {
522cdf0e10cSrcweir // open the menu
523cdf0e10cSrcweir if ( getAccessibleRole() == AccessibleRole::MENU && !IsPopupMenuOpen() )
524cdf0e10cSrcweir Click();
525cdf0e10cSrcweir
526cdf0e10cSrcweir // highlight the child
527cdf0e10cSrcweir if ( m_pMenu )
528cdf0e10cSrcweir m_pMenu->HighlightItem( (sal_uInt16)i );
529cdf0e10cSrcweir }
530cdf0e10cSrcweir
531cdf0e10cSrcweir // -----------------------------------------------------------------------------
532cdf0e10cSrcweir
DeSelectAll()533cdf0e10cSrcweir void OAccessibleMenuBaseComponent::DeSelectAll()
534cdf0e10cSrcweir {
535cdf0e10cSrcweir if ( m_pMenu )
536cdf0e10cSrcweir m_pMenu->DeHighlight();
537cdf0e10cSrcweir }
538cdf0e10cSrcweir
539cdf0e10cSrcweir // -----------------------------------------------------------------------------
540cdf0e10cSrcweir
IsChildSelected(sal_Int32 i)541cdf0e10cSrcweir sal_Bool OAccessibleMenuBaseComponent::IsChildSelected( sal_Int32 i )
542cdf0e10cSrcweir {
543cdf0e10cSrcweir sal_Bool bSelected = sal_False;
544cdf0e10cSrcweir
545cdf0e10cSrcweir if ( m_pMenu && m_pMenu->IsHighlighted( (sal_uInt16)i ) )
546cdf0e10cSrcweir bSelected = sal_True;
547cdf0e10cSrcweir
548cdf0e10cSrcweir return bSelected;
549cdf0e10cSrcweir }
550cdf0e10cSrcweir
551cdf0e10cSrcweir // -----------------------------------------------------------------------------
552cdf0e10cSrcweir
Select()553cdf0e10cSrcweir void OAccessibleMenuBaseComponent::Select()
554cdf0e10cSrcweir {
555cdf0e10cSrcweir }
556cdf0e10cSrcweir
557cdf0e10cSrcweir // -----------------------------------------------------------------------------
558cdf0e10cSrcweir
DeSelect()559cdf0e10cSrcweir void OAccessibleMenuBaseComponent::DeSelect()
560cdf0e10cSrcweir {
561cdf0e10cSrcweir }
562cdf0e10cSrcweir
563cdf0e10cSrcweir // -----------------------------------------------------------------------------
564cdf0e10cSrcweir
Click()565cdf0e10cSrcweir void OAccessibleMenuBaseComponent::Click()
566cdf0e10cSrcweir {
567cdf0e10cSrcweir }
568cdf0e10cSrcweir
569cdf0e10cSrcweir // -----------------------------------------------------------------------------
570cdf0e10cSrcweir
IsPopupMenuOpen()571cdf0e10cSrcweir sal_Bool OAccessibleMenuBaseComponent::IsPopupMenuOpen()
572cdf0e10cSrcweir {
573cdf0e10cSrcweir return sal_False;
574cdf0e10cSrcweir }
575cdf0e10cSrcweir
576cdf0e10cSrcweir // -----------------------------------------------------------------------------
577cdf0e10cSrcweir
IMPL_LINK(OAccessibleMenuBaseComponent,MenuEventListener,VclSimpleEvent *,pEvent)578cdf0e10cSrcweir IMPL_LINK( OAccessibleMenuBaseComponent, MenuEventListener, VclSimpleEvent*, pEvent )
579cdf0e10cSrcweir {
580cdf0e10cSrcweir DBG_ASSERT( pEvent && pEvent->ISA( VclMenuEvent ), "OAccessibleMenuBaseComponent - Unknown MenuEvent!" );
581cdf0e10cSrcweir if ( pEvent && pEvent->ISA( VclMenuEvent ) )
582cdf0e10cSrcweir {
583cdf0e10cSrcweir DBG_ASSERT( ((VclMenuEvent*)pEvent)->GetMenu(), "OAccessibleMenuBaseComponent - Menu?" );
584cdf0e10cSrcweir ProcessMenuEvent( *(VclMenuEvent*)pEvent );
585cdf0e10cSrcweir }
586cdf0e10cSrcweir return 0;
587cdf0e10cSrcweir }
588cdf0e10cSrcweir
589cdf0e10cSrcweir // -----------------------------------------------------------------------------
590cdf0e10cSrcweir
ProcessMenuEvent(const VclMenuEvent & rVclMenuEvent)591cdf0e10cSrcweir void OAccessibleMenuBaseComponent::ProcessMenuEvent( const VclMenuEvent& rVclMenuEvent )
592cdf0e10cSrcweir {
593cdf0e10cSrcweir sal_uInt16 nItemPos = rVclMenuEvent.GetItemPos();
594cdf0e10cSrcweir
595cdf0e10cSrcweir switch ( rVclMenuEvent.GetId() )
596cdf0e10cSrcweir {
597cdf0e10cSrcweir case VCLEVENT_MENU_SHOW:
598cdf0e10cSrcweir case VCLEVENT_MENU_HIDE:
599cdf0e10cSrcweir {
600cdf0e10cSrcweir UpdateVisible();
601cdf0e10cSrcweir }
602cdf0e10cSrcweir break;
603cdf0e10cSrcweir case VCLEVENT_MENU_HIGHLIGHT:
604cdf0e10cSrcweir {
605cdf0e10cSrcweir SetFocused( sal_False );
606cdf0e10cSrcweir UpdateFocused( nItemPos, sal_True );
607cdf0e10cSrcweir UpdateSelected( nItemPos, sal_True );
608cdf0e10cSrcweir }
609cdf0e10cSrcweir break;
610cdf0e10cSrcweir case VCLEVENT_MENU_DEHIGHLIGHT:
611cdf0e10cSrcweir {
612cdf0e10cSrcweir UpdateFocused( nItemPos, sal_False );
613cdf0e10cSrcweir UpdateSelected( nItemPos, sal_False );
614cdf0e10cSrcweir }
615cdf0e10cSrcweir break;
616cdf0e10cSrcweir case VCLEVENT_MENU_SUBMENUACTIVATE:
617cdf0e10cSrcweir {
618cdf0e10cSrcweir }
619cdf0e10cSrcweir break;
620cdf0e10cSrcweir case VCLEVENT_MENU_SUBMENUDEACTIVATE:
621cdf0e10cSrcweir {
622cdf0e10cSrcweir UpdateFocused( nItemPos, sal_True );
623cdf0e10cSrcweir }
624cdf0e10cSrcweir break;
625cdf0e10cSrcweir case VCLEVENT_MENU_ENABLE:
626cdf0e10cSrcweir {
627cdf0e10cSrcweir UpdateEnabled( nItemPos, sal_True );
628cdf0e10cSrcweir }
629cdf0e10cSrcweir break;
630cdf0e10cSrcweir case VCLEVENT_MENU_DISABLE:
631cdf0e10cSrcweir {
632cdf0e10cSrcweir UpdateEnabled( nItemPos, sal_False );
633cdf0e10cSrcweir }
634cdf0e10cSrcweir break;
635cdf0e10cSrcweir case VCLEVENT_MENU_SUBMENUCHANGED:
636cdf0e10cSrcweir {
637cdf0e10cSrcweir RemoveChild( nItemPos );
638cdf0e10cSrcweir InsertChild( nItemPos );
639cdf0e10cSrcweir }
640cdf0e10cSrcweir break;
641cdf0e10cSrcweir case VCLEVENT_MENU_INSERTITEM:
642cdf0e10cSrcweir {
643cdf0e10cSrcweir InsertChild( nItemPos );
644cdf0e10cSrcweir }
645cdf0e10cSrcweir break;
646cdf0e10cSrcweir case VCLEVENT_MENU_REMOVEITEM:
647cdf0e10cSrcweir {
648cdf0e10cSrcweir RemoveChild( nItemPos );
649cdf0e10cSrcweir }
650cdf0e10cSrcweir break;
651cdf0e10cSrcweir case VCLEVENT_MENU_ACCESSIBLENAMECHANGED:
652cdf0e10cSrcweir {
653cdf0e10cSrcweir UpdateAccessibleName( nItemPos );
654cdf0e10cSrcweir }
655cdf0e10cSrcweir break;
656cdf0e10cSrcweir case VCLEVENT_MENU_ITEMTEXTCHANGED:
657cdf0e10cSrcweir {
658cdf0e10cSrcweir UpdateAccessibleName( nItemPos );
659cdf0e10cSrcweir UpdateItemText( nItemPos );
660cdf0e10cSrcweir }
661cdf0e10cSrcweir break;
662cdf0e10cSrcweir case VCLEVENT_MENU_ITEMCHECKED:
663cdf0e10cSrcweir {
664cdf0e10cSrcweir UpdateChecked( nItemPos, sal_True );
665cdf0e10cSrcweir }
666cdf0e10cSrcweir break;
667cdf0e10cSrcweir case VCLEVENT_MENU_ITEMUNCHECKED:
668cdf0e10cSrcweir {
669cdf0e10cSrcweir UpdateChecked( nItemPos, sal_False );
670cdf0e10cSrcweir }
671cdf0e10cSrcweir break;
672cdf0e10cSrcweir case VCLEVENT_OBJECT_DYING:
673cdf0e10cSrcweir {
674cdf0e10cSrcweir if ( m_pMenu )
675cdf0e10cSrcweir {
676cdf0e10cSrcweir m_pMenu->RemoveEventListener( LINK( this, OAccessibleMenuBaseComponent, MenuEventListener ) );
677cdf0e10cSrcweir
678cdf0e10cSrcweir m_pMenu = NULL;
679cdf0e10cSrcweir
680cdf0e10cSrcweir // dispose all menu items
681cdf0e10cSrcweir for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
682cdf0e10cSrcweir {
683cdf0e10cSrcweir Reference< XComponent > xComponent( m_aAccessibleChildren[i], UNO_QUERY );
684cdf0e10cSrcweir if ( xComponent.is() )
685cdf0e10cSrcweir xComponent->dispose();
686cdf0e10cSrcweir }
687cdf0e10cSrcweir m_aAccessibleChildren.clear();
688cdf0e10cSrcweir }
689cdf0e10cSrcweir }
690cdf0e10cSrcweir break;
691cdf0e10cSrcweir default:
692cdf0e10cSrcweir {
693cdf0e10cSrcweir }
694cdf0e10cSrcweir break;
695cdf0e10cSrcweir }
696cdf0e10cSrcweir }
697cdf0e10cSrcweir
698cdf0e10cSrcweir // -----------------------------------------------------------------------------
699cdf0e10cSrcweir // XInterface
700cdf0e10cSrcweir // -----------------------------------------------------------------------------
701cdf0e10cSrcweir
IMPLEMENT_FORWARD_XINTERFACE2(OAccessibleMenuBaseComponent,AccessibleExtendedComponentHelper_BASE,OAccessibleMenuBaseComponent_BASE)702cdf0e10cSrcweir IMPLEMENT_FORWARD_XINTERFACE2( OAccessibleMenuBaseComponent, AccessibleExtendedComponentHelper_BASE, OAccessibleMenuBaseComponent_BASE )
703cdf0e10cSrcweir
704cdf0e10cSrcweir // -----------------------------------------------------------------------------
705cdf0e10cSrcweir // XTypeProvider
706cdf0e10cSrcweir // -----------------------------------------------------------------------------
707cdf0e10cSrcweir
708cdf0e10cSrcweir IMPLEMENT_FORWARD_XTYPEPROVIDER2( OAccessibleMenuBaseComponent, AccessibleExtendedComponentHelper_BASE, OAccessibleMenuBaseComponent_BASE )
709cdf0e10cSrcweir
710cdf0e10cSrcweir // -----------------------------------------------------------------------------
711cdf0e10cSrcweir // XComponent
712cdf0e10cSrcweir // -----------------------------------------------------------------------------
713cdf0e10cSrcweir
714cdf0e10cSrcweir void OAccessibleMenuBaseComponent::disposing()
715cdf0e10cSrcweir {
716cdf0e10cSrcweir AccessibleExtendedComponentHelper_BASE::disposing();
717cdf0e10cSrcweir
718cdf0e10cSrcweir if ( m_pMenu )
719cdf0e10cSrcweir {
720cdf0e10cSrcweir m_pMenu->RemoveEventListener( LINK( this, OAccessibleMenuBaseComponent, MenuEventListener ) );
721cdf0e10cSrcweir
722cdf0e10cSrcweir m_pMenu = NULL;
723cdf0e10cSrcweir
724cdf0e10cSrcweir // dispose all menu items
725cdf0e10cSrcweir for ( sal_uInt32 i = 0; i < m_aAccessibleChildren.size(); ++i )
726cdf0e10cSrcweir {
727cdf0e10cSrcweir Reference< XComponent > xComponent( m_aAccessibleChildren[i], UNO_QUERY );
728cdf0e10cSrcweir if ( xComponent.is() )
729cdf0e10cSrcweir xComponent->dispose();
730cdf0e10cSrcweir }
731cdf0e10cSrcweir m_aAccessibleChildren.clear();
732cdf0e10cSrcweir }
733cdf0e10cSrcweir }
734cdf0e10cSrcweir
735cdf0e10cSrcweir // -----------------------------------------------------------------------------
736cdf0e10cSrcweir // XServiceInfo
737cdf0e10cSrcweir // -----------------------------------------------------------------------------
738cdf0e10cSrcweir
supportsService(const::rtl::OUString & rServiceName)739cdf0e10cSrcweir sal_Bool OAccessibleMenuBaseComponent::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
740cdf0e10cSrcweir {
741cdf0e10cSrcweir Sequence< ::rtl::OUString > aNames( getSupportedServiceNames() );
742cdf0e10cSrcweir const ::rtl::OUString* pNames = aNames.getConstArray();
743cdf0e10cSrcweir const ::rtl::OUString* pEnd = pNames + aNames.getLength();
744cdf0e10cSrcweir for ( ; pNames != pEnd && !pNames->equals( rServiceName ); ++pNames )
745cdf0e10cSrcweir ;
746cdf0e10cSrcweir
747cdf0e10cSrcweir return pNames != pEnd;
748cdf0e10cSrcweir }
749cdf0e10cSrcweir
750cdf0e10cSrcweir // -----------------------------------------------------------------------------
751cdf0e10cSrcweir // XAccessible
752cdf0e10cSrcweir // -----------------------------------------------------------------------------
753cdf0e10cSrcweir
getAccessibleContext()754cdf0e10cSrcweir Reference< XAccessibleContext > OAccessibleMenuBaseComponent::getAccessibleContext( ) throw (RuntimeException)
755cdf0e10cSrcweir {
756cdf0e10cSrcweir OExternalLockGuard aGuard( this );
757cdf0e10cSrcweir
758cdf0e10cSrcweir return this;
759cdf0e10cSrcweir }
760cdf0e10cSrcweir
761cdf0e10cSrcweir // -----------------------------------------------------------------------------
762cdf0e10cSrcweir // XAccessibleContext
763cdf0e10cSrcweir // -----------------------------------------------------------------------------
764cdf0e10cSrcweir
getAccessibleStateSet()765cdf0e10cSrcweir Reference< XAccessibleStateSet > OAccessibleMenuBaseComponent::getAccessibleStateSet( ) throw (RuntimeException)
766cdf0e10cSrcweir {
767cdf0e10cSrcweir OExternalLockGuard aGuard( this );
768cdf0e10cSrcweir
769cdf0e10cSrcweir utl::AccessibleStateSetHelper* pStateSetHelper = new utl::AccessibleStateSetHelper;
770cdf0e10cSrcweir Reference< XAccessibleStateSet > xSet = pStateSetHelper;
771cdf0e10cSrcweir
772cdf0e10cSrcweir if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
773cdf0e10cSrcweir {
774cdf0e10cSrcweir FillAccessibleStateSet( *pStateSetHelper );
775cdf0e10cSrcweir }
776cdf0e10cSrcweir else
777cdf0e10cSrcweir {
778cdf0e10cSrcweir pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
779cdf0e10cSrcweir }
780cdf0e10cSrcweir
781cdf0e10cSrcweir return xSet;
782cdf0e10cSrcweir }
783cdf0e10cSrcweir
784cdf0e10cSrcweir // -----------------------------------------------------------------------------
785*21075d77SSteve Yin
IsMenuHideDisabledEntries()786*21075d77SSteve Yin sal_Bool OAccessibleMenuBaseComponent::IsMenuHideDisabledEntries()
787*21075d77SSteve Yin {
788*21075d77SSteve Yin return sal_False;
789*21075d77SSteve Yin }
790*21075d77SSteve Yin
791