20 #include <osl/mutex.hxx>
22 #include <com/sun/star/accessibility/AccessibleRole.hpp>
23 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
24 #include <com/sun/star/accessibility/AccessibleEventId.hpp>
42 #include <string_view>
62 if(
auto pCSh = dynamic_cast<const SwCursorShell*>(pVSh) )
64 if( pCSh->IsTableMode() )
70 SwSelBoxes const& rBoxes(pCSh->GetTableCursor()->GetSelectedBoxes());
71 bRet = rBoxes.
find(pBox) != rBoxes.end();
85 if( dynamic_cast<const SwCursorShell*>( pVSh) !=
nullptr )
86 rStateSet.
AddState( AccessibleStateType::SELECTABLE );
88 rStateSet.
AddState( AccessibleStateType::RESIZABLE );
96 rStateSet.
AddState( AccessibleStateType::SELECTED );
97 SAL_WARN_IF(!m_bIsSelected,
"sw.a11y",
"bSelected out of sync");
99 GetMap()->SetCursorContext( xThis );
106 , m_aSelectionHelper( *this )
107 , m_bIsSelected( false )
114 css::uno::Reference<css::accessibility::XAccessible> xTableReference(
116 css::uno::Reference<css::accessibility::XAccessibleContext> xContextTable(
117 xTableReference, css::uno::UNO_QUERY);
120 || xContextTable->getAccessibleRole() != AccessibleRole::TABLE),
121 "sw.a11y",
"bad accessible context");
130 osl::MutexGuard aGuard(
m_Mutex );
142 bool bChanged = bOld != bNew;
156 bool bChanged =
false;
160 while( aIter != aVisList.
end() )
169 GetMap()->GetContextImpl( pLower,
false ) );
172 assert(xAccImpl->GetFrame()->IsCellFrame());
203 AccessibleEventObject
aEvent;
204 aEvent.EventId = AccessibleEventId::STATE_CHANGED;
205 aEvent.NewValue <<= AccessibleStateType::FOCUSED;
206 xChildImpl->FireAccessibleEvent( aEvent );
214 if( pTabFrame->IsFollow() )
220 pTabFrame = pTabFrame->GetFollow();
230 osl::MutexGuard aGuard(
m_Mutex );
262 GetMap()->GetContextImpl( pParent,
false ) );
272 GetMap()->GetContextImpl( pParent,
false ) );
285 aR <<= uno::Reference<XAccessibleExtendedAttributes>(
this);
292 aR <<= uno::Reference<XAccessibleSelection>(
this);
297 uno::Reference<XAccessibleValue> xValue =
this;
304 return SwAccessibleContext::queryInterface( rType );
313 SwAccessibleContext::getTypes() ).
getTypes();
318 return css::uno::Sequence<sal_Int8>();
349 bool bValid = (aNumber >>= fValue);
368 static OUString
ReplaceOneChar(
const OUString& oldOUString, std::u16string_view replacedChar,
const OUString& replaceStr)
370 int iReplace = oldOUString.lastIndexOf(replacedChar);
371 OUString aRet = oldOUString;
374 aRet = aRet.replaceAt(iReplace,1, replaceStr);
375 iReplace = aRet.lastIndexOf(replacedChar,iReplace);
394 css::uno::Any strRet;
401 OUString strFor =
"Formula:" + strFormula +
";";
419 uno::Reference<XAccessibleComponent> xComponentDoc(xAccDoc, uno::UNO_QUERY);
420 if (xComponentDoc.is())
426 return sal_Int32(crBack);
431 sal_Int32 nChildIndex )
437 sal_Int32 nChildIndex )
457 sal_Int32 nSelectedChildIndex )
463 sal_Int32 nSelectedChildIndex )
css::uno::Reference< css::accessibility::XAccessible > getAccessibleParentImpl()
Base class of the Writer layout elements.
virtual void Dispose(bool bRecursive, bool bCanSkipInvisible=true) override
const SvxBrushItem & GetBackground(bool=true) const
virtual bool HasCursor() override
void selectAllAccessibleChildren()
virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount() override
sal_Int32 getSelectedAccessibleChildCount()
constexpr::Color COL_AUTO(ColorTransparency, 0xFF, 0xFF, 0xFF, 0xFF)
SwTabFrame is one table in the document layout, containing rows (which contain cells).
SwViewShell * GetShell()
convenience method to get the SwViewShell through accessibility map
const_iterator find(const Value &x) const
virtual void SAL_CALL deselectAccessibleChild(sal_Int32 nSelectedChildIndex) override
static OUString ReplaceOneChar(const OUString &oldOUString, std::u16string_view replacedChar, const OUString &replaceStr)
virtual void SAL_CALL clearAccessibleSelection() override
virtual css::uno::Any SAL_CALL getMaximumValue() override
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
Of course Writer needs its own rectangles.
bool IsInPagePreview() const
static sw::access::SwAccessibleChild GetChild(SwAccessibleMap &rAccMap, const SwRect &rVisArea, const SwFrame &rFrame, sal_Int32 &rPos, bool bInPagePreview)
const SwTableBox * GetTabBox() const
const SwFrame * GetFrame() const
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
bool isAccessibleChildSelected(sal_Int32 nChildIndex)
virtual void InvalidatePosOrSize(const SwRect &rFrame) override
virtual void SAL_CALL selectAccessibleChild(sal_Int32 nChildIndex) override
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
constexpr OUStringLiteral sAccessibleServiceName
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
const SwAttrSet * GetAttrSet() const
WARNING: this may not return correct RES_PAGEDESC/RES_BREAK items for SwTextFrame, use GetBreakItem()/GetPageDescItem() instead.
css::uno::Reference< css::accessibility::XAccessible > getSelectedAccessibleChild(sal_Int32 nSelectedChildIndex)
const Color & GetColor() const
void FireStateChangedEvent(sal_Int16 nState, bool bNewState)
const SwFrame * GetSwFrame() const
virtual css::uno::Any SAL_CALL getCurrentValue() override
SwTabFrame * FindMaster(bool bFirstMaster=false) const
virtual sal_Bool SAL_CALL setCurrentValue(const css::uno::Any &aNumber) override
const_iterator begin() const
const OUString & GetName() const
rtl::Reference< SwAccessibleTable > m_pAccTable
SwFrameFormat * GetTableBoxFormat() const
SwAccessibleCell(std::shared_ptr< SwAccessibleMap > const &pInitMap, const SwCellFrame *pCellFrame)
virtual OUString SAL_CALL getImplementationName() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
SwFrameFormat * GetFrameFormat()
virtual void InvalidateCursorPos_() override
virtual void InvalidatePosOrSize(const SwRect &rFrame)
const_iterator end() const
constexpr OUStringLiteral sImplementationName
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild(sal_Int32 nSelectedChildIndex) override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual void GetStates(::utl::AccessibleStateSetHelper &rStateSet) override
virtual sal_Bool SAL_CALL isAccessibleChildSelected(sal_Int32 nChildIndex) override
#define SAL_WARN_IF(condition, area, stream)
virtual void Dispose(bool bRecursive, bool bCanSkipInvisible=true)
virtual css::uno::Any SAL_CALL getMinimumValue() override
virtual void GetStates(::utl::AccessibleStateSetHelper &rStateSet)
bool IsAccessible(bool bPagePreview) const
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &aType) override
void selectAccessibleChild(sal_Int32 nChildIndex)
sal_Int32 SAL_CALL getBackground() override
const SwFrame * GetParent() const
SwTableBox is one table cell in the document model.
static OUString ReplaceFourChar(const OUString &oldOUString)
bool InvalidateMyCursorPos()
css::uno::Any SAL_CALL getExtendedAttributes() override
virtual ~SwAccessibleCell() override
css::uno::Sequence< css::uno::Type > SAL_CALL getTypes()
SwAccessibleMap * GetMap()
virtual OUString SAL_CALL getAccessibleDescription() override
Return this object's description.
void deselectAccessibleChild(sal_Int32 nChildIndex)
virtual void SAL_CALL selectAllAccessibleChildren() override
mutable::osl::Mutex m_Mutex
void SetCursorContext(const ::rtl::Reference< SwAccessibleContext > &rCursorContext)
virtual sal_Bool SAL_CALL supportsService(const OUString &sServiceName) override
Return whether the specified service is supported by this class.
const SwRect & GetVisArea() const
bool InvalidateChildrenCursorPos(const SwFrame *pFrame)
SwAccessibleSelectionHelper m_aSelectionHelper
void AddState(sal_Int16 aState)
void SetName(const OUString &rName)
SwCellFrame is one table cell in the document layout.