diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-12 05:43:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-12 05:43:14 +0000 |
commit | 8dd16259287f58f9273002717ec4d27e97127719 (patch) | |
tree | 3863e62a53829a84037444beab3abd4ed9dfc7d0 /accessible/windows/uia/UiaGridItem.cpp | |
parent | Releasing progress-linux version 126.0.1-1~progress7.99u1. (diff) | |
download | firefox-8dd16259287f58f9273002717ec4d27e97127719.tar.xz firefox-8dd16259287f58f9273002717ec4d27e97127719.zip |
Merging upstream version 127.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'accessible/windows/uia/UiaGridItem.cpp')
-rw-r--r-- | accessible/windows/uia/UiaGridItem.cpp | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/accessible/windows/uia/UiaGridItem.cpp b/accessible/windows/uia/UiaGridItem.cpp new file mode 100644 index 0000000000..89c56b8d45 --- /dev/null +++ b/accessible/windows/uia/UiaGridItem.cpp @@ -0,0 +1,130 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "ia2AccessibleTableCell.h" +#include "mozilla/a11y/TableAccessible.h" +#include "mozilla/a11y/TableCellAccessible.h" +#include "UiaGridItem.h" + +using namespace mozilla; +using namespace mozilla::a11y; + +// UiaGridItem + +TableCellAccessible* UiaGridItem::CellAcc() { + auto* derived = static_cast<ia2AccessibleTableCell*>(this); + Accessible* acc = derived->Acc(); + return acc ? acc->AsTableCell() : nullptr; +} + +// IGridItemProvider methods + +STDMETHODIMP +UiaGridItem::get_Row(__RPC__out int* aRetVal) { + if (!aRetVal) { + return E_INVALIDARG; + } + TableCellAccessible* cell = CellAcc(); + if (!cell) { + return CO_E_OBJNOTCONNECTED; + } + *aRetVal = cell->RowIdx(); + return S_OK; +} + +STDMETHODIMP +UiaGridItem::get_Column(__RPC__out int* aRetVal) { + if (!aRetVal) { + return E_INVALIDARG; + } + TableCellAccessible* cell = CellAcc(); + if (!cell) { + return CO_E_OBJNOTCONNECTED; + } + *aRetVal = cell->ColIdx(); + return S_OK; +} + +STDMETHODIMP +UiaGridItem::get_RowSpan(__RPC__out int* aRetVal) { + if (!aRetVal) { + return E_INVALIDARG; + } + TableCellAccessible* cell = CellAcc(); + if (!cell) { + return CO_E_OBJNOTCONNECTED; + } + *aRetVal = cell->RowExtent(); + return S_OK; +} + +STDMETHODIMP +UiaGridItem::get_ColumnSpan(__RPC__out int* aRetVal) { + if (!aRetVal) { + return E_INVALIDARG; + } + TableCellAccessible* cell = CellAcc(); + if (!cell) { + return CO_E_OBJNOTCONNECTED; + } + *aRetVal = cell->ColExtent(); + return S_OK; +} + +STDMETHODIMP +UiaGridItem::get_ContainingGrid( + __RPC__deref_out_opt IRawElementProviderSimple** aRetVal) { + if (!aRetVal) { + return E_INVALIDARG; + } + *aRetVal = nullptr; + TableCellAccessible* cell = CellAcc(); + if (!cell) { + return CO_E_OBJNOTCONNECTED; + } + TableAccessible* table = cell->Table(); + if (!table) { + return E_FAIL; + } + Accessible* tableAcc = table->AsAccessible(); + RefPtr<IRawElementProviderSimple> uia = MsaaAccessible::GetFrom(tableAcc); + uia.forget(aRetVal); + return S_OK; +} + +// ITableItemProvider methods + +STDMETHODIMP +UiaGridItem::GetRowHeaderItems(__RPC__deref_out_opt SAFEARRAY** aRetVal) { + if (!aRetVal) { + return E_INVALIDARG; + } + *aRetVal = nullptr; + TableCellAccessible* cell = CellAcc(); + if (!cell) { + return CO_E_OBJNOTCONNECTED; + } + AutoTArray<Accessible*, 10> cells; + cell->RowHeaderCells(&cells); + *aRetVal = AccessibleArrayToUiaArray(cells); + return S_OK; +} + +STDMETHODIMP +UiaGridItem::GetColumnHeaderItems(__RPC__deref_out_opt SAFEARRAY** aRetVal) { + if (!aRetVal) { + return E_INVALIDARG; + } + *aRetVal = nullptr; + TableCellAccessible* cell = CellAcc(); + if (!cell) { + return CO_E_OBJNOTCONNECTED; + } + AutoTArray<Accessible*, 10> cells; + cell->ColHeaderCells(&cells); + *aRetVal = AccessibleArrayToUiaArray(cells); + return S_OK; +} |