LibreOffice Module sc (master) 1
AccessiblePreviewTable.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 <scitems.hxx>
24#include <prevwsh.hxx>
25#include <prevloc.hxx>
26#include <attrib.hxx>
27#include <document.hxx>
28#include <scresid.hxx>
29#include <strings.hrc>
30#include <strings.hxx>
31
32#include <com/sun/star/accessibility/AccessibleRole.hpp>
33#include <com/sun/star/accessibility/AccessibleStateType.hpp>
34#include <com/sun/star/accessibility/AccessibleEventId.hpp>
35#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
36
37#include <vcl/window.hxx>
38#include <vcl/svapp.hxx>
39#include <svl/hint.hxx>
41
42using namespace ::com::sun::star;
43using namespace ::com::sun::star::accessibility;
44
45//===== internal ============================================================
46
47ScAccessiblePreviewTable::ScAccessiblePreviewTable( const css::uno::Reference<css::accessibility::XAccessible>& rxParent,
48 ScPreviewShell* pViewShell, sal_Int32 nIndex ) :
49 ScAccessibleContextBase( rxParent, AccessibleRole::TABLE ),
50 mpViewShell( pViewShell ),
52{
53 if (mpViewShell)
55}
56
58{
59 if (!ScAccessibleContextBase::IsDefunc() && !rBHelper.bInDispose)
60 {
61 // increment refcount to prevent double call off dtor
62 osl_atomic_increment( &m_refCount );
63 dispose();
64 }
65}
66
68{
69 SolarMutexGuard aGuard;
70 if (mpViewShell)
71 {
73 mpViewShell = nullptr;
74 }
75
76 mpTableInfo.reset();
77
79}
80
81//===== SfxListener =====================================================
82
84{
85 const SfxHintId nId = rHint.GetId();
86 if ( nId == SfxHintId::DataChanged )
87 {
88 // column / row layout may change with any document change,
89 // so it must be invalidated
90 mpTableInfo.reset();
91 }
92 else if (nId == SfxHintId::ScAccVisAreaChanged)
93 {
94 AccessibleEventObject aEvent;
95 aEvent.EventId = AccessibleEventId::VISIBLE_DATA_CHANGED;
96 aEvent.Source = uno::Reference< XAccessibleContext >(this);
98 }
99
101}
102
103//===== XInterface =====================================================
104
106{
108 return aAny.hasValue() ? aAny : ScAccessibleContextBase::queryInterface(rType);
109}
110
112 noexcept
113{
114 ScAccessibleContextBase::acquire();
115}
116
118 noexcept
119{
120 ScAccessibleContextBase::release();
121}
122
123//===== XAccessibleTable ================================================
124
126{
127 SolarMutexGuard aGuard;
129
131
132 sal_Int32 nRet = 0;
133 if ( mpTableInfo )
134 nRet = mpTableInfo->GetRows();
135 return nRet;
136}
137
139{
140 SolarMutexGuard aGuard;
142
144
145 sal_Int32 nRet = 0;
146 if ( mpTableInfo )
147 nRet = mpTableInfo->GetCols();
148 return nRet;
149}
150
152{
153 SolarMutexGuard aGuard;
155 if ( nRow < 0 || (mpTableInfo && nRow >= mpTableInfo->GetRows()) )
156 throw lang::IndexOutOfBoundsException();
157
158 return OUString();
159}
160
162{
163 SolarMutexGuard aGuard;
165 if ( nColumn < 0 || (mpTableInfo && nColumn >= mpTableInfo->GetCols()) )
166 throw lang::IndexOutOfBoundsException();
167
168 return OUString();
169}
170
171sal_Int32 SAL_CALL ScAccessiblePreviewTable::getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn )
172{
173 SolarMutexGuard aGuard;
175
177
178 sal_Int32 nRows = 1;
179 if ( !mpViewShell || !mpTableInfo || nColumn < 0 || nRow < 0 ||
180 nColumn >= mpTableInfo->GetCols() || nRow >= mpTableInfo->GetRows() )
181 throw lang::IndexOutOfBoundsException();
182
183 const ScPreviewColRowInfo& rColInfo = mpTableInfo->GetColInfo()[nColumn];
184 const ScPreviewColRowInfo& rRowInfo = mpTableInfo->GetRowInfo()[nRow];
185
186 if ( rColInfo.bIsHeader || rRowInfo.bIsHeader )
187 {
188 // header cells only span a single cell
189 }
190 else
191 {
193 const ScMergeAttr* pItem = rDoc.GetAttr(
194 static_cast<SCCOL>(rColInfo.nDocIndex), static_cast<SCROW>(rRowInfo.nDocIndex), mpTableInfo->GetTab(), ATTR_MERGE );
195 if ( pItem && pItem->GetRowMerge() > 0 )
196 nRows = pItem->GetRowMerge();
197 }
198
199 return nRows;
200}
201
202sal_Int32 SAL_CALL ScAccessiblePreviewTable::getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn )
203{
204 SolarMutexGuard aGuard;
206
208
209 sal_Int32 nColumns = 1;
210 if ( !mpViewShell || !mpTableInfo || nColumn < 0 || nRow < 0 ||
211 nColumn >= mpTableInfo->GetCols() || nRow >= mpTableInfo->GetRows() )
212 throw lang::IndexOutOfBoundsException();
213
214 const ScPreviewColRowInfo& rColInfo = mpTableInfo->GetColInfo()[nColumn];
215 const ScPreviewColRowInfo& rRowInfo = mpTableInfo->GetRowInfo()[nRow];
216
217 if ( rColInfo.bIsHeader || rRowInfo.bIsHeader )
218 {
219 // header cells only span a single cell
220 }
221 else
222 {
224 const ScMergeAttr* pItem = rDoc.GetAttr(
225 static_cast<SCCOL>(rColInfo.nDocIndex), static_cast<SCROW>(rRowInfo.nDocIndex), mpTableInfo->GetTab(), ATTR_MERGE );
226 if ( pItem && pItem->GetColMerge() > 0 )
227 nColumns = pItem->GetColMerge();
228 }
229
230 return nColumns;
231}
232
233uno::Reference< XAccessibleTable > SAL_CALL ScAccessiblePreviewTable::getAccessibleRowHeaders()
234{
236 return nullptr;
237}
238
239uno::Reference< XAccessibleTable > SAL_CALL ScAccessiblePreviewTable::getAccessibleColumnHeaders()
240{
242 return nullptr;
243}
244
245uno::Sequence< sal_Int32 > SAL_CALL ScAccessiblePreviewTable::getSelectedAccessibleRows()
246{
247 // in the page preview, there is no selection
248 return {};
249}
250
252{
253 // in the page preview, there is no selection
254 return {};
255}
256
258{
259 // in the page preview, there is no selection
260
261 SolarMutexGuard aGuard;
263 if ( nRow < 0 || (mpTableInfo && nRow >= mpTableInfo->GetRows()) )
264 throw lang::IndexOutOfBoundsException();
265
266 return false;
267}
268
270{
271 // in the page preview, there is no selection
272
273 SolarMutexGuard aGuard;
275 if ( nColumn < 0 || (mpTableInfo && nColumn >= mpTableInfo->GetCols()) )
276 throw lang::IndexOutOfBoundsException();
277
278 return false;
279}
280
281uno::Reference< XAccessible > SAL_CALL ScAccessiblePreviewTable::getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn )
282{
283 SolarMutexGuard aGuard;
285
287
288 uno::Reference<XAccessible> xRet;
289 if ( mpTableInfo && nColumn >= 0 && nRow >= 0 && nColumn < mpTableInfo->GetCols() && nRow < mpTableInfo->GetRows() )
290 {
291 // index iterates horizontally
292 tools::Long nNewIndex = nRow * mpTableInfo->GetCols() + nColumn;
293
294 const ScPreviewColRowInfo& rColInfo = mpTableInfo->GetColInfo()[nColumn];
295 const ScPreviewColRowInfo& rRowInfo = mpTableInfo->GetRowInfo()[nRow];
296
297 ScAddress aCellPos( static_cast<SCCOL>(rColInfo.nDocIndex), static_cast<SCROW>(rRowInfo.nDocIndex), mpTableInfo->GetTab() );
298 if ( rColInfo.bIsHeader || rRowInfo.bIsHeader )
299 {
300 const bool bRotatedColHeader = rRowInfo.bIsHeader;
301 const bool bRotatedRowHeader = rColInfo.bIsHeader;
303 bRotatedColHeader, bRotatedRowHeader, nNewIndex));
304 xRet = pHeaderCell.get();
305 pHeaderCell->Init();
306 }
307 else
308 {
309 rtl::Reference<ScAccessiblePreviewCell> pCell(new ScAccessiblePreviewCell( this, mpViewShell, aCellPos, nNewIndex ));
310 xRet = pCell.get();
311 pCell->Init();
312 }
313 }
314
315 if ( !xRet.is() )
316 throw lang::IndexOutOfBoundsException();
317
318 return xRet;
319}
320
321uno::Reference< XAccessible > SAL_CALL ScAccessiblePreviewTable::getAccessibleCaption()
322{
324 return nullptr;
325}
326
327uno::Reference< XAccessible > SAL_CALL ScAccessiblePreviewTable::getAccessibleSummary()
328{
330 return nullptr;
331}
332
333sal_Bool SAL_CALL ScAccessiblePreviewTable::isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn )
334{
335 // in the page preview, there is no selection
336 SolarMutexGuard aGuard;
338
340
341 if ( !mpTableInfo || nColumn < 0 || nRow < 0 || nColumn >= mpTableInfo->GetCols() || nRow >= mpTableInfo->GetRows() )
342 throw lang::IndexOutOfBoundsException();
343
344 // index iterates horizontally
345 return false;
346}
347
348sal_Int64 SAL_CALL ScAccessiblePreviewTable::getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn )
349{
350 SolarMutexGuard aGuard;
352
354
355 if ( !mpTableInfo || nColumn < 0 || nRow < 0 || nColumn >= mpTableInfo->GetCols() || nRow >= mpTableInfo->GetRows() )
356 throw lang::IndexOutOfBoundsException();
357
358 // index iterates horizontally
359 sal_Int64 nRet = static_cast<sal_Int64>(nRow) * static_cast<sal_Int64>(mpTableInfo->GetCols()) + nColumn;
360 return nRet;
361}
362
363sal_Int32 SAL_CALL ScAccessiblePreviewTable::getAccessibleRow( sal_Int64 nChildIndex )
364{
365 SolarMutexGuard aGuard;
367
369
370 if ( !mpTableInfo || nChildIndex < 0 || nChildIndex >= static_cast<sal_Int64>(mpTableInfo->GetRows()) * mpTableInfo->GetCols() )
371 throw lang::IndexOutOfBoundsException();
372
373 sal_Int32 nRow = nChildIndex / mpTableInfo->GetCols();
374 return nRow;
375}
376
377sal_Int32 SAL_CALL ScAccessiblePreviewTable::getAccessibleColumn( sal_Int64 nChildIndex )
378{
379 SolarMutexGuard aGuard;
381
383
384 if ( !mpTableInfo || nChildIndex < 0 || nChildIndex >= static_cast<sal_Int64>(mpTableInfo->GetRows()) * mpTableInfo->GetCols() )
385 throw lang::IndexOutOfBoundsException();
386
387 sal_Int32 nCol = nChildIndex % static_cast<sal_Int32>(mpTableInfo->GetCols());
388 return nCol;
389}
390
391//===== XAccessibleComponent ============================================
392
393uno::Reference< XAccessible > SAL_CALL ScAccessiblePreviewTable::getAccessibleAtPoint( const awt::Point& aPoint )
394{
395 uno::Reference<XAccessible> xRet;
396 if (containsPoint(aPoint))
397 {
398 SolarMutexGuard aGuard;
400
402
403 if ( mpTableInfo )
404 {
405 SCCOL nCols = mpTableInfo->GetCols();
406 SCROW nRows = mpTableInfo->GetRows();
407 const ScPreviewColRowInfo* pColInfo = mpTableInfo->GetColInfo();
408 const ScPreviewColRowInfo* pRowInfo = mpTableInfo->GetRowInfo();
409
410 tools::Rectangle aScreenRect(GetBoundingBox());
411
412 awt::Point aMovedPoint = aPoint;
413 aMovedPoint.X += aScreenRect.Left();
414 aMovedPoint.Y += aScreenRect.Top();
415
416 if ( nCols > 0 && nRows > 0 && aMovedPoint.X >= pColInfo[0].nPixelStart && aMovedPoint.Y >= pRowInfo[0].nPixelStart )
417 {
418 SCCOL nColIndex = 0;
419 while ( nColIndex < nCols && aMovedPoint.X > pColInfo[nColIndex].nPixelEnd )
420 ++nColIndex;
421 SCROW nRowIndex = 0;
422 while ( nRowIndex < nRows && aMovedPoint.Y > pRowInfo[nRowIndex].nPixelEnd )
423 ++nRowIndex;
424 if ( nColIndex < nCols && nRowIndex < nRows )
425 {
426 try
427 {
428 xRet = getAccessibleCellAt( nRowIndex, nColIndex );
429 }
430 catch (uno::Exception&)
431 {
432 }
433 }
434 }
435 }
436 }
437
438 return xRet;
439}
440
442{
443 SolarMutexGuard aGuard;
445 if (getAccessibleParent().is())
446 {
447 uno::Reference<XAccessibleComponent> xAccessibleComponent(getAccessibleParent()->getAccessibleContext(), uno::UNO_QUERY);
448 if (xAccessibleComponent.is())
449 xAccessibleComponent->grabFocus();
450 }
451}
452
453//===== XAccessibleContext ==============================================
454
456{
457 SolarMutexGuard aGuard;
459
461
462 tools::Long nRet = 0;
463 if ( mpTableInfo )
464 nRet = static_cast<sal_Int64>(mpTableInfo->GetCols()) * mpTableInfo->GetRows();
465 return nRet;
466}
467
468uno::Reference< XAccessible > SAL_CALL ScAccessiblePreviewTable::getAccessibleChild( sal_Int64 nIndex )
469{
470 SolarMutexGuard aGuard;
472
474
475 uno::Reference<XAccessible> xRet;
476 if ( mpTableInfo )
477 {
478 sal_Int32 nColumns = mpTableInfo->GetCols();
479 if ( nColumns > 0 )
480 {
481 // nCol, nRow are within the visible table, not the document
482 sal_Int32 nCol = nIndex % nColumns;
483 sal_Int64 nRow = nIndex / nColumns;
484 assert(nRow <= std::numeric_limits<sal_Int32>::max());
485 xRet = getAccessibleCellAt( nRow, nCol );
486 }
487 }
488
489 if ( !xRet.is() )
490 throw lang::IndexOutOfBoundsException();
491
492 return xRet;
493}
494
496{
497 return mnIndex;
498}
499
501{
502 SolarMutexGuard aGuard;
503 sal_Int64 nParentStates = 0;
504 if (getAccessibleParent().is())
505 {
506 uno::Reference<XAccessibleContext> xParentContext = getAccessibleParent()->getAccessibleContext();
507 nParentStates = xParentContext->getAccessibleStateSet();
508 }
509 sal_Int64 nStateSet = 0;
510 if (IsDefunc(nParentStates))
511 nStateSet |= AccessibleStateType::DEFUNC;
512 else
513 {
514 nStateSet |= AccessibleStateType::MANAGES_DESCENDANTS;
515 nStateSet |= AccessibleStateType::ENABLED;
516 nStateSet |= AccessibleStateType::OPAQUE;
517 if (isShowing())
518 nStateSet |= AccessibleStateType::SHOWING;
519 if (isVisible())
520 nStateSet |= AccessibleStateType::VISIBLE;
521 }
522 return nStateSet;
523}
524
525//===== XServiceInfo ====================================================
526
528{
529 return "ScAccessiblePreviewTable";
530}
531
533{
534 uno::Sequence< OUString > aSequence = ScAccessibleContextBase::getSupportedServiceNames();
535 sal_Int32 nOldSize(aSequence.getLength());
536 aSequence.realloc(nOldSize + 1);
537
538 aSequence.getArray()[nOldSize] = "com.sun.star.table.AccessibleTableView";
539
540 return aSequence;
541}
542
543//===== XTypeProvider ===================================================
544
545uno::Sequence< uno::Type > SAL_CALL ScAccessiblePreviewTable::getTypes()
546{
547 return comphelper::concatSequences(ScAccessiblePreviewTableImpl::getTypes(), ScAccessibleContextBase::getTypes());
548}
549
550uno::Sequence<sal_Int8> SAL_CALL ScAccessiblePreviewTable::getImplementationId()
551{
552 return css::uno::Sequence<sal_Int8>();
553}
554
555//==== internal =========================================================
556
558{
559 return STR_ACC_TABLE_DESCR;
560}
561
563{
564 OUString sName(ScResId(STR_ACC_TABLE_NAME));
565
566 if (mpViewShell)
567 {
569
570 if ( mpTableInfo )
571 {
572 OUString sCoreName;
573 if (mpViewShell->GetDocument().GetName( mpTableInfo->GetTab(), sCoreName ))
574 sName = sName.replaceFirst("%1", sCoreName);
575 }
576 }
577
578 return sName;
579}
580
582{
583 tools::Rectangle aCellRect(GetBoundingBox());
584 if (mpViewShell)
585 {
586 vcl::Window* pWindow = mpViewShell->GetWindow();
587 if (pWindow)
588 {
590 aCellRect.Move(aRect.Left(), aRect.Top());
591 }
592 }
593 return aCellRect;
594}
595
597{
599
600 tools::Rectangle aRect;
601 if ( mpTableInfo )
602 {
603 SCCOL nColumns = mpTableInfo->GetCols();
604 SCROW nRows = mpTableInfo->GetRows();
605 if ( nColumns > 0 && nRows > 0 )
606 {
607 const ScPreviewColRowInfo* pColInfo = mpTableInfo->GetColInfo();
608 const ScPreviewColRowInfo* pRowInfo = mpTableInfo->GetRowInfo();
609
610 aRect = tools::Rectangle( pColInfo[0].nPixelStart,
611 pRowInfo[0].nPixelStart,
612 pColInfo[nColumns-1].nPixelEnd,
613 pRowInfo[nRows-1].nPixelEnd );
614 }
615 }
616 return aRect;
617}
618
619bool ScAccessiblePreviewTable::IsDefunc( sal_Int64 nParentStates )
620{
621 return ScAccessibleContextBase::IsDefunc() || (mpViewShell == nullptr) || !getAccessibleParent().is() ||
622 (nParentStates & AccessibleStateType::DEFUNC);
623}
624
626{
627 if ( mpViewShell && !mpTableInfo )
628 {
629 Size aOutputSize;
630 vcl::Window* pWindow = mpViewShell->GetWindow();
631 if ( pWindow )
632 aOutputSize = pWindow->GetOutputSizePixel();
633 tools::Rectangle aVisRect( Point(), aOutputSize );
634
635 mpTableInfo.reset( new ScPreviewTableInfo );
637 }
638}
639
640/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
AnyEventRef aEvent
virtual sal_Bool SAL_CALL containsPoint(const css::awt::Point &rPoint) override
===== XAccessibleComponent ============================================
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override
===== XAccessible =====================================================
virtual void SAL_CALL disposing() override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Returns a list of all supported services.
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
===== SfxListener =====================================================
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
Return a reference to the parent.
void CommitChange(const css::accessibility::AccessibleEventObject &rEvent) const
Calls all Listener to tell they the change.
virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleRowHeaders() override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Returns a list of all supported services.
virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const &rType) override
===== XInterface =====================================================
virtual OUString createAccessibleDescription() override
Return this object's description.
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &aPoint) override
virtual sal_Int64 SAL_CALL getAccessibleStateSet() override
Return the set of current states.
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
virtual sal_Int32 SAL_CALL getAccessibleRow(sal_Int64 nChildIndex) override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleSummary() override
virtual sal_Int64 SAL_CALL getAccessibleIndexInParent() override
Return this objects index among the parents children.
virtual sal_Bool SAL_CALL isAccessibleColumnSelected(sal_Int32 nColumn) override
ScAccessiblePreviewTable(const css::uno::Reference< css::accessibility::XAccessible > &rxParent, ScPreviewShell *pViewShell, sal_Int32 nIndex)
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int64 i) override
Return the specified child or NULL if index is invalid.
virtual sal_Int32 SAL_CALL getAccessibleColumnExtentAt(sal_Int32 nRow, sal_Int32 nColumn) override
std::unique_ptr< ScPreviewTableInfo > mpTableInfo
virtual tools::Rectangle GetBoundingBoxOnScreen() const override
Return the object's current bounding box relative to the desktop.
virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleColumnHeaders() override
virtual ~ScAccessiblePreviewTable() override
virtual OUString SAL_CALL getImplementationName() override
===== XServiceInfo ====================================================
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCaption() override
virtual OUString SAL_CALL getAccessibleRowDescription(sal_Int32 nRow) override
virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleColumns() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCellAt(sal_Int32 nRow, sal_Int32 nColumn) override
virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleRows() override
virtual sal_Bool SAL_CALL isAccessibleRowSelected(sal_Int32 nRow) override
virtual sal_Int64 SAL_CALL getAccessibleChildCount() override
===== XAccessibleContext ==============================================
virtual void SAL_CALL acquire() noexcept override
virtual OUString createAccessibleName() override
Return the object's current name.
virtual sal_Int32 SAL_CALL getAccessibleRowExtentAt(sal_Int32 nRow, sal_Int32 nColumn) override
virtual tools::Rectangle GetBoundingBox() const override
Return the object's current bounding box relative to the parent object.
virtual OUString SAL_CALL getAccessibleColumnDescription(sal_Int32 nColumn) override
virtual sal_Int32 SAL_CALL getAccessibleColumn(sal_Int64 nChildIndex) override
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
===== SfxListener =====================================================
virtual sal_Bool SAL_CALL isAccessibleSelected(sal_Int32 nRow, sal_Int32 nColumn) override
virtual void SAL_CALL release() noexcept override
virtual sal_Int32 SAL_CALL getAccessibleColumnCount() override
virtual void SAL_CALL grabFocus() override
virtual sal_Int64 SAL_CALL getAccessibleIndex(sal_Int32 nRow, sal_Int32 nColumn) override
virtual void SAL_CALL disposing() override
virtual sal_Int32 SAL_CALL getAccessibleRowCount() override
SC_DLLPUBLIC bool GetName(SCTAB nTab, OUString &rName) const
Definition: document.cxx:204
SC_DLLPUBLIC const SfxPoolItem * GetAttr(SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt16 nWhich) const
Definition: document.cxx:4684
SCCOL GetColMerge() const
Definition: attrib.hxx:71
SCROW GetRowMerge() const
Definition: attrib.hxx:72
void GetTableInfo(const tools::Rectangle &rVisiblePixel, ScPreviewTableInfo &rInfo) const
Definition: prevloc.cxx:443
const ScPreviewLocationData & GetLocationData()
Definition: prevwsh.cxx:1171
void AddAccessibilityObject(SfxListener &rObject)
Definition: prevwsh.cxx:1142
ScDocument & GetDocument()
Definition: prevwsh.cxx:1176
void RemoveAccessibilityObject(SfxListener &rObject)
Definition: prevwsh.cxx:1150
SfxHintId GetId() const
vcl::Window * GetWindow() const
virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const &rType) SAL_OVERRIDE
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() SAL_OVERRIDE
constexpr tools::Long Top() const
void Move(tools::Long nHorzMoveDelta, tools::Long nVertMoveDelta)
constexpr tools::Long Left() const
tools::Rectangle GetWindowExtentsAbsolute() const
Size GetOutputSizePixel() const
ULONG m_refCount
OUString sName
SfxHintId
sal_Int32 nIndex
css::uno::Sequence< T > concatSequences(const css::uno::Sequence< T > &rS1, const Ss &... rSn)
void dispose()
long Long
sal_Int16 nId
OUString ScResId(TranslateId aId)
Definition: scdll.cxx:90
constexpr TypedWhichId< ScMergeAttr > ATTR_MERGE(144)
constexpr OUStringLiteral STR_ACC_TABLE_DESCR
Definition: strings.hxx:17
SCCOLROW nDocIndex
Definition: prevloc.hxx:46
tools::Long nPixelStart
Definition: prevloc.hxx:47
bool hasValue()
sal_uInt32 mnIndex
unsigned char sal_Bool
sal_Int16 SCCOL
Definition: types.hxx:21
sal_Int32 SCROW
Definition: types.hxx:17
@ TABLE
Definition: xmldpimp.hxx:43