LibreOffice Module sc (master)  1
AccessibleEditObject.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 
20 #include <sal/config.h>
21 
22 #include <memory>
23 #include <utility>
24 
25 #include <AccessibleEditObject.hxx>
26 #include <AccessibleText.hxx>
27 #include <editsrc.hxx>
28 #include <scmod.hxx>
29 #include <inputhdl.hxx>
30 
32 #include <com/sun/star/accessibility/AccessibleRole.hpp>
33 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
34 #include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
35 #include <com/sun/star/sheet/XSpreadsheet.hpp>
36 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
38 #include <editeng/editview.hxx>
39 #include <editeng/editeng.hxx>
40 #include <svx/svdmodel.hxx>
41 #include <vcl/svapp.hxx>
42 #include <vcl/window.hxx>
43 #include <sfx2/objsh.hxx>
45 
46 #include <unonames.hxx>
47 #include <document.hxx>
48 #include <AccessibleDocument.hxx>
49 #include <com/sun/star/accessibility/AccessibleRelationType.hpp>
51 #include <com/sun/star/accessibility/XAccessibleText.hpp>
52 
53 using ::com::sun::star::lang::IndexOutOfBoundsException;
54 using namespace ::com::sun::star;
55 using namespace ::com::sun::star::accessibility;
56 
57 //===== internal ============================================================
58 
60  const uno::Reference<XAccessible>& rxParent,
61  EditView* pEditView, vcl::Window* pWin, const OUString& rName,
62  const OUString& rDescription, EditObjectType eObjectType)
63  : ScAccessibleContextBase(rxParent, AccessibleRole::TEXT_FRAME)
64  , mpEditView(pEditView)
65  , mpWindow(pWin)
66  , mpTextWnd(nullptr)
67  , meObjectType(eObjectType)
68  , mbHasFocus(false)
69  , m_pScDoc(nullptr)
70 {
71  InitAcc(rxParent, pEditView, pWin, nullptr, rName, rDescription);
72 }
73 
75  : ScAccessibleContextBase(nullptr, AccessibleRole::TEXT_FRAME)
76  , mpEditView(nullptr)
77  , mpWindow(nullptr)
78  , mpTextWnd(nullptr)
79  , meObjectType(eObjectType)
80  , mbHasFocus(false)
81  , m_pScDoc(nullptr)
82 {
83 }
84 
86  const uno::Reference<XAccessible>& rxParent,
87  EditView* pEditView, vcl::Window* pWin,
88  ScTextWnd* pTxtWnd, const OUString& rName,
89  const OUString& rDescription)
90 {
91  SetParent(rxParent);
92  mpEditView = pEditView;
93  mpWindow = pWin;
94  mpTextWnd = pTxtWnd;
95 
97  SetName(rName);
98  SetDescription(rDescription);
100  {
101  const ScAccessibleDocument *pAccDoc = static_cast<ScAccessibleDocument*>(rxParent.get());
102  if (pAccDoc)
103  {
104  m_pScDoc = pAccDoc->GetDocument();
106  }
107  }
108 }
109 
111 {
112  if (!ScAccessibleContextBase::IsDefunc() && !rBHelper.bInDispose)
113  {
114  // increment refcount to prevent double call off dtor
115  osl_atomic_increment( &m_refCount );
116  // call dispose to inform object which have a weak reference to this object
117  dispose();
118  }
119 }
120 
122 {
123  SolarMutexGuard aGuard;
124  mpTextHelper.reset();
125 
127 }
128 
130 {
131  mbHasFocus = false;
132  if (mpTextHelper)
133  mpTextHelper->SetFocus(false);
134  CommitFocusLost();
135 }
136 
138 {
139  mbHasFocus = true;
141  if (mpTextHelper)
142  mpTextHelper->SetFocus();
143 }
144 
145 //===== XInterface ==========================================================
146 
147 css::uno::Any SAL_CALL
148  ScAccessibleEditObject::queryInterface (const css::uno::Type & rType)
149 {
150  css::uno::Any aReturn = ScAccessibleContextBase::queryInterface (rType);
151  if ( ! aReturn.hasValue())
152  aReturn = ::cppu::queryInterface (rType,
153  static_cast< css::accessibility::XAccessibleSelection* >(this)
154  );
155  return aReturn;
156 }
157 void SAL_CALL
159  throw ()
160 {
162 }
163 void SAL_CALL
165  throw ()
166 {
168 }
169  //===== XAccessibleComponent ============================================
170 
171 uno::Reference< XAccessible > SAL_CALL ScAccessibleEditObject::getAccessibleAtPoint(
172  const awt::Point& rPoint )
173 {
174  uno::Reference<XAccessible> xRet;
175  if (containsPoint(rPoint))
176  {
177  SolarMutexGuard aGuard;
178  IsObjectValid();
179 
181 
182  xRet = mpTextHelper->GetAt(rPoint);
183  }
184 
185  return xRet;
186 }
187 
189 {
190  tools::Rectangle aScreenBounds;
191 
192  if ( mpWindow )
193  {
194  if ( meObjectType == CellInEditMode )
195  {
196  if ( mpEditView && mpEditView->GetEditEngine() )
197  {
198  MapMode aMapMode( mpEditView->GetEditEngine()->GetRefMapMode() );
199  aScreenBounds = mpWindow->LogicToPixel( mpEditView->GetOutputArea(), aMapMode );
200  Point aCellLoc = aScreenBounds.TopLeft();
201  tools::Rectangle aWindowRect = mpWindow->GetWindowExtentsRelative( nullptr );
202  Point aWindowLoc = aWindowRect.TopLeft();
203  Point aPos( aCellLoc.getX() + aWindowLoc.getX(), aCellLoc.getY() + aWindowLoc.getY() );
204  aScreenBounds.SetPos( aPos );
205  }
206  }
207  else
208  {
209  aScreenBounds = mpWindow->GetWindowExtentsRelative( nullptr );
210  }
211  }
212 
213  return aScreenBounds;
214 }
215 
217 {
219 
220  if ( mpWindow )
221  {
222  uno::Reference< XAccessible > xThis( mpWindow->GetAccessible() );
223  if ( xThis.is() )
224  {
225  uno::Reference< XAccessibleContext > xContext( xThis->getAccessibleContext() );
226  if ( xContext.is() )
227  {
228  uno::Reference< XAccessible > xParent( xContext->getAccessibleParent() );
229  if ( xParent.is() )
230  {
231  uno::Reference< XAccessibleComponent > xParentComponent( xParent->getAccessibleContext(), uno::UNO_QUERY );
232  if ( xParentComponent.is() )
233  {
234  Point aScreenLoc = aBounds.TopLeft();
235  awt::Point aParentScreenLoc = xParentComponent->getLocationOnScreen();
236  Point aPos( aScreenLoc.getX() - aParentScreenLoc.X, aScreenLoc.getY() - aParentScreenLoc.Y );
237  aBounds.SetPos( aPos );
238  }
239  }
240  }
241  }
242  }
243 
244  return aBounds;
245 }
246 
247  //===== XAccessibleContext ==============================================
248 
249 sal_Int32 SAL_CALL
251 {
252  SolarMutexGuard aGuard;
253  IsObjectValid();
255  return mpTextHelper->GetChildCount();
256 }
257 
258 uno::Reference< XAccessible > SAL_CALL
260 {
261  SolarMutexGuard aGuard;
262  IsObjectValid();
264  return mpTextHelper->GetChild(nIndex);
265 }
266 
267 uno::Reference<XAccessibleStateSet> SAL_CALL
269 {
270  SolarMutexGuard aGuard;
271  uno::Reference<XAccessibleStateSet> xParentStates;
272  if (getAccessibleParent().is())
273  {
274  uno::Reference<XAccessibleContext> xParentContext = getAccessibleParent()->getAccessibleContext();
275  xParentStates = xParentContext->getAccessibleStateSet();
276  }
278  if (IsDefunc(xParentStates))
279  pStateSet->AddState(AccessibleStateType::DEFUNC);
280  else
281  {
282  // all states are const, because this object exists only in one state
283  pStateSet->AddState(AccessibleStateType::EDITABLE);
284  pStateSet->AddState(AccessibleStateType::ENABLED);
285  pStateSet->AddState(AccessibleStateType::SENSITIVE);
286  pStateSet->AddState(AccessibleStateType::MULTI_LINE);
287  pStateSet->AddState(AccessibleStateType::MULTI_SELECTABLE);
288  pStateSet->AddState(AccessibleStateType::SHOWING);
289  pStateSet->AddState(AccessibleStateType::VISIBLE);
290  }
291  return pStateSet;
292 }
293 
294 OUString
296 {
297 // OSL_FAIL("Should never be called, because is set in the constructor.")
298  return OUString();
299 }
300 
301 OUString
303 {
304  OSL_FAIL("Should never be called, because is set in the constructor.");
305  return OUString();
306 }
307 
309 
310 void SAL_CALL
311  ScAccessibleEditObject::addAccessibleEventListener(const uno::Reference<XAccessibleEventListener>& xListener)
312 {
314 
315  mpTextHelper->AddEventListener(xListener);
316 
318 }
319 
320 void SAL_CALL
321  ScAccessibleEditObject::removeAccessibleEventListener(const uno::Reference<XAccessibleEventListener>& xListener)
322 {
324 
325  mpTextHelper->RemoveEventListener(xListener);
326 
328 }
329 
330  //===== XServiceInfo ====================================================
331 
333 {
334  return "ScAccessibleEditObject";
335 }
336 
337 //===== XTypeProvider =======================================================
338 
339 uno::Sequence<sal_Int8> SAL_CALL
341 {
342  return css::uno::Sequence<sal_Int8>();
343 }
344 
345  //==== internal =========================================================
346 
348  const uno::Reference<XAccessibleStateSet>& rxParentStates)
349 {
351  (rxParentStates.is() && rxParentStates->contains(AccessibleStateType::DEFUNC));
352 }
353 
355 {
356  return mpWindow;
357 }
358 
360 {
361  if (mpTextHelper)
362  return;
363 
364  ::std::unique_ptr < ScAccessibleTextData > pAccessibleTextData;
366  {
367  pAccessibleTextData.reset
369  }
370  else
371  {
372  pAccessibleTextData.reset
374  }
375 
376  std::unique_ptr<ScAccessibilityEditSource> pEditSrc =
377  std::make_unique<ScAccessibilityEditSource>(std::move(pAccessibleTextData));
378 
379  mpTextHelper = std::make_unique<::accessibility::AccessibleTextHelper>(std::move(pEditSrc));
380  mpTextHelper->SetEventSource(this);
381 
382  const ScInputHandler* pInputHdl = SC_MOD()->GetInputHdl();
383  if ( pInputHdl && pInputHdl->IsEditMode() )
384  {
385  mpTextHelper->SetFocus();
386  }
387  else
388  {
389  mpTextHelper->SetFocus(mbHasFocus);
390  }
391 
392  // #i54814# activate cell in edit mode
394  {
395  // do not activate cell object, if top edit line is active
396  if( pInputHdl && !pInputHdl->IsTopMode() )
397  {
398  SdrHint aHint( SdrHintKind::BeginEdit );
399  mpTextHelper->GetEditSource().GetBroadcaster().Broadcast( aHint );
400  }
401  }
402 }
403 
405 {
407 }
408 
410 {
412 }
413 
414 sal_Int32 ScAccessibleEditObject::GetFgBgColor( const OUString &strPropColor)
415 {
416  SolarMutexGuard aGuard;
417  sal_Int32 nColor(0);
418  if (m_pScDoc)
419  {
421  if ( pObjSh )
422  {
423  uno::Reference <sheet::XSpreadsheetDocument> xSpreadDoc( pObjSh->GetModel(), uno::UNO_QUERY );
424  if ( xSpreadDoc.is() )
425  {
426  uno::Reference<sheet::XSpreadsheets> xSheets = xSpreadDoc->getSheets();
427  uno::Reference<container::XIndexAccess> xIndex( xSheets, uno::UNO_QUERY );
428  if ( xIndex.is() )
429  {
430  uno::Any aTable = xIndex->getByIndex(m_curCellAddress.Tab());
431  uno::Reference<sheet::XSpreadsheet> xTable;
432  if (aTable>>=xTable)
433  {
434  uno::Reference<table::XCell> xCell = xTable->getCellByPosition(m_curCellAddress.Col(), m_curCellAddress.Row());
435  if (xCell.is())
436  {
437  uno::Reference<beans::XPropertySet> xCellProps(xCell, uno::UNO_QUERY);
438  if (xCellProps.is())
439  {
440  uno::Any aAny = xCellProps->getPropertyValue(strPropColor);
441  aAny >>= nColor;
442  }
443  }
444  }
445  }
446  }
447  }
448  }
449  return nColor;
450 }
451 //===== XAccessibleSelection ============================================
452 
454 {
455 }
456 
458 {
459  uno::Reference<XAccessible> xAcc = getAccessibleChild( nChildIndex );
460  uno::Reference<XAccessibleContext> xContext;
461  if( xAcc.is() )
462  xContext = xAcc->getAccessibleContext();
463  if( xContext.is() )
464  {
465  if( xContext->getAccessibleRole() == AccessibleRole::PARAGRAPH )
466  {
467  uno::Reference< css::accessibility::XAccessibleText >
468  xText(xAcc, uno::UNO_QUERY);
469  if( xText.is() )
470  {
471  if( xText->getSelectionStart() >= 0 ) return true;
472  }
473  }
474  }
475  return false;
476 }
477 
479 {
480 }
481 
483 {
484 }
485 
487 {
488  sal_Int32 nCount = 0;
489  sal_Int32 TotalCount = getAccessibleChildCount();
490  for( sal_Int32 i = 0; i < TotalCount; i++ )
491  if( isAccessibleChildSelected(i) ) nCount++;
492  return nCount;
493 }
494 
495 uno::Reference<XAccessible> SAL_CALL ScAccessibleEditObject::getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex )
496 {
497  if ( nSelectedChildIndex > getSelectedAccessibleChildCount() )
498  throw IndexOutOfBoundsException();
499  sal_Int32 i1, i2;
500  for( i1 = 0, i2 = 0; i1 < getAccessibleChildCount(); i1++ )
501  if( isAccessibleChildSelected(i1) )
502  {
503  if( i2 == nSelectedChildIndex )
504  return getAccessibleChild( i1 );
505  i2++;
506  }
507  return uno::Reference<XAccessible>();
508 }
509 
511  sal_Int32 )
512 {
513 }
514 
515 uno::Reference< XAccessibleRelationSet > ScAccessibleEditObject::getAccessibleRelationSet( )
516 {
517  SolarMutexGuard aGuard;
518  vcl::Window* pWindow = mpWindow;
520  uno::Reference< XAccessibleRelationSet > rSet = rRelationSet;
521  if ( pWindow )
522  {
523  vcl::Window *pLabeledBy = pWindow->GetAccessibleRelationLabeledBy();
524  if ( pLabeledBy && pLabeledBy != pWindow )
525  {
526  uno::Sequence< uno::Reference< uno::XInterface > > aSequence { pLabeledBy->GetAccessible() };
527  rRelationSet->AddRelation( AccessibleRelation( AccessibleRelationType::LABELED_BY, aSequence ) );
528  }
529  vcl::Window* pMemberOf = pWindow->GetAccessibleRelationMemberOf();
530  if ( pMemberOf && pMemberOf != pWindow )
531  {
532  uno::Sequence< uno::Reference< uno::XInterface > > aSequence { pMemberOf->GetAccessible() };
533  rRelationSet->AddRelation( AccessibleRelation( AccessibleRelationType::MEMBER_OF, aSequence ) );
534  }
535  return rSet;
536  }
537  return uno::Reference< XAccessibleRelationSet >();
538 }
539 
541 {
542  tools::Rectangle aScreenBounds;
543 
545  {
548  }
549 
550  return aScreenBounds;
551 }
552 
554 {
556 
557  uno::Reference< XAccessibleContext > xContext(const_cast<ScAccessibleEditControlObject*>(this)->getAccessibleContext());
558  if ( xContext.is() )
559  {
560  uno::Reference< XAccessible > xParent( xContext->getAccessibleParent() );
561  if ( xParent.is() )
562  {
563  uno::Reference< XAccessibleComponent > xParentComponent( xParent->getAccessibleContext(), uno::UNO_QUERY );
564  if ( xParentComponent.is() )
565  {
566  Point aScreenLoc = aBounds.TopLeft();
567  awt::Point aParentScreenLoc = xParentComponent->getLocationOnScreen();
568  Point aPos( aScreenLoc.getX() - aParentScreenLoc.X, aScreenLoc.getY() - aParentScreenLoc.Y );
569  aBounds.SetPos( aPos );
570  }
571  }
572  }
573 
574  return aBounds;
575 }
576 
578 {
580  m_pController = nullptr;
581 }
582 
583 uno::Reference< XAccessibleRelationSet > ScAccessibleEditControlObject::getAccessibleRelationSet()
584 {
585  SolarMutexGuard aGuard;
587  return uno::Reference< XAccessibleRelationSet >();
589 }
590 
592 {
594  return nullptr;
596 }
597 
598 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Point TopLeft() const
void SetPos(const Point &rPoint)
virtual OUString createAccessibleDescription() override
Return this object's description.
SCROW Row() const
Definition: address.hxx:262
virtual void SAL_CALL deselectAccessibleChild(sal_Int32 nSelectedChildIndex) override
ScAddress GetCurCellAddress() const
virtual void SAL_CALL clearAccessibleSelection() override
MapMode const & GetRefMapMode() const
ULONG m_refCount
virtual void SAL_CALL selectAccessibleChild(sal_Int32 nChildIndex) override
void SetDescription(const OUString &rDesc)
Use this method to set initial Description without notification.
virtual Point get_accessible_location()=0
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
Return a reference to the parent.
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &rPoint) override
===== XAccessibleComponent ============================================
const tools::Rectangle & GetOutputArea() const
virtual void SAL_CALL release() override
css::uno::Reference< css::frame::XModel > GetModel() const
#define SC_UNONAME_CCOLOR
Definition: unonames.hxx:51
virtual sal_Bool SAL_CALL containsPoint(const css::awt::Point &rPoint) override
===== XAccessibleComponent ============================================
virtual a11yrelationset get_accessible_relation_set()=0
#define SC_UNONAME_CELLBACK
Definition: unonames.hxx:98
Size const & GetOutputSizePixel() const
virtual void SAL_CALL removeAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
virtual ~ScAccessibleEditObject() override
sal_Int32 GetFgBgColor(const OUString &strPropColor)
virtual void SAL_CALL release() override
css::uno::Reference< css::accessibility::XAccessible > GetAccessible(bool bCreate=true)
void SetParent(const css::uno::Reference< css::accessibility::XAccessible > &rParent)
int nCount
weld::CustomWidgetController * m_pController
SCTAB Tab() const
Definition: address.hxx:271
virtual tools::Rectangle GetBoundingBox() const override
Return the object's current bounding box relative to the parent object.
void SetName(const OUString &rName)
Use this method to set initial Name without notification.
void AddRelation(const css::accessibility::AccessibleRelation &rRelation)
virtual OutputDevice & get_ref_device()=0
tools::Rectangle GetWindowExtentsRelative(const vcl::Window *pRelativeWindow) const
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int32 nIndex) override
Return the specified child or NULL if index is invalid.
virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const &rType) override
===== XInterface =====================================================
virtual OutputDevice * GetOutputDeviceForView()
VclPtr< vcl::Window > mpWindow
virtual void SAL_CALL addAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
===== XAccessibleEventBroadcaster =====================================
virtual sal_Bool SAL_CALL isAccessibleChildSelected(sal_Int32 nChildIndex) override
int i
virtual tools::Rectangle GetBoundingBoxOnScreen() const override
Return the object's current bounding box relative to the desktop.
EditEngine * GetEditEngine() const
#define SC_MOD()
Definition: scmod.hxx:253
virtual tools::Rectangle GetBoundingBox() const override
Return the object's current bounding box relative to the parent object.
unsigned char sal_Bool
void CommitFocusGained() const
Calls all FocusListener to tell they that the focus is gained.
virtual OUString createAccessibleName() override
Return the object's current name.
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
===== XTypeProvider ===================================================
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
Return NULL to indicate that an empty relation set.
virtual void SAL_CALL acquire() override
std::unique_ptr< accessibility::AccessibleTextHelper > mpTextHelper
SCCOL Col() const
Definition: address.hxx:267
void InitAcc(const css::uno::Reference< css::accessibility::XAccessible > &rxParent, EditView *pEditView, vcl::Window *pWin, ScTextWnd *pTextWnd, const OUString &rName, const OUString &rDescription)
virtual OUString SAL_CALL getImplementationName() override
===== XServiceInfo ====================================================
vcl::Window * GetAccessibleRelationMemberOf() const
Point LogicToPixel(const Point &rLogicPt) const
virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet() override
Return the set of current states.
weld::DrawingArea * GetDrawingArea() const
virtual void SAL_CALL disposing() override
virtual OutputDevice * GetOutputDeviceForView() override
virtual void SAL_CALL acquire() override
virtual void SAL_CALL disposing() override
bool IsEditMode() const
Definition: inputhdl.hxx:186
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
Return NULL to indicate that an empty relation set.
void CommitFocusLost() const
Calls all FocusListener to tell they that the focus is lost.
virtual void SAL_CALL addAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
===== XAccessibleEventBroadcaster =====================================
VclPtr< vcl::Window > mpWindow
ScDocument * GetDocument() const
SfxObjectShell * GetDocumentShell() const
Definition: document.hxx:1058
virtual void SAL_CALL selectAllAccessibleChildren() override
virtual sal_Int32 SAL_CALL getBackground() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild(sal_Int32 nSelectedChildIndex) override
void dispose()
virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount() override
virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const &rType) override
===== XInterface =====================================================
virtual sal_Int32 SAL_CALL getForeground() override
===== XAccessibleComponent ============================================
vcl::Window * GetAccessibleRelationLabeledBy() const
virtual void SAL_CALL removeAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
void AddState(sal_Int16 aState)
bool IsTopMode() const
Definition: inputhdl.hxx:188
css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType, Interface1 *p1)
virtual tools::Rectangle GetBoundingBoxOnScreen() const override
Return the object's current bounding box relative to the desktop.
virtual sal_Int32 SAL_CALL getAccessibleChildCount() override
===== XAccessibleContext ==============================================
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override
===== XAccessible =====================================================
virtual void SAL_CALL disposing() override
ScAccessibleEditObject(const css::uno::Reference< css::accessibility::XAccessible > &rxParent, EditView *pEditView, vcl::Window *pWin, const OUString &rName, const OUString &rDescription, EditObjectType eObjectType)