Branch libreoffice-5-0-4
[LibreOffice.git] / accessibility / source / helper / acc_factory.cxx
blobef67482170a3cd9ae3d64ceb6f981b591641db07
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <config_features.h>
22 #include <toolkit/awt/vclxwindows.hxx>
23 #include <toolkit/helper/accessiblefactory.hxx>
24 #include <svtools/accessiblefactory.hxx>
25 #include <accessibility/standard/vclxaccessiblebutton.hxx>
26 #include <accessibility/standard/vclxaccessiblecheckbox.hxx>
27 #include <accessibility/standard/vclxaccessibledropdowncombobox.hxx>
28 #include <accessibility/standard/vclxaccessiblecombobox.hxx>
29 #include <accessibility/standard/vclxaccessibledropdownlistbox.hxx>
30 #include <accessibility/standard/vclxaccessibleedit.hxx>
31 #include <accessibility/standard/vclxaccessiblefixedhyperlink.hxx>
32 #include <accessibility/standard/vclxaccessiblefixedtext.hxx>
33 #include <accessibility/standard/vclxaccessiblelistbox.hxx>
34 #include <accessibility/standard/vclxaccessiblemenu.hxx>
35 #include <accessibility/standard/vclxaccessibleradiobutton.hxx>
36 #include <accessibility/standard/vclxaccessiblescrollbar.hxx>
37 #include <accessibility/standard/vclxaccessibletextcomponent.hxx>
38 #include <accessibility/standard/vclxaccessibletoolbox.hxx>
39 #include <toolkit/awt/vclxaccessiblecomponent.hxx>
40 #include <accessibility/standard/vclxaccessiblestatusbar.hxx>
41 #include <accessibility/standard/vclxaccessibletabcontrol.hxx>
42 #include <accessibility/standard/vclxaccessibletabpagewindow.hxx>
43 #include <accessibility/standard/vclxaccessiblemenubar.hxx>
44 #include <accessibility/standard/vclxaccessiblepopupmenu.hxx>
45 #include <accessibility/extended/accessibletablistbox.hxx>
46 #include <accessibility/extended/AccessibleBrowseBox.hxx>
47 #include <accessibility/extended/accessibleiconchoicectrl.hxx>
48 #include <accessibility/extended/accessibletabbar.hxx>
49 #include <accessibility/extended/accessiblelistbox.hxx>
50 #include <accessibility/extended/AccessibleBrowseBoxHeaderBar.hxx>
51 #include <accessibility/extended/textwindowaccessibility.hxx>
52 #include <accessibility/extended/AccessibleBrowseBoxTableCell.hxx>
53 #include <accessibility/extended/AccessibleBrowseBoxHeaderCell.hxx>
54 #include <accessibility/extended/AccessibleBrowseBoxCheckBoxCell.hxx>
55 #include <accessibility/extended/accessibleeditbrowseboxcell.hxx>
56 #include <accessibility/extended/AccessibleToolPanelDeck.hxx>
57 #include <accessibility/extended/AccessibleToolPanelDeckTabBar.hxx>
58 #include <accessibility/extended/AccessibleToolPanelDeckTabBarItem.hxx>
59 #include <vcl/lstbox.hxx>
60 #include <vcl/combobox.hxx>
61 #include <accessibility/extended/AccessibleGridControl.hxx>
62 #include <svtools/accessibletable.hxx>
63 #include <vcl/popupmenuwindow.hxx>
64 #include <cppuhelper/implbase1.hxx>
66 #include "floatingwindowaccessible.hxx"
68 using namespace ::accessibility;
69 using namespace ::com::sun::star::uno;
70 using namespace ::com::sun::star::awt;
71 using namespace ::com::sun::star::accessibility;
72 using namespace ::svt;
73 using namespace ::svt::table;
75 namespace {
77 inline bool hasFloatingChild(vcl::Window *pWindow)
79 vcl::Window * pChild = pWindow->GetAccessibleChildWindow(0);
80 if( pChild && WINDOW_FLOATINGWINDOW == pChild->GetType() )
81 return true;
83 return false;
86 // IAccessibleFactory
87 class AccessibleFactory :public ::toolkit::IAccessibleFactory
88 ,public ::svt::IAccessibleFactory
90 public:
91 AccessibleFactory();
93 // ::toolkit::IAccessibleFactory
94 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
95 createAccessibleContext( VCLXButton* _pXWindow ) SAL_OVERRIDE;
96 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
97 createAccessibleContext( VCLXCheckBox* _pXWindow ) SAL_OVERRIDE;
98 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
99 createAccessibleContext( VCLXRadioButton* _pXWindow ) SAL_OVERRIDE;
100 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
101 createAccessibleContext( VCLXListBox* _pXWindow ) SAL_OVERRIDE;
102 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
103 createAccessibleContext( VCLXFixedText* _pXWindow ) SAL_OVERRIDE;
104 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
105 createAccessibleContext( VCLXFixedHyperlink* _pXWindow ) SAL_OVERRIDE;
106 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
107 createAccessibleContext( VCLXScrollBar* _pXWindow ) SAL_OVERRIDE;
108 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
109 createAccessibleContext( VCLXEdit* _pXWindow ) SAL_OVERRIDE;
110 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
111 createAccessibleContext( VCLXComboBox* _pXWindow ) SAL_OVERRIDE;
112 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
113 createAccessibleContext( VCLXToolBox* _pXWindow ) SAL_OVERRIDE;
114 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
115 createAccessibleContext( VCLXWindow* _pXWindow ) SAL_OVERRIDE;
116 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
117 createAccessible( Menu* _pMenu, bool _bIsMenuBar ) SAL_OVERRIDE;
119 // ::svt::IAccessibleFactory
120 virtual IAccessibleTabListBox*
121 createAccessibleTabListBox(
122 const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxParent,
123 SvHeaderTabListBox& rBox
124 ) const SAL_OVERRIDE;
126 virtual IAccessibleBrowseBox*
127 createAccessibleBrowseBox(
128 const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
129 IAccessibleTableProvider& _rBrowseBox
130 ) const SAL_OVERRIDE;
132 virtual IAccessibleTableControl*
133 createAccessibleTableControl(
134 const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
135 IAccessibleTable& _rTable
136 ) const SAL_OVERRIDE;
138 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
139 createAccessibleIconChoiceCtrl(
140 SvtIconChoiceCtrl& _rIconCtrl,
141 const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xParent
142 ) const SAL_OVERRIDE;
144 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
145 createAccessibleTabBar(
146 TabBar& _rTabBar
147 ) const SAL_OVERRIDE;
149 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
150 createAccessibleTextWindowContext(
151 VCLXWindow* pVclXWindow, TextEngine& rEngine, TextView& rView
152 ) const SAL_OVERRIDE;
154 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
155 createAccessibleTreeListBox(
156 SvTreeListBox& _rListBox,
157 const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xParent
158 ) const SAL_OVERRIDE;
160 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
161 createAccessibleBrowseBoxHeaderBar(
162 const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxParent,
163 IAccessibleTableProvider& _rOwningTable,
164 AccessibleBrowseBoxObjType _eObjType
165 ) const SAL_OVERRIDE;
167 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
168 createAccessibleBrowseBoxTableCell(
169 const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
170 IAccessibleTableProvider& _rBrowseBox,
171 const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
172 sal_Int32 _nRowId,
173 sal_uInt16 _nColId,
174 sal_Int32 _nOffset
175 ) const SAL_OVERRIDE;
177 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
178 createAccessibleBrowseBoxHeaderCell(
179 sal_Int32 _nColumnRowId,
180 const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& rxParent,
181 IAccessibleTableProvider& _rBrowseBox,
182 const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
183 AccessibleBrowseBoxObjType _eObjType
184 ) const SAL_OVERRIDE;
186 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
187 createAccessibleCheckBoxCell(
188 const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _rxParent,
189 IAccessibleTableProvider& _rBrowseBox,
190 const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _xFocusWindow,
191 sal_Int32 _nRowPos,
192 sal_uInt16 _nColPos,
193 const TriState& _eState,
194 bool _bIsTriState
195 ) const SAL_OVERRIDE;
197 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >
198 createEditBrowseBoxTableCellAccess(
199 const ::com::sun::star::uno::Reference< com::sun::star::accessibility::XAccessible >& _rxParent,
200 const ::com::sun::star::uno::Reference< com::sun::star::accessibility::XAccessible >& _rxControlAccessible,
201 const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindow >& _rxFocusWindow,
202 IAccessibleTableProvider& _rBrowseBox,
203 sal_Int32 _nRowPos,
204 sal_uInt16 _nColPos
205 ) const SAL_OVERRIDE;
207 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
208 createAccessibleToolPanelDeck(
209 const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& i_rAccessibleParent,
210 ::svt::ToolPanelDeck& i_rPanelDeck
211 ) SAL_OVERRIDE;
212 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext >
213 createAccessibleToolPanelTabBar(
214 const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& i_rAccessibleParent,
215 ::svt::IToolPanelDeck& i_rPanelDeck,
216 ::svt::PanelTabBar& i_rTabBar
217 ) SAL_OVERRIDE;
219 protected:
220 virtual ~AccessibleFactory();
223 AccessibleFactory::AccessibleFactory()
227 AccessibleFactory::~AccessibleFactory()
231 Reference< XAccessible > AccessibleFactory::createAccessible( Menu* _pMenu, bool _bIsMenuBar )
233 OAccessibleMenuBaseComponent* pAccessible;
234 if ( _bIsMenuBar )
235 pAccessible = new VCLXAccessibleMenuBar( _pMenu );
236 else
237 pAccessible = new VCLXAccessiblePopupMenu( _pMenu );
238 pAccessible->SetStates();
239 return pAccessible;
242 Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXButton* _pXWindow )
244 return new VCLXAccessibleButton( _pXWindow );
247 Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXCheckBox* _pXWindow )
249 return new VCLXAccessibleCheckBox( _pXWindow );
252 Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXRadioButton* _pXWindow )
254 return new VCLXAccessibleRadioButton( _pXWindow );
257 Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXListBox* _pXWindow )
259 bool bIsDropDownBox = false;
260 VclPtr< ListBox > pBox = _pXWindow->GetAs< ListBox >();
261 if ( pBox )
262 bIsDropDownBox = ( ( pBox->GetStyle() & WB_DROPDOWN ) == WB_DROPDOWN );
264 if ( bIsDropDownBox )
265 return new VCLXAccessibleDropDownListBox( _pXWindow );
266 else
267 return new VCLXAccessibleListBox( _pXWindow );
270 Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXFixedText* _pXWindow )
272 return new VCLXAccessibleFixedText( _pXWindow );
275 Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXFixedHyperlink* _pXWindow )
277 return new VCLXAccessibleFixedHyperlink( _pXWindow );
280 Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXScrollBar* _pXWindow )
282 return new VCLXAccessibleScrollBar( _pXWindow );
285 Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXEdit* _pXWindow )
287 return new VCLXAccessibleEdit( _pXWindow );
290 Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXComboBox* _pXWindow )
292 bool bIsDropDownBox = false;
293 VclPtr< ComboBox > pBox = _pXWindow->GetAs< ComboBox >();
294 if ( pBox )
295 bIsDropDownBox = ( ( pBox->GetStyle() & WB_DROPDOWN ) == WB_DROPDOWN );
297 if ( bIsDropDownBox )
298 return new VCLXAccessibleDropDownComboBox( _pXWindow );
299 else
300 return new VCLXAccessibleComboBox( _pXWindow );
303 Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXWindow* _pXWindow )
305 Reference< XAccessibleContext > xContext;
307 vcl::Window* pWindow = _pXWindow->GetWindow();
308 if ( pWindow )
310 WindowType nType = pWindow->GetType();
312 if ( nType == WINDOW_MENUBARWINDOW || pWindow->IsMenuFloatingWindow() || pWindow->IsToolbarFloatingWindow() )
314 Reference< XAccessible > xAcc( pWindow->GetAccessible() );
315 if ( xAcc.is() )
317 Reference< XAccessibleContext > xCont( xAcc->getAccessibleContext() );
318 if ( pWindow->GetType() == WINDOW_MENUBARWINDOW ||
319 ( xCont.is() && xCont->getAccessibleRole() == AccessibleRole::POPUP_MENU ) )
321 xContext = xCont;
326 else if ( nType == WINDOW_STATUSBAR )
328 xContext = (XAccessibleContext*) new VCLXAccessibleStatusBar( _pXWindow );
331 else if ( nType == WINDOW_TABCONTROL )
333 xContext = (XAccessibleContext*) new VCLXAccessibleTabControl( _pXWindow );
336 else if ( nType == WINDOW_TABPAGE && pWindow->GetAccessibleParentWindow() && pWindow->GetAccessibleParentWindow()->GetType() == WINDOW_TABCONTROL )
338 xContext = new VCLXAccessibleTabPageWindow( _pXWindow );
341 else if ( nType == WINDOW_FLOATINGWINDOW )
343 xContext = new FloatingWindowAccessible( _pXWindow );
346 else if ( nType == WINDOW_BORDERWINDOW && hasFloatingChild( pWindow ) )
348 // The logic here has to match that of Window::GetAccessibleParentWindow in
349 // vcl/source/window/window.cxx to avoid PopupMenuFloatingWindow
350 // becoming a11y parents of themselves
351 vcl::Window* pChild = pWindow->GetAccessibleChildWindow(0);
352 if (PopupMenuFloatingWindow::isPopupMenu(pChild))
354 // Get the accessible context from the child window.
355 Reference<XAccessible> xAccessible = pChild->CreateAccessible();
356 if (xAccessible.is())
357 xContext = xAccessible->getAccessibleContext();
359 else
360 xContext = new FloatingWindowAccessible( _pXWindow );
363 else if ( ( nType == WINDOW_HELPTEXTWINDOW ) || ( nType == WINDOW_FIXEDLINE ) )
365 xContext = (XAccessibleContext*) new VCLXAccessibleFixedText( _pXWindow );
367 else
369 xContext = (XAccessibleContext*) new VCLXAccessibleComponent( _pXWindow );
372 return xContext;
375 Reference< XAccessibleContext > AccessibleFactory::createAccessibleContext( VCLXToolBox* _pXWindow )
377 return new VCLXAccessibleToolBox( _pXWindow );
380 IAccessibleTabListBox* AccessibleFactory::createAccessibleTabListBox(
381 const Reference< XAccessible >& rxParent, SvHeaderTabListBox& rBox ) const
383 return new AccessibleTabListBox( rxParent, rBox );
386 IAccessibleBrowseBox* AccessibleFactory::createAccessibleBrowseBox(
387 const Reference< XAccessible >& _rxParent, IAccessibleTableProvider& _rBrowseBox ) const
389 return new AccessibleBrowseBoxAccess( _rxParent, _rBrowseBox );
392 IAccessibleTableControl* AccessibleFactory::createAccessibleTableControl(
393 const Reference< XAccessible >& _rxParent, IAccessibleTable& _rTable ) const
395 return new AccessibleGridControlAccess( _rxParent, _rTable );
398 Reference< XAccessible > AccessibleFactory::createAccessibleIconChoiceCtrl(
399 SvtIconChoiceCtrl& _rIconCtrl, const Reference< XAccessible >& _xParent ) const
401 return new AccessibleIconChoiceCtrl( _rIconCtrl, _xParent );
404 Reference< XAccessible > AccessibleFactory::createAccessibleTabBar( TabBar& _rTabBar ) const
406 return new AccessibleTabBar( &_rTabBar );
409 Reference< XAccessibleContext > AccessibleFactory::createAccessibleTextWindowContext(
410 VCLXWindow* pVclXWindow, TextEngine& rEngine, TextView& rView ) const
412 return new Document( pVclXWindow, rEngine, rView );
415 Reference< XAccessible > AccessibleFactory::createAccessibleTreeListBox(
416 SvTreeListBox& _rListBox, const Reference< XAccessible >& _xParent ) const
418 return new AccessibleListBox( _rListBox, _xParent );
421 Reference< XAccessible > AccessibleFactory::createAccessibleBrowseBoxHeaderBar(
422 const Reference< XAccessible >& rxParent, IAccessibleTableProvider& _rOwningTable,
423 AccessibleBrowseBoxObjType _eObjType ) const
425 return new AccessibleBrowseBoxHeaderBar( rxParent, _rOwningTable, _eObjType );
428 Reference< XAccessible > AccessibleFactory::createAccessibleBrowseBoxTableCell(
429 const Reference< XAccessible >& _rxParent, IAccessibleTableProvider& _rBrowseBox,
430 const Reference< XWindow >& _xFocusWindow, sal_Int32 _nRowId, sal_uInt16 _nColId, sal_Int32 _nOffset ) const
432 return new AccessibleBrowseBoxTableCell( _rxParent, _rBrowseBox, _xFocusWindow,
433 _nRowId, _nColId, _nOffset );
436 Reference< XAccessible > AccessibleFactory::createAccessibleBrowseBoxHeaderCell(
437 sal_Int32 _nColumnRowId, const Reference< XAccessible >& rxParent, IAccessibleTableProvider& _rBrowseBox,
438 const Reference< XWindow >& _xFocusWindow, AccessibleBrowseBoxObjType _eObjType ) const
440 return new AccessibleBrowseBoxHeaderCell( _nColumnRowId, rxParent, _rBrowseBox,
441 _xFocusWindow, _eObjType );
444 Reference< XAccessible > AccessibleFactory::createAccessibleCheckBoxCell(
445 const Reference< XAccessible >& _rxParent, IAccessibleTableProvider& _rBrowseBox,
446 const Reference< XWindow >& _xFocusWindow, sal_Int32 _nRowPos, sal_uInt16 _nColPos,
447 const TriState& _eState, bool _bIsTriState ) const
449 return new AccessibleCheckBoxCell( _rxParent, _rBrowseBox, _xFocusWindow,
450 _nRowPos, _nColPos, _eState, _bIsTriState );
453 Reference< XAccessible > AccessibleFactory::createEditBrowseBoxTableCellAccess(
454 const Reference< XAccessible >& _rxParent, const Reference< XAccessible >& _rxControlAccessible,
455 const Reference< XWindow >& _rxFocusWindow, IAccessibleTableProvider& _rBrowseBox,
456 sal_Int32 _nRowPos, sal_uInt16 _nColPos ) const
458 return new EditBrowseBoxTableCellAccess( _rxParent, _rxControlAccessible,
459 _rxFocusWindow, _rBrowseBox, _nRowPos, _nColPos );
462 Reference< XAccessibleContext > AccessibleFactory::createAccessibleToolPanelDeck(
463 const Reference< XAccessible >& i_rAccessibleParent, ::svt::ToolPanelDeck& i_rPanelDeck )
465 return new AccessibleToolPanelDeck( i_rAccessibleParent, i_rPanelDeck );
468 Reference< XAccessibleContext > AccessibleFactory::createAccessibleToolPanelTabBar(
469 const Reference< XAccessible >& i_rAccessibleParent, ::svt::IToolPanelDeck& i_rPanelDeck, ::svt::PanelTabBar& i_rTabBar )
471 return new AccessibleToolPanelTabBar( i_rAccessibleParent, i_rPanelDeck, i_rTabBar );
474 } // anonymous namespace
476 #if HAVE_FEATURE_DESKTOP
477 /* this is the entry point to retrieve a factory for the toolkit-level Accessible/Contexts supplied
478 by this library
480 This function implements the factory function needed in toolkit
481 (of type GetStandardAccComponentFactory).
483 extern "C"
485 SAL_DLLPUBLIC_EXPORT void* SAL_CALL getStandardAccessibleFactory()
487 ::toolkit::IAccessibleFactory* pFactory = new AccessibleFactory;
488 pFactory->acquire();
489 return pFactory;
493 /** this is the entry point to retrieve a factory for the svtools-level Accessible/Contexts supplied
494 by this library
496 This function implements the factory function needed in svtools
497 (of type GetSvtAccessibilityComponentFactory).
499 extern "C"
501 SAL_DLLPUBLIC_EXPORT void* SAL_CALL getSvtAccessibilityComponentFactory()
503 ::svt::IAccessibleFactory* pFactory = new AccessibleFactory;
504 pFactory->acquire();
505 return pFactory;
508 #endif // HAVE_FEATURE_DESKTOP
510 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */