20#include <com/sun/star/accessibility/AccessibleStateType.hpp>
21#include <com/sun/star/accessibility/AccessibleEventId.hpp>
49 if(
auto pFESh =
dynamic_cast<const SwFEShell*
>(pVSh) )
51 const SwFrame *pFlyFrame = pFESh->GetSelectedFlyFrame();
69 rStateSet |= AccessibleStateType::SELECTABLE;
71 rStateSet |= AccessibleStateType::FOCUSABLE;
77 rStateSet |= AccessibleStateType::SELECTED;
84 rStateSet |= AccessibleStateType::FOCUSED;
87 rStateSet |= AccessibleStateType::SELECTED;
93 if( pFlyFrame->
Lower() )
120 std::shared_ptr<SwAccessibleMap>
const& pInitMap,
124 m_bIsSelected( false )
141 std::scoped_lock aGuard(
m_Mutex );
154 if( bOldSelected == bNewSelected )
158 if( pWin && pWin->
HasFocus() && bNewSelected )
160 if( pWin && pWin->
HasFocus() && !bNewSelected )
171 AccessibleEventObject
aEvent;
172 aEvent.EventId = AccessibleEventId::SELECTION_CHANGED;
173 uno::Reference< XAccessible > xChild(
this);
174 aEvent.NewValue <<= xChild;
188 std::scoped_lock aGuard(
m_Mutex );
191 assert(bSelected &&
"focus object should be selected");
199 std::scoped_lock aGuard(
m_Mutex );
210 if(rHint.
GetId() == SfxHintId::Dying)
214 else if (rHint.
GetId() == SfxHintId::SwNameChanged && pFlyFrame)
219 const OUString sOldName(
GetName() );
220 assert( rNameChanged.m_sOld == sOldName);
223 assert( rNameChanged.m_sNew ==
GetName());
227 AccessibleEventObject
aEvent;
228 aEvent.EventId = AccessibleEventId::NAME_CHANGED;
229 aEvent.OldValue <<= sOldName;
248 SwPaM* pCursor =
nullptr;
250 if( pCursorShell !=
nullptr && !pCursorShell->
IsTableMode() )
257 pCursor = pCursorShell->
GetCursor(
false );
270 if(
GetMap()->IsDocumentSelAll())
286 if( pCursor !=
nullptr )
292 SwPaM* pRingStart = pCursor;
303 if( ( nHere >= nStartIndex ) && (nHere <= nEndIndex) )
305 if( rAnchor.
GetAnchorId() == RndStdIds::FLY_AS_CHAR )
308 if( ((nHere == nEndIndex) && (nIndex < pEnd->GetContentIndex())) || (nHere < nEndIndex) )
311 else if( rAnchor.
GetAnchorId() == RndStdIds::FLY_AT_PARA )
316 else if (rAnchor.
GetAnchorId() == RndStdIds::FLY_AT_CHAR)
332 while( pCursor != pRingStart );
bool StartListening(SvtBroadcaster &rBroadcaster)
virtual void Dispose(bool bRecursive, bool bCanSkipInvisible=true)
const OUString & GetName() const
void FireStateChangedEvent(sal_Int64 nState, bool bNewState)
void SetName(const OUString &rName)
void FireAccessibleEvent(css::accessibility::AccessibleEventObject &rEvent)
virtual void GetStates(sal_Int64 &rStateSet)
vcl::Window * GetWindow()
SwAccessibleMap * GetMap()
css::uno::Reference< css::accessibility::XAccessible > GetWeakParent() const
SwCursorShell * GetCursorShell()
convenience method to get SwCursorShell through accessibility map
virtual void Notify(const SfxHint &) override
virtual void InvalidateCursorPos_() override
virtual void GetStates(sal_Int64 &rStateSet) override
virtual ~SwAccessibleFrameBase() override
virtual void InvalidateFocus_() override
SwAccessibleFrameBase(std::shared_ptr< SwAccessibleMap > const &pInitMap, sal_Int16 nInitRole, const SwFlyFrame *pFlyFrame)
virtual bool HasCursor() override
SwFlyFrame * getFlyFrame() const
virtual bool SetSelectedState(bool bSelected) override
virtual void Dispose(bool bRecursive, bool bCanSkipInvisible=true) override
static SwNodeType GetNodeType(const SwFlyFrame *pFlyFrame)
const SwFrame * GetFrame() const
void SetCursorContext(const ::rtl::Reference< SwAccessibleContext > &rCursorContext)
SwViewShell * GetShell() const
SwCursor * GetCursor(bool bMakeTableCursor=true) const
Return pointer to the current shell cursor.
bool IsFrameSelected() const
size_t IsObjSelected() const
general base class for all free-flowing frames
virtual const SwFlyFrameFormat * GetFormat() const override
Content, content of frame (header, footer, fly).
const SwNodeIndex * GetContentIdx() const
Base class of the Writer layout elements.
bool IsNoTextFrame() const
const SwFrame * Lower() const
const SwContentNode * GetNode() const
Marks a node in the document model.
const SwNodes & GetNodes() const
SwNodeOffset GetIndex() const
SwTextNode * GetTextNode()
Inline methods from Node.hxx.
SwNodeOffset GetIndex() const
SwContentNode * GetContentNode()
SwNodeType GetNodeType() const
PaM is Point and Mark: a selection of the document model.
const SwPosition * End() const
const SwPosition * Start() const
bool HasMark() const
A PaM marks a selection if Point and Mark are distinct positions.
SwTextNode is a paragraph in the document model.
#define SAL_WARN_IF(condition, area, stream)
Marks a position in the document model.
SwNodeOffset GetNodeIndex() const
sal_Int32 GetContentIndex() const
bool IsSelectFrameAnchoredAtPara(SwPosition const &rAnchorPos, SwPosition const &rStart, SwPosition const &rEnd, DelContentType const nDelContentType)
is a fly anchored at paragraph at rAnchorPos selected?
bool IsDestroyFrameAnchoredAtChar(SwPosition const &rAnchorPos, SwPosition const &rStart, SwPosition const &rEnd, DelContentType const nDelContentType)
will DelContentIndex destroy a frame anchored at character at rAnchorPos?