LibreOffice Module svx (master)  1
svxrectctaccessiblecontext.cxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
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/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
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 .
18  */
19 
21 #include <com/sun/star/accessibility/AccessibleRole.hpp>
22 #include <com/sun/star/accessibility/AccessibleEventId.hpp>
24 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
25 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
27 #include <vcl/svapp.hxx>
28 #include <osl/mutex.hxx>
29 #include <tools/debug.hxx>
30 #include <tools/gen.hxx>
31 #include <sal/log.hxx>
32 #include <vcl/settings.hxx>
33 #include <svx/strings.hrc>
34 #include <svx/dlgctrl.hxx>
35 #include <svx/dialmgr.hxx>
36 #include <com/sun/star/accessibility/AccessibleRelationType.hpp>
38 
39 using namespace ::cppu;
40 using namespace ::osl;
41 using namespace ::com::sun::star;
42 using namespace ::com::sun::star::uno;
43 using namespace ::com::sun::star::accessibility;
44 
45 using namespace ::com::sun::star::lang;
46 
47 #define MAX_NUM_OF_CHILDREN 9
48 #define NOCHILDSELECTED -1
49 
50 // internal
51 namespace
52 {
53  struct ChildIndexToPointData
54  {
55  const char* pResIdName;
56  const char* pResIdDescr;
57  RectPoint const ePoint;
58  };
59 }
60 
61 
62 static const ChildIndexToPointData* IndexToPoint( long nIndex )
63 {
64  DBG_ASSERT( nIndex < 9 && nIndex >= 0, "-IndexToPoint(): invalid child index! You have been warned..." );
65 
66  // corners are counted from left to right and top to bottom
67  static const ChildIndexToPointData pCornerData[] =
68  { // index
69  { RID_SVXSTR_RECTCTL_ACC_CHLD_LT, RID_SVXSTR_RECTCTL_ACC_CHLD_LT, RectPoint::LT }, // 0
70  { RID_SVXSTR_RECTCTL_ACC_CHLD_MT, RID_SVXSTR_RECTCTL_ACC_CHLD_MT, RectPoint::MT }, // 1
71  { RID_SVXSTR_RECTCTL_ACC_CHLD_RT, RID_SVXSTR_RECTCTL_ACC_CHLD_RT, RectPoint::RT }, // 2
72  { RID_SVXSTR_RECTCTL_ACC_CHLD_LM, RID_SVXSTR_RECTCTL_ACC_CHLD_LM, RectPoint::LM }, // 3
73  { RID_SVXSTR_RECTCTL_ACC_CHLD_MM, RID_SVXSTR_RECTCTL_ACC_CHLD_MM, RectPoint::MM }, // 4
74  { RID_SVXSTR_RECTCTL_ACC_CHLD_RM, RID_SVXSTR_RECTCTL_ACC_CHLD_RM, RectPoint::RM }, // 5
75  { RID_SVXSTR_RECTCTL_ACC_CHLD_LB, RID_SVXSTR_RECTCTL_ACC_CHLD_LB, RectPoint::LB }, // 6
76  { RID_SVXSTR_RECTCTL_ACC_CHLD_MB, RID_SVXSTR_RECTCTL_ACC_CHLD_MB, RectPoint::MB }, // 7
77  { RID_SVXSTR_RECTCTL_ACC_CHLD_RB, RID_SVXSTR_RECTCTL_ACC_CHLD_RB, RectPoint::RB } // 8
78  };
79 
80  return pCornerData + nIndex;
81 }
82 
83 
84 static long PointToIndex( RectPoint ePoint )
85 {
86  long nRet( static_cast<long>(ePoint) );
87  // corner control
88  // corners are counted from left to right and top to bottom
89  DBG_ASSERT( int(RectPoint::LT) == 0 && int(RectPoint::MT) == 1 && int(RectPoint::RT) == 2 && int(RectPoint::LM) == 3 && int(RectPoint::MM) == 4 && int(RectPoint::RM) == 5 &&
90  int(RectPoint::LB) == 6 && int(RectPoint::MB) == 7 && int(RectPoint::RB) == 8, "*PointToIndex(): unexpected enum value!" );
91 
92  nRet = static_cast<long>(ePoint);
93 
94  return nRet;
95 }
96 
98  : mpRepr(pRepr)
99  , mnSelectedChild(NOCHILDSELECTED)
100 {
101  {
102  ::SolarMutexGuard aSolarGuard;
103  msName = SvxResId( RID_SVXSTR_RECTCTL_ACC_CORN_NAME );
104  msDescription = SvxResId( RID_SVXSTR_RECTCTL_ACC_CORN_DESCR );
105  }
106 
108 }
109 
111 {
112  ensureDisposed();
113 }
114 
116 IMPLEMENT_FORWARD_XTYPEPROVIDER2( SvxRectCtlAccessibleContext, OAccessibleSelectionHelper, OAccessibleHelper_Base )
117 
118 Reference< XAccessible > SAL_CALL SvxRectCtlAccessibleContext::getAccessibleAtPoint( const awt::Point& rPoint )
119 {
120  ::osl::MutexGuard aGuard( m_aMutex );
121 
122  Reference< XAccessible > xRet;
123 
124  long nChild = mpRepr ? PointToIndex(mpRepr->GetApproxRPFromPixPt(rPoint)) : NOCHILDSELECTED;
125 
126  if (nChild != NOCHILDSELECTED)
127  xRet = getAccessibleChild( nChild );
128 
129  return xRet;
130 }
131 
132 // XAccessibleContext
134 {
135  ::osl::MutexGuard aGuard( m_aMutex );
136 
138 }
139 
140 Reference< XAccessible > SAL_CALL SvxRectCtlAccessibleContext::getAccessibleChild( sal_Int32 nIndex )
141 {
142  checkChildIndex( nIndex );
143 
144  Reference< XAccessible > xChild(mvChildren[ nIndex ].get());
145  if( !xChild.is() )
146  {
147  ::SolarMutexGuard aSolarGuard;
148 
149  ::osl::MutexGuard aGuard( m_aMutex );
150 
151  xChild = mvChildren[ nIndex ].get();
152 
153  if (!xChild.is() && mpRepr)
154  {
155  const ChildIndexToPointData* p = IndexToPoint( nIndex );
156  OUString aName(SvxResId(p->pResIdName));
157  OUString aDescr(SvxResId(p->pResIdDescr));
158 
159  tools::Rectangle aFocusRect( mpRepr->CalculateFocusRectangle( p->ePoint ) );
160 
162  aDescr, aFocusRect, nIndex );
163  mvChildren[ nIndex ] = pChild;
164  xChild = pChild;
165 
166  // set actual state
167  if( mnSelectedChild == nIndex )
168  pChild->setStateChecked( true );
169  }
170  }
171 
172  return xChild;
173 }
174 
175 Reference< XAccessible > SAL_CALL SvxRectCtlAccessibleContext::getAccessibleParent()
176 {
177  ::osl::MutexGuard aGuard( m_aMutex );
178  if (mpRepr)
179  return mpRepr->getAccessibleParent();
180  return uno::Reference<css::accessibility::XAccessible>();
181 }
182 
184 {
185  return AccessibleRole::PANEL;
186 }
187 
189 {
190  ::osl::MutexGuard aGuard( m_aMutex );
191  return msDescription + " Please use arrow key to selection.";
192 }
193 
195 {
196  ::osl::MutexGuard aGuard( m_aMutex );
197  return msName;
198 }
199 
203 Reference< XAccessibleRelationSet > SAL_CALL SvxRectCtlAccessibleContext::getAccessibleRelationSet()
204 {
205  ::osl::MutexGuard aGuard( m_aMutex );
206  if (mpRepr)
208  return uno::Reference<css::accessibility::XAccessibleRelationSet>();
209 }
210 
211 Reference< XAccessibleStateSet > SAL_CALL SvxRectCtlAccessibleContext::getAccessibleStateSet()
212 {
213  ::osl::MutexGuard aGuard( m_aMutex );
215 
216  if (mpRepr)
217  {
218  pStateSetHelper->AddState( AccessibleStateType::ENABLED );
219  pStateSetHelper->AddState( AccessibleStateType::FOCUSABLE );
220  if( mpRepr->HasFocus() )
221  pStateSetHelper->AddState( AccessibleStateType::FOCUSED );
222  pStateSetHelper->AddState( AccessibleStateType::OPAQUE );
223 
224  pStateSetHelper->AddState( AccessibleStateType::SHOWING );
225 
226  if( mpRepr->IsVisible() )
227  pStateSetHelper->AddState( AccessibleStateType::VISIBLE );
228  }
229  else
230  pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
231 
232  return pStateSetHelper;
233 }
234 
236 {
237  ::SolarMutexGuard aSolarGuard;
238  ::osl::MutexGuard aGuard( m_aMutex );
239 
240  if (mpRepr)
241  mpRepr->GrabFocus();
242 }
243 
245 {
246  ::SolarMutexGuard aSolarGuard;
247  ::osl::MutexGuard aGuard( m_aMutex );
248 
249  //see SvxRectCtl::Paint
251  return sal_Int32(rStyles.GetLabelTextColor());
252 }
253 
255 {
256  ::SolarMutexGuard aSolarGuard;
257  ::osl::MutexGuard aGuard( m_aMutex );
258 
259  //see SvxRectCtl::Paint
261  return sal_Int32(rStyles.GetDialogColor());
262 }
263 
264 // XAccessibleSelection
265 void SvxRectCtlAccessibleContext::implSelect(sal_Int32 nIndex, bool bSelect)
266 {
267  ::SolarMutexGuard aSolarGuard;
268 
269  ::osl::MutexGuard aGuard( m_aMutex );
270 
271  checkChildIndex( nIndex );
272 
273  const ChildIndexToPointData* pData = IndexToPoint( nIndex );
274 
275  DBG_ASSERT(pData, "SvxRectCtlAccessibleContext::selectAccessibleChild(): this is an impossible state! Or at least should be...");
276 
277  if (mpRepr)
278  {
279  if (bSelect)
280  {
281  // this does all what is needed, including the change of the child's state!
282  mpRepr->SetActualRP( pData->ePoint );
283  }
284  else
285  {
286  SAL_WARN( "svx", "SvxRectCtlAccessibleContext::clearAccessibleSelection() is not possible!" );
287  }
288  }
289 }
290 
292 {
293  ::osl::MutexGuard aGuard( m_aMutex );
294 
295  checkChildIndex( nIndex );
296 
297  return nIndex == mnSelectedChild;
298 }
299 
300 // internals
302 {
303  if( nIndex < 0 || nIndex >= getAccessibleChildCount() )
304  throw lang::IndexOutOfBoundsException();
305 }
306 
308 {
309  ::osl::MutexGuard aGuard( m_aMutex );
310  long nNew = PointToIndex( eButton );
311  long nNumOfChildren = getAccessibleChildCount();
312  if( nNew < nNumOfChildren )
313  {
314  // select new child
315  mnSelectedChild = nNew;
316  if( nNew != NOCHILDSELECTED )
317  {
318  if( mvChildren[ nNew ].is() )
319  mvChildren[ nNew ]->FireFocusEvent();
320  }
321  else
322  {
323  Any aOld;
324  Any aNew;
325  aNew <<= AccessibleStateType::FOCUSED;
326  NotifyAccessibleEvent(AccessibleEventId::STATE_CHANGED, aOld, aNew);
327  }
328  }
329  else
331 }
332 
334 {
335  ::osl::MutexGuard aGuard( m_aMutex );
336  if( nNew != mnSelectedChild )
337  {
338  long nNumOfChildren = getAccessibleChildCount();
339  if( nNew < nNumOfChildren )
340  { // valid index
343  { // deselect old selected child if one is selected
344  pChild = mvChildren[ mnSelectedChild ].get();
345  if( pChild )
346  pChild->setStateChecked( false );
347  }
348 
349  // select new child
350  mnSelectedChild = nNew;
351 
352  if( nNew != NOCHILDSELECTED )
353  {
354  if( mvChildren[ nNew ].is() )
355  mvChildren[ nNew ]->setStateChecked( true );
356  }
357  }
358  else
360  }
361 }
362 
364 {
365  // no guard -> is done in next selectChild
366  selectChild(PointToIndex( eButton ));
367 }
368 
370 {
371  ::osl::MutexGuard aGuard(m_aMutex);
372  OAccessibleSelectionHelper::disposing();
373  for (auto & rxChild : mvChildren)
374  {
375  if( rxChild.is() )
376  rxChild->dispose();
377  }
378  mvChildren.clear();
379  mpRepr = nullptr;
380 }
381 
383 {
384  ::SolarMutexGuard aSolarGuard;
385  ::osl::MutexGuard aGuard( m_aMutex );
386 
387  awt::Rectangle aRet;
388 
389  if (mpRepr)
390  {
391  const Point aOutPos;
392  Size aOutSize(mpRepr->GetOutputSizePixel());
393 
394  aRet.X = aOutPos.X();
395  aRet.Y = aOutPos.Y();
396  aRet.Width = aOutSize.Width();
397  aRet.Height = aOutSize.Height();
398  }
399 
400  return aRet;
401 }
402 
404  const Reference<XAccessible>& rxParent,
405  const OUString& rName,
406  const OUString& rDescription,
407  const tools::Rectangle& rBoundingBox,
408  long nIndexInParent )
409  : msDescription( rDescription )
410  , msName( rName )
411  , mxParent(rxParent)
412  , maBoundingBox( rBoundingBox )
413  , mnIndexInParent( nIndexInParent )
414  , mbIsChecked( false )
415 {
416 }
417 
419 {
420  ensureDisposed();
421 }
422 
423 Reference< XAccessible > SAL_CALL SvxRectCtlChildAccessibleContext::getAccessibleAtPoint( const awt::Point& /*rPoint*/ )
424 {
425  return Reference< XAccessible >();
426 }
427 
429 {
430 }
431 
433 {
434  ::SolarMutexGuard aSolarGuard;
435  ::osl::MutexGuard aGuard( m_aMutex );
436 
437  //see SvxRectCtl::Paint
439  return sal_Int32(rStyles.GetLabelTextColor());
440 }
441 
443 {
444  ::SolarMutexGuard aSolarGuard;
445  ::osl::MutexGuard aGuard( m_aMutex );
446 
447  //see SvxRectCtl::Paint
449  return sal_Int32(rStyles.GetDialogColor());
450 }
451 
452 // XAccessibleContext
454 {
455  return 0;
456 }
457 
458 Reference< XAccessible > SAL_CALL SvxRectCtlChildAccessibleContext::getAccessibleChild( sal_Int32 /*nIndex*/ )
459 {
460  throw lang::IndexOutOfBoundsException();
461 }
462 
463 Reference< XAccessible > SAL_CALL SvxRectCtlChildAccessibleContext::getAccessibleParent()
464 {
465  return mxParent;
466 }
467 
469 {
470  return AccessibleRole::RADIO_BUTTON;
471 }
472 
474 {
475  ::osl::MutexGuard aGuard( m_aMutex );
476  return msDescription;
477 }
478 
480 {
481  ::osl::MutexGuard aGuard( m_aMutex );
482  return msName;
483 }
484 
488 Reference<XAccessibleRelationSet> SAL_CALL SvxRectCtlChildAccessibleContext::getAccessibleRelationSet()
489 {
491  uno::Reference< css::accessibility::XAccessibleRelationSet > xSet = pRelationSetHelper;
492  if( mxParent.is() )
493  {
494  uno::Sequence< uno::Reference< uno::XInterface > > aSequence { mxParent };
495  pRelationSetHelper->AddRelation( css::accessibility::AccessibleRelation( css::accessibility::AccessibleRelationType::MEMBER_OF, aSequence ) );
496 
497  }
498 
499  return xSet;
500 }
501 
502 Reference< XAccessibleStateSet > SAL_CALL SvxRectCtlChildAccessibleContext::getAccessibleStateSet()
503 {
504  ::osl::MutexGuard aGuard( m_aMutex );
506 
507  if (!rBHelper.bDisposed)
508  {
509  if( mbIsChecked )
510  {
511  pStateSetHelper->AddState( AccessibleStateType::CHECKED );
512  }
513 
514  pStateSetHelper->AddState( AccessibleStateType::ENABLED );
515  pStateSetHelper->AddState( AccessibleStateType::SENSITIVE );
516  pStateSetHelper->AddState( AccessibleStateType::OPAQUE );
517  pStateSetHelper->AddState( AccessibleStateType::SELECTABLE );
518  pStateSetHelper->AddState( AccessibleStateType::SHOWING );
519  pStateSetHelper->AddState( AccessibleStateType::VISIBLE );
520  }
521  else
522  pStateSetHelper->AddState( AccessibleStateType::DEFUNC );
523 
524  return pStateSetHelper;
525 }
526 
527 // XAccessibleValue
529 {
530  Any aRet;
531  aRet <<= ( mbIsChecked? 1.0 : 0.0 );
532  return aRet;
533 }
534 
536 {
537  return false;
538 }
539 
541 {
542  Any aRet;
543  aRet <<= 1.0;
544  return aRet;
545 }
546 
548 {
549  Any aRet;
550  aRet <<= 0.0;
551  return aRet;
552 }
553 
554 
555 // XAccessibleAction
556 
557 
559 {
560  return 1;
561 }
562 
563 
565 {
566  ::osl::MutexGuard aGuard( m_aMutex );
567 
568  if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
569  throw IndexOutOfBoundsException();
570 
571  Reference<XAccessibleSelection> xSelection( mxParent, UNO_QUERY);
572 
573  xSelection->selectAccessibleChild(mnIndexInParent);
574 
575  return true;
576 }
577 
578 
580 {
581  ::osl::MutexGuard aGuard( m_aMutex );
582 
583  if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
584  throw IndexOutOfBoundsException();
585 
586  return "select";
587 }
588 
589 
590 Reference< XAccessibleKeyBinding > SvxRectCtlChildAccessibleContext::getAccessibleActionKeyBinding( sal_Int32 nIndex )
591 {
592  ::osl::MutexGuard aGuard( m_aMutex );
593 
594  if ( nIndex < 0 || nIndex >= getAccessibleActionCount() )
595  throw IndexOutOfBoundsException();
596 
597  return Reference< XAccessibleKeyBinding >();
598 }
599 
601 {
602  OAccessibleComponentHelper::disposing();
603  mxParent.clear();
604 }
605 
607 {
608  // no guard necessary, because no one changes maBoundingBox after creating it
609  return AWTRectangle(maBoundingBox);
610 }
611 
613 {
614  if( mbIsChecked != bChecked )
615  {
616  mbIsChecked = bChecked;
617 
618  Any aOld;
619  Any aNew;
620  Any& rMod = bChecked? aNew : aOld;
621 
622  //Send the STATE_CHANGED(Focused) event to accessible
623  rMod <<= AccessibleStateType::FOCUSED;
624  NotifyAccessibleEvent(AccessibleEventId::STATE_CHANGED, aOld, aNew);
625 
626  rMod <<= AccessibleStateType::CHECKED;
627 
628  NotifyAccessibleEvent(AccessibleEventId::STATE_CHANGED, aOld, aNew);
629  }
630 }
631 
633 {
634  Any aOld;
635  Any aNew;
636  aNew <<= AccessibleStateType::FOCUSED;
637  NotifyAccessibleEvent(AccessibleEventId::STATE_CHANGED, aOld, aNew);
638 }
639 
641 IMPLEMENT_FORWARD_XTYPEPROVIDER2( SvxRectCtlChildAccessibleContext, OAccessibleComponentHelper, OAccessibleHelper_Base_3 )
642 
643 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
IMPLEMENT_FORWARD_XINTERFACE2(ChildWindowPane, ChildWindowPaneInterfaceBase, Pane)
void SetActualRP(RectPoint eNewRP)
Definition: dlgctrl.cxx:498
const Color & GetDialogColor() const
osl::Mutex m_aMutex
OUString msName
Name of this object.
OUString msDescription
Description of this object.
virtual OUString SAL_CALL getAccessibleName() override
std::unique_ptr< ContentProperties > pData
static const sal_uInt8 NO_CHILDREN
Definition: dlgctrl.hxx:125
virtual sal_Bool SAL_CALL setCurrentValue(const css::uno::Any &aNumber) override
virtual sal_Int32 SAL_CALL getAccessibleChildCount() override
virtual css::uno::Any SAL_CALL getMinimumValue() override
virtual void SAL_CALL disposing() override
const StyleSettings & GetStyleSettings() const
WeakReference< XInterface > mxParent
static const AllSettings & GetSettings()
OUString msName
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int32 nIndex) override
static long PointToIndex(RectPoint ePoint)
virtual css::uno::Reference< css::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding(sal_Int32 nIndex) override
const Color & GetLabelTextColor() const
virtual sal_Bool SAL_CALL doAccessibleAction(sal_Int32 nIndex) override
virtual bool implIsSelected(sal_Int32 nAccessibleChildIndex) override
SvxRectCtlChildAccessibleContext(const css::uno::Reference< css::accessibility::XAccessible > &rxParent, const OUString &rName, const OUString &rDescription, const tools::Rectangle &rBoundingBox, long nIndexInParent)
a11yrelationset get_accessible_relation_set() const
Definition: dlgctrl.hxx:132
Size const & GetOutputSizePixel() const
virtual sal_Int32 SAL_CALL getForeground() override
virtual OUString SAL_CALL getAccessibleActionDescription(sal_Int32 nIndex) override
virtual sal_Int16 SAL_CALL getAccessibleRole() override
#define MAX_NUM_OF_CHILDREN
OUString SvxResId(const char *pId)
Definition: dialmgr.cxx:28
virtual css::uno::Any SAL_CALL getCurrentValue() override
#define NOCHILDSELECTED
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int32 nIndex) override
std::vector< rtl::Reference< SvxRectCtlChildAccessibleContext > > mvChildren
array for all possible children
static const ChildIndexToPointData * IndexToPoint(long nIndex)
virtual OUString SAL_CALL getAccessibleDescription() override
void AddRelation(const css::accessibility::AccessibleRelation &rRelation)
virtual sal_Int32 SAL_CALL getAccessibleChildCount() override
virtual void SAL_CALL grabFocus() override
virtual void implSelect(sal_Int32 nAccessibleChildIndex, bool bSelect) override
long mnSelectedChild
actual selected child
RectPoint
Definition: rectenum.hxx:22
virtual void SAL_CALL disposing() override
virtual css::uno::Any SAL_CALL getMaximumValue() override
#define DBG_ASSERT(sCon, aError)
virtual void SAL_CALL grabFocus() override
OUString const msName
Name of this object.
unsigned char sal_Bool
virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet() override
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
Return empty reference to indicate that the relation set is not supported.
virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet() override
tools::Rectangle const maBoundingBox
Bounding box.
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &rPoint) override
SvxRectCtlAccessibleContext(SvxRectCtl *pRepresentation)
css::uno::Reference< css::accessibility::XAccessible > getAccessibleParent() const
Definition: dlgctrl.hxx:130
void selectChild(RectPoint ePoint)
Selects a new child by point.
bool mbIsChecked
Indicates, if object is checked.
long X() const
virtual css::awt::Rectangle implGetBounds() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
OUString const msDescription
Description of this object.
tools::Rectangle CalculateFocusRectangle() const
Definition: dlgctrl.cxx:529
OUString aName
css::uno::Reference< css::accessibility::XAccessible > mxParent
Reference to the parent object.
SvxRectCtl * mpRepr
pointer to internal representation
void * p
virtual OUString SAL_CALL getAccessibleName() override
virtual sal_Int32 SAL_CALL getForeground() override
long const mnIndexInParent
index of child in parent
virtual sal_Int32 SAL_CALL getBackground() override
#define SAL_WARN(area, stream)
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
Return empty reference to indicate that the relation set is not supported.
virtual sal_Int32 SAL_CALL getBackground() override
virtual css::awt::Rectangle implGetBounds() override
implements the calculation of the bounding rectangle
void setStateChecked(bool bChecked)
Sets the checked status.
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
void AddState(sal_Int16 aState)
virtual OUString SAL_CALL getAccessibleDescription() override
css::awt::Rectangle AWTRectangle(const ::tools::Rectangle &rVCLRect)
long Y() const
virtual sal_Int16 SAL_CALL getAccessibleRole() override
virtual sal_Int32 SAL_CALL getAccessibleActionCount() override
void NotifyAccessibleEvent(const sal_Int16 _nEventId, const css::uno::Any &_rOldValue, const css::uno::Any &_rNewValue)