24 #include <document.hxx>
33 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
34 #include <com/sun/star/accessibility/AccessibleEventId.hpp>
35 #include <com/sun/star/accessibility/AccessibleTableModelChangeType.hpp>
36 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
42 #include <strings.hrc>
50 static bool CompMinCol(
const std::pair<sal_uInt16,sal_uInt16> & pc1,
const std::pair<sal_uInt16,sal_uInt16> &pc2)
52 return pc1.first < pc2.first;
57 if (pMarkedRanges->
size() <= 1)
63 const int nCurCol = nSelectedChildIndex % nColNum;
64 const int nCurRow = (nSelectedChildIndex - nCurCol)/nColNum;
70 sal_Int32 nMinRow = pDoc->
MaxRow();
71 sal_Int32 nMaxRow = 0;
73 size_t nSize = pMarkedRanges->
size();
74 for (
size_t i = 0;
i < nSize; ++
i)
76 ScRange const & rRange = (*pMarkedRanges)[
i];
83 nMinRow = std::min(rRange.
aStart.
Row(),nMinRow);
84 nMaxRow = std::max(rRange.
aEnd.
Row(),nMaxRow);
87 SAL_WARN(
"sc",
"Range of wrong table");
92 nMinRow = std::min(rRange.
aStart.
Row(),nMinRow);
93 nMaxRow = std::max(rRange.
aEnd.
Row(),nMaxRow);
96 SAL_WARN(
"sc",
"Range of wrong table");
98 int nCurrentIndex = 0 ;
99 for(sal_Int32 row = nMinRow ; row <= nMaxRow ; ++row)
105 if ( row >= r.aStart.Row() && row <= r.aEnd.Row())
115 sal_uInt16 nCol = pairCol.second - pairCol.first + 1;
116 if (nCol + nCurrentIndex > nSelectedChildIndex)
120 nCurrentIndex += nCol;
129 std::vector<ScMyAddress> &vecRet,
int &nSize)
141 if (nCellCount + nSize > nMax)
145 else if(nCellCount > 0)
151 vecRet.emplace_back(col,row,rDest.
aStart.
Tab());
158 sal_Int32 nMaxRow = rSrc.
aEnd.
Row();
159 for (; nMinRow <= nMaxRow ; ++nMinRow,--nMaxRow)
170 vecRet.push_back(cell);
174 if (nMinRow != nMaxRow)
185 vecRet.push_back(cell);
196 int nMax, std::vector<ScMyAddress> &vecRet)
198 if (pSrc ==
nullptr || pDest ==
nullptr)
211 size_t nSrcSize = pSrc->
size();
212 for (
size_t i = 0;
i < nSrcSize; ++
i)
214 ScRange const & rRange = (*pSrc)[
i];
219 vecRet.emplace_back(col,row, rRange.
aStart.
Tab());
227 size_t nSizeSrc = pSrc->
size();
228 for (
size_t i = 0;
i < nSizeSrc; ++
i)
230 ScRange const & rRange = (*pSrc)[
i];
231 size_t nSizeDest = pDest->
size();
232 for (
size_t j = 0; j < nSizeDest; ++j)
234 ScRange const & rRangeDest = (*pDest)[j];
254 ScAccessibleTableBase( pAccDoc, GetDocument(pViewShell),
ScRange( 0, 0, nTab, GetDocument(pViewShell)->MaxCol(), GetDocument(pViewShell)->MaxRow(), nTab)),
255 mbIsSpreadsheet( true ),
256 m_bFormulaMode( false ),
257 m_bFormulaLastMode( false ),
258 m_nMinX(0),m_nMaxX(0),m_nMinY(0),m_nMaxY(0)
266 mbIsSpreadsheet( false ),
267 m_bFormulaMode( false ),
268 m_bFormulaLastMode( false ),
269 m_nMinX(0),m_nMaxX(0),m_nMinY(0),m_nMaxY(0)
331 AccessibleEventObject
aEvent;
332 aEvent.EventId = AccessibleEventId::STATE_CHANGED;
334 aEvent.NewValue <<= AccessibleStateType::SELECTED;
336 aEvent.OldValue <<= AccessibleStateType::SELECTED;
337 aEvent.Source = uno::Reference< XAccessibleContext >(
this);
344 AccessibleEventObject
aEvent;
345 aEvent.EventId = AccessibleEventId::ACTIVE_DESCENDANT_CHANGED;
346 aEvent.Source = uno::Reference< XAccessibleContext >(
this);
347 aEvent.OldValue <<= uno::Reference<XAccessible>(
mpAccCell);
357 AccessibleEventObject
aEvent;
358 aEvent.EventId = AccessibleEventId::ACTIVE_DESCENDANT_CHANGED;
359 aEvent.Source = uno::Reference< XAccessibleContext >(
this);
360 uno::Reference< XAccessible > xNew;
386 aEvent.NewValue <<= xNew;
393 AccessibleEventObject
aEvent;
394 aEvent.EventId = AccessibleEventId::BOUNDRECT_CHANGED;
395 aEvent.Source = uno::Reference< XAccessibleContext >(
this);
402 AccessibleEventObject
aEvent;
403 aEvent.EventId = AccessibleEventId::VISIBLE_DATA_CHANGED;
404 aEvent.Source = uno::Reference< XAccessibleContext >(
this);
413 if (
auto pRefHint = dynamic_cast<const ScUpdateRefHint*>(&rHint) )
415 if (pRefHint->GetMode() ==
URM_INSDEL && pRefHint->GetDz() == 0)
426 SCCOL nX(pRefHint->GetDx());
427 SCROW nY(pRefHint->GetDy());
428 ScRange aRange(pRefHint->GetRange());
429 if ((nX < 0) || (nY < 0))
431 OSL_ENSURE(!((nX < 0) && (nY < 0)),
"should not be possible to remove row and column at the same time");
432 nId = AccessibleTableModelChangeType::DELETE;
436 nY = aRange.aEnd.Row() - aRange.aStart.Row();
441 nX = aRange.aEnd.Col() - aRange.aStart.Col();
444 else if ((nX > 0) || (nY > 0))
446 OSL_ENSURE(!((nX > 0) && (nY > 0)),
"should not be possible to add row and column at the same time");
447 nId = AccessibleTableModelChangeType::INSERT;
448 nX = aRange.aEnd.Col() - aRange.aStart.Col();
452 OSL_FAIL(
"is it a deletion or an insertion?");
456 pRefHint->GetRange().aStart.Col(),
457 pRefHint->GetRange().aStart.Row() + nY,
458 pRefHint->GetRange().aStart.Col() + nX, nId);
460 AccessibleEventObject
aEvent;
461 aEvent.EventId = AccessibleEventId::ACTIVE_DESCENDANT_CHANGED;
462 aEvent.Source = uno::Reference< XAccessibleContext >(
this);
463 aEvent.NewValue <<= uno::Reference<XAccessible>(
mpAccCell);
471 if (rHint.
GetId() == SfxHintId::ScAccCursorChanged)
493 AccessibleEventObject
aEvent;
494 aEvent.Source = uno::Reference< XAccessible >(
this);
498 aEvent.EventId = AccessibleEventId::PAGE_CHANGED;
508 bool bNewPosCellFocus=
false;
511 bNewPosCellFocus=
true;
516 bool bIsMark =refScMarkData.
IsMarked();
518 bool bNewMarked = refScMarkData.
GetTableSelect(aNewCell.Tab()) && ( bIsMark || bIsMultMark );
520 sal_uInt16 nTab = rViewData.
GetTabNo();
523 aEvent.OldValue.clear();
526 if ( !bNewPosCellFocus &&
527 (bNewMarked || bIsMark || bIsMultMark ) &&
530 aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_WITHIN;
531 aEvent.NewValue.clear();
544 if ((bNewMarked || bIsMark || bIsMultMark ) && (bWholeCol || bWholeRow))
553 bool bLastIsWholeColRow =
557 bLastIsWholeColRow &&
562 aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_WITHIN;
563 aEvent.NewValue.clear();
572 bool bSendSingle= (0 == nNewMarkCount) && bNewPosCell;
580 uno::Reference< XAccessible > xChild ;
581 if (bNewPosCellFocus)
591 aEvent.EventId = AccessibleEventId::ACTIVE_DESCENDANT_CHANGED_NOFOCUS;
592 aEvent.NewValue <<= xChild;
593 aEvent.OldValue <<= uno::Reference< XAccessible >();
596 aEvent.EventId = AccessibleEventId::SELECTION_CHANGED;
597 aEvent.NewValue <<= xChild;
606 bool bIsDel = rViewData.
GetDelMark( aDelRange );
607 if ( (!bIsDel || aMarkRange != aDelRange) &&
617 std::vector<ScMyAddress> vecNew;
620 aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_WITHIN;
621 aEvent.NewValue.clear();
626 for(
const auto& rAddr : vecNew)
629 if (!(bNewPosCellFocus && rAddr == aNewCell) )
631 aEvent.EventId = AccessibleEventId::ACTIVE_DESCENDANT_CHANGED_NOFOCUS;
632 aEvent.NewValue <<= xChild;
635 aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_ADD;
636 aEvent.NewValue <<= xChild;
650 else if (rHint.
GetId() == SfxHintId::ScDataChanged)
668 AccessibleEventObject
aEvent;
669 aEvent.EventId = AccessibleEventId::VALUE_CHANGED;
677 AccessibleEventObject
aEvent;
678 aEvent.EventId = AccessibleEventId::NAME_CHANGED;
679 OUString sOldName(
ScResId(STR_ACC_TABLE_NAME));
681 aEvent.OldValue <<= sOldName;
682 OUString sNewName(
ScResId(STR_ACC_TABLE_NAME));
683 sOldName = sNewName.replaceFirst(
"%1", tabName);
684 aEvent.NewValue <<= sNewName;
717 AccessibleEventObject
aEvent;
718 aEvent.Source = uno::Reference< XAccessible >(
this);
722 if (refScMarkData.
IsCellMarked(miRemove->first.Col(),miRemove->first.Row(),
true) ||
723 refScMarkData.
IsCellMarked(miRemove->first.Col(),miRemove->first.Row()) )
728 aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_REMOVE;
729 aEvent.NewValue <<= miRemove->second;
741 AccessibleEventObject
aEvent;
742 aEvent.EventId = AccessibleEventId::ACTIVE_DESCENDANT_CHANGED;
743 aEvent.Source = uno::Reference< XAccessible >(
this);
744 aEvent.OldValue <<= uno::Reference<XAccessible>(
mpAccCell);
747 aEvent.NewValue <<= uno::Reference<XAccessible>(
mpAccCell);
763 uno::Reference< XAccessibleTable > xAccessibleTable;
768 SCROW nStart = pRowRange->aStart.Row();
769 SCROW nEnd = pRowRange->aEnd.Row();
771 if( (0 <= nStart) && (nStart <= nEnd) && (nEnd <= pDoc->MaxRow()) )
775 return xAccessibleTable;
782 uno::Reference< XAccessibleTable > xAccessibleTable;
787 SCCOL nStart = pColRange->aStart.Col();
788 SCCOL nEnd = pColRange->aEnd.Col();
790 if( (0 <= nStart) && (nStart <= nEnd) && (nEnd <= pDoc->MaxCol()) )
794 return xAccessibleTable;
801 uno::Sequence<sal_Int32> aSequence;
810 sal_Int32* pSequence = aSequence.getArray();
816 pSequence[nCount] =
i;
820 aSequence.realloc(nCount);
823 aSequence.realloc(0);
831 uno::Sequence<sal_Int32> aSequence;
836 sal_Int32* pSequence = aSequence.getArray();
843 pSequence[nCount] =
i;
847 aSequence.realloc(nCount);
861 throw lang::IndexOutOfBoundsException();
867 bResult = rMarkdata.
IsRowMarked(static_cast<SCROW>(nRow));
882 throw lang::IndexOutOfBoundsException();
928 throw lang::IndexOutOfBoundsException();
931 return pAccessibleCell;
941 ScAddress addr(static_cast<SCCOL>(nColumn), nRow, 0);
946 throw lang::IndexOutOfBoundsException();
952 bResult = rMarkdata.
IsCellMarked(static_cast<SCCOL>(nColumn), static_cast<SCROW>(nRow));
961 uno::Reference< XAccessible > xAccessible;
974 catch(
const css::lang::IndexOutOfBoundsException &)
988 if (xAccessibleComponent.is())
989 xAccessibleComponent->grabFocus();
1013 return pRelationSet;
1017 uno::Reference<XAccessibleStateSet> SAL_CALL
1021 uno::Reference<XAccessibleStateSet> xParentStates;
1024 uno::Reference<XAccessibleContext> xParentContext =
getAccessibleParent()->getAccessibleContext();
1025 xParentStates = xParentContext->getAccessibleStateSet();
1029 pStateSet->AddState(AccessibleStateType::DEFUNC);
1032 pStateSet->AddState(AccessibleStateType::MANAGES_DESCENDANTS);
1034 pStateSet->AddState(AccessibleStateType::EDITABLE);
1035 pStateSet->AddState(AccessibleStateType::ENABLED);
1036 pStateSet->AddState(AccessibleStateType::FOCUSABLE);
1038 pStateSet->AddState(AccessibleStateType::FOCUSED);
1039 pStateSet->AddState(AccessibleStateType::MULTI_SELECTABLE);
1040 pStateSet->AddState(AccessibleStateType::OPAQUE);
1041 pStateSet->AddState(AccessibleStateType::SELECTABLE);
1043 pStateSet->AddState(AccessibleStateType::SELECTED);
1045 pStateSet->AddState(AccessibleStateType::SHOWING);
1047 pStateSet->AddState(AccessibleStateType::VISIBLE);
1059 throw lang::IndexOutOfBoundsException();
1104 sal_Int32 nResult(0);
1127 uno::Reference<XAccessible > SAL_CALL
1132 uno::Reference < XAccessible > xAccessible;
1151 if ((nSelectedChildIndex < 0) ||
1154 throw lang::IndexOutOfBoundsException();
1172 throw lang::IndexOutOfBoundsException();
1268 return "ScAccessibleSpreadsheet";
1271 uno::Sequence< OUString> SAL_CALL
1274 const css::uno::Sequence<OUString> vals {
"com.sun.star.AccessibleSpreadsheet" };
1280 uno::Sequence<sal_Int8> SAL_CALL
1283 return css::uno::Sequence<sal_Int8>();
1324 const uno::Reference<XAccessibleStateSet>& rxParentStates)
1327 (rxParentStates.is() && rxParentStates->contains(AccessibleStateType::DEFUNC));
1336 bool bProtected(
false);
1344 bool bFocused(
false);
1360 bool bResult(
false);
1366 if (aMarkData.IsAllMarked(
maRange))
1465 AccessibleEventObject
aEvent;
1466 aEvent.EventId = AccessibleEventId::ACTIVE_DESCENDANT_CHANGED;
1467 aEvent.Source = uno::Reference< XAccessible >(
this);
1481 sal_uInt16 nRefEndX = rViewData.
GetRefEndX();
1490 m_nMinX =std::min(nRefStartX,nRefEndX);
1491 m_nMaxX =std::max(nRefStartX,nRefEndX);
1492 m_nMinY = std::min(nRefStartY,nRefEndY);
1493 m_nMaxY = std::max(nRefStartY,nRefEndY);
1495 AccessibleEventObject
aEvent;
1496 aEvent.Source = uno::Reference< XAccessible >(
this);
1497 aEvent.EventId = AccessibleEventId::ACTIVE_DESCENDANT_CHANGED;
1501 aEvent.NewValue <<= xNew;
1503 if (nRefStartX == nRefEndX && nRefStartY == nRefEndY)
1505 aEvent.EventId = AccessibleEventId::SELECTION_CHANGED;
1506 aEvent.NewValue <<= xNew;
1514 std::vector<ScMyAddress> vecCurSel;
1516 vecCurSel.reserve(nCurSize);
1522 vecCurSel.push_back(aAddr);
1525 std::sort(vecCurSel.begin(), vecCurSel.end());
1526 std::vector<ScMyAddress> vecNew;
1527 std::set_difference(vecCurSel.begin(),vecCurSel.end(),
1529 std::back_insert_iterator(vecNew));
1530 int nNewSize = vecNew.size();
1531 if ( nNewSize > 10 )
1533 aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_WITHIN;
1534 aEvent.NewValue.clear();
1539 for(
const auto& rAddr : vecNew)
1541 uno::Reference< XAccessible > xChild;
1542 if (rAddr == aFormulaAddr)
1544 xChild = m_pAccFormulaCell.get();
1549 aEvent.EventId = AccessibleEventId::ACTIVE_DESCENDANT_CHANGED_NOFOCUS;
1550 aEvent.NewValue <<= xChild;
1553 aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_ADD;
1554 aEvent.NewValue <<= xChild;
1567 AccessibleEventObject
aEvent;
1568 aEvent.Source = uno::Reference< XAccessible >(
this);
1577 aEvent.EventId = AccessibleEventId::SELECTION_CHANGED_REMOVE;
1578 aEvent.NewValue <<= miRemove->second;
1594 return nIndex <= nMaxIndex && nIndex >= 0 ;
1601 if (nIndex < 0 || nIndex >= nRowAll * nColAll )
1606 static_cast<SCCOL>((nIndex - nIndex % nRowAll) / nRowAll + +
m_nMinX),
1614 sal_uInt16 nColRelative = sal_uInt16(nColumn) -
GetColAll();
1615 sal_Int32 nRowRelative = nRow -
GetRowAll();
1616 if (nRow < 0 || nColumn < 0 || nRowRelative >=
GetRowAll() || nColRelative >=
GetColAll() )
1620 return GetRowAll() * nRowRelative + nColRelative;
1646 if( nRefX <= pDoc->MaxCol() && nRefY >= 0 && nRefY <= pDoc->MaxRow())
ScMarkData & GetMarkData()
void InitRefMode(SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, ScRefType eType)
void SelectAll(bool bContinue=false)
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &rPoint) override
===== XAccessibleComponent ============================================
virtual sal_Int32 SAL_CALL getAccessibleChildCount() override
Return the number of currently visible children.
SC_DLLPUBLIC const ScRange * GetRepeatColRange(SCTAB nTab)
rtl::Reference< utl::AccessibleRelationSetHelper > GetRelationSet(const ScAddress *pAddress) const
======== internal =====================================================
SC_DLLPUBLIC bool IsTabProtected(SCTAB nTab) const
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleRows() override
Returns the selected rows in a table.
void CommitFocusCell(const ScAddress &aNewCell)
virtual void SAL_CALL addAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
===== XAccessibleEventBroadcaster =====================================
void RemoveSelection(const ScMarkData &refScMarkData)
virtual void SAL_CALL clearAccessibleSelection() override
rtl::Reference< ScAccessibleCell > m_pAccFormulaCell
bool GetDelMark(ScRange &rRange) const
static rtl::Reference< ScAccessibleCell > create(const css::uno::Reference< css::accessibility::XAccessible > &rxParent, ScTabViewShell *pViewShell, const ScAddress &rCellAddress, sal_Int32 nIndex, ScSplitPos eSplitPos, ScAccessibleDocument *pAccDoc)
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
===== XAccessibleContext ==============================================
SC_DLLPUBLIC bool Intersects(const ScRange &rRange) const
void BoundingBoxChanged()
SCROW GetRefStartY() const
void AddAccessibilityObject(SfxListener &rObject)
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
===== SfxListener =====================================================
virtual sal_Bool SAL_CALL unselectColumn(sal_Int32 column) override
virtual css::uno::Reference< css::accessibility::XAccessibleTable > SAL_CALL getAccessibleColumnHeaders() override
Returns the column headers as an AccessibleTable.
void FillRangeListWithMarks(ScRangeList *pList, bool bClear, SCTAB nForTab=-1) const
Create a range list of marks.
virtual sal_Bool SAL_CALL isAccessibleSelected(sal_Int32 nRow, sal_Int32 nColumn) override
Returns a boolean value indicating whether the accessible at a specified row and column is selected...
bool GetForceFocusOnCurCell() const
virtual void SAL_CALL deselectAccessibleChild(sal_Int32 nChildIndex) override
static ScDocument * GetDocument(ScTabViewShell *pViewShell)
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
Return a reference to the parent.
ScSplitPos GetActivePart() const
ScDocument & GetDocument() const
void ConstructScAccessibleSpreadsheet(ScAccessibleDocument *pAccDoc, ScTabViewShell *pViewShell, SCTAB nTab, ScSplitPos eSplitPos)
std::vector< PAIR_COL > m_vecTempCol
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleCellAt(sal_Int32 nRow, sal_Int32 nColumn) override
Returns the Accessible at a specified row and column in the table.
size_t GetCellCount() const
virtual sal_Bool SAL_CALL containsPoint(const css::awt::Point &rPoint) override
===== XAccessibleComponent ============================================
virtual void SAL_CALL selectAccessibleChild(sal_Int32 nChildIndex) override
===== XAccessibleSelection ===========================================
bool IsCellMarked(SCCOL nCol, SCROW nRow, bool bNoSimple=false) const
bool IsCompleteSheetSelected()
ScRangeList m_LastMarkedRanges
virtual sal_Int32 SAL_CALL getAccessibleColumn(sal_Int32 nChildIndex) override
Returns the column number of an index in the table.
void FireFirstCellFocus()
void GetMarkArea(ScRange &rRange) const
void RemoveFormulaSelection(bool bRemoveAll=false)
SC_DLLPUBLIC SCROW MaxRow() const
ScAccessibleSpreadsheet(ScAccessibleDocument *pAccDoc, ScTabViewShell *pViewShell, SCTAB nTab, ScSplitPos eSplitPos)
bool IsMultiMarked() const
void SelectCell(sal_Int32 nRow, sal_Int32 nCol, bool bDeselect)
ScRange m_aLastWithInMarkRange
SC_DLLPUBLIC OUString GetString(SCCOL nCol, SCROW nRow, SCTAB nTab, const ScInterpreterContext *pContext=nullptr) const
ScAddress m_aFormulaActiveCell
virtual tools::Rectangle GetBoundingBox() const override
Return the object's current bounding box relative to the parent object.
void DoneBlockMode(bool bContinue=false)
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
===== SfxListener =====================================================
tools::Rectangle GetWindowExtentsRelative(const vcl::Window *pRelativeWindow) const
ScViewData & GetViewData()
ScGridWindow * GetActiveWin()
void SelectionChanged(bool bFromPaste=false)
void SetRefStart(SCCOL nNewX, SCROW nNewY, SCTAB nNewZ)
virtual ~ScAccessibleSpreadsheet() override
MAP_ADDR_XACC m_mapFormulaSelectionSend
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Returns a list of all supported services.
bool IsRowMarked(SCROW nRow) const
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
Returns a list of all supported services.
virtual sal_Bool SAL_CALL isAccessibleColumnSelected(sal_Int32 nColumn) override
Returns a boolean value indicating whether the specified column is selected.
std::unique_ptr< ScRangeList > mpMarkedRanges
void CommitTableModelChange(sal_Int32 nStartRow, sal_Int32 nStartCol, sal_Int32 nEndRow, sal_Int32 nEndCol, sal_uInt16 nId)
SC_DLLPUBLIC SCCOL MaxCol() const
vcl::Window * GetWindowByPos(ScSplitPos ePos) const
virtual void SAL_CALL addAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
===== XAccessibleEventBroadcaster =====================================
bool IsColumnMarked(SCCOL nCol) const
void IsObjectValid() const
std::vector< ScRange > m_vecTempRange
void GetPosFromPixel(tools::Long nClickX, tools::Long nClickY, ScSplitPos eWhich, SCCOL &rPosX, SCROW &rPosY, bool bTestMerge=true, bool bRepair=false, SCTAB nForTab=-1)
rtl::Reference< ScAccessibleCell > GetAccessibleCellAt(sal_Int32 nRow, sal_Int32 nColumn)
virtual void SAL_CALL disposing() override
ScMyAddress CalcScAddressFromRangeList(ScRangeList *pMarkedRanges, sal_Int32 nSelectedChildIndex)
virtual sal_Bool SAL_CALL isAccessibleRowSelected(sal_Int32 nRow) override
Returns a boolean value indicating whether the specified row is selected.
std::vector< ScMyAddress > m_vecFormulaLastMyAddr
SC_DLLPUBLIC void SetTabNo(SCTAB nTab, bool bNew=false, bool bExtendSelection=false, bool bSameTabButMoved=false)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
void CommitFocusGained() const
Calls all FocusListener to tell they that the focus is gained.
OUString ScResId(const char *pId)
virtual OUString SAL_CALL getImplementationName() override
===== XServiceInfo ====================================================
static bool CalcScRangeDifferenceMax(const ScRange &rSrc, const ScRange &rDest, int nMax, std::vector< ScMyAddress > &vecRet, int &nSize)
std::pair< sal_uInt16, sal_uInt16 > PAIR_COL
virtual sal_Bool SAL_CALL selectRow(sal_Int32 row) override
This base class provides an implementation of the AccessibleTable service.
virtual void SAL_CALL grabFocus() override
MAP_ADDR_XACC m_mapSelectionSend
bool In(const ScAddress &) const
is Address& in Range?
css::uno::Sequence< T > concatSequences(const css::uno::Sequence< T > &rS1, const Ss &...rSn)
bool IsScAddrFormulaSel(const ScAddress &addr) const
SCCOL GetRefStartX() const
ScAddress GetCurPos() const
virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount() override
virtual void SAL_CALL disposing() override
ScAccessibleDocument * mpAccDoc
OUString m_strCurCellValue
ScAddress GetChildIndexAddress(sal_Int32) const
virtual sal_Int32 SAL_CALL getAccessibleRow(sal_Int32 nChildIndex) override
Returns the row number of an index in the table.
bool GetFormulaCurrentFocusCell(ScAddress &addr)
rtl::Reference< ScAccessibleCell > mpAccCell
SC_DLLPUBLIC const ScRange * GetRepeatRowRange(SCTAB nTab)
virtual sal_Int32 SAL_CALL getForeground() override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
===== XTypeProvider ===================================================
void RemoveAccessibilityObject(SfxListener &rObject)
sal_uInt16 GetColAll() const
virtual sal_Bool SAL_CALL selectColumn(sal_Int32 column) override
virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet() override
Return the set of current states.
void CommitFocusLost() const
Calls all FocusListener to tell they that the focus is lost.
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_BLACK
virtual sal_Bool SAL_CALL unselectRow(sal_Int32 row) override
sal_Int32 GetRowAll() const
virtual sal_Int32 SAL_CALL getAccessibleIndex(sal_Int32 nRow, sal_Int32 nColumn) override
===== XAccessibleExtendedTable ========================================
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild(sal_Int32 nSelectedChildIndex) override
void SetRefEnd(SCCOL nNewX, SCROW nNewY, SCTAB nNewZ)
static bool CalcScRangeListDifferenceMax(ScRangeList *pSrc, ScRangeList *pDest, int nMax, std::vector< ScMyAddress > &vecRet)
sal_Int32 GetAccessibleIndexFormula(sal_Int32 nRow, sal_Int32 nColumn)
void CommitChange(const css::accessibility::AccessibleEventObject &rEvent) const
Calls all Listener to tell they the change.
#define SAL_WARN(area, stream)
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 getAccessibleRowHeaders() override
===== XAccessibleTable ================================================
Degree100 abs(Degree100 x)
ScTabViewShell * mpViewShell
void CompleteSelectionChanged(bool bNewState)
void UpdateRef(SCCOL nCurX, SCROW nCurY, SCTAB nCurZ)
virtual void SAL_CALL selectAllAccessibleChildren() override
bool GetTableSelect(SCTAB nTab) const
void MarkCursor(SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, bool bCols=false, bool bRows=false, bool bCellSelection=false)
virtual css::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleColumns() override
Returns the selected columns in a table.
static bool CompMinCol(const std::pair< sal_uInt16, sal_uInt16 > &pc1, const std::pair< sal_uInt16, sal_uInt16 > &pc2)
SC_DLLPUBLIC bool GetName(SCTAB nTab, OUString &rName) const
virtual sal_Int32 SAL_CALL getBackground() override
void InitBlockMode(SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, bool bTestNeg=false, bool bCols=false, bool bRows=false, bool bForceNeg=false)
ScRange maRange
contains the range of the table, because it could be a subrange of the complete table ...
bool CheckChildIndex(sal_Int32) const
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override
===== XAccessible =====================================================