LibreOffice Module accessibility (master) 1
vclxaccessiblelistitem.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
23#include <com/sun/star/awt/Rectangle.hpp>
24
25#include <com/sun/star/accessibility/AccessibleEventId.hpp>
26#include <com/sun/star/accessibility/AccessibleRole.hpp>
27#include <com/sun/star/accessibility/AccessibleStateType.hpp>
28#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
29#include <com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp>
30#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
32#include <utility>
33#include <vcl/svapp.hxx>
35#include <vcl/unohelp2.hxx>
36#include <vcl/settings.hxx>
40
41namespace
42{
44 void checkIndex_Impl( sal_Int32 _nIndex, std::u16string_view _sText )
45 {
46 if ( _nIndex < 0 || _nIndex > static_cast<sal_Int32>(_sText.size()) )
47 throw css::lang::IndexOutOfBoundsException();
48 }
49}
50
51// class VCLXAccessibleListItem ------------------------------------------
52
53using namespace ::com::sun::star::accessibility;
54using namespace ::com::sun::star::uno;
55using namespace ::com::sun::star::beans;
56using namespace ::com::sun::star::lang;
57using namespace ::com::sun::star;
58
59
60// Ctor() and Dtor()
61
64 , m_nIndexInParent(_nIndexInParent)
65 , m_bSelected(false)
66 , m_bVisible(false)
67 , m_nClientId(0)
68 , m_xParent(std::move(_xParent))
69{
70 assert(m_xParent.is());
71 ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent->getListBoxHelper();
72 if (pListBoxHelper)
73 m_sEntryText = pListBoxHelper->GetEntry(static_cast<sal_uInt16>(_nIndexInParent));
74}
75
77{
78 if ( m_bSelected != _bSelected )
79 {
80 Any aOldValue;
81 Any aNewValue;
82 if ( m_bSelected )
83 aOldValue <<= AccessibleStateType::SELECTED;
84 else
85 aNewValue <<= AccessibleStateType::SELECTED;
86 m_bSelected = _bSelected;
87 NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
88 }
89}
90
92{
93 if ( m_bVisible != _bVisible )
94 {
95 Any aOldValue, aNewValue;
96 m_bVisible = _bVisible;
97 (_bVisible ? aNewValue : aOldValue ) <<= AccessibleStateType::VISIBLE;
98 NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
99 (_bVisible ? aNewValue : aOldValue ) <<= AccessibleStateType::SHOWING;
100 NotifyAccessibleEvent( AccessibleEventId::STATE_CHANGED, aOldValue, aNewValue );
101 }
102}
103
105 const css::uno::Any& _aOldValue,
106 const css::uno::Any& _aNewValue )
107{
108 AccessibleEventObject aEvt;
109 aEvt.Source = *this;
110 aEvt.EventId = _nEventId;
111 aEvt.OldValue = _aOldValue;
112 aEvt.NewValue = _aNewValue;
113
114 if (m_nClientId)
116}
117
118// OCommonAccessibleText
119
121{
122 return m_sEntryText;
123}
124
126{
128}
129
130void VCLXAccessibleListItem::implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex )
131{
132 nStartIndex = 0;
133 nEndIndex = 0;
134}
135
136// XTypeProvider
137
139{
140 return css::uno::Sequence<sal_Int8>();
141}
142
143// XComponent
144
146{
148 Reference< XInterface > xEventSource;
149 {
150 ::osl::MutexGuard aGuard( m_aMutex );
151
152 VCLXAccessibleListItem_BASE::disposing();
153 m_sEntryText.clear();
154 m_xParent = nullptr;
155
157 m_nClientId = 0;
158 if ( nId )
159 xEventSource = *this;
160 }
161
162 // Send a disposing to all listeners.
163 if ( nId )
165}
166
167// XServiceInfo
168
170{
171 return "com.sun.star.comp.toolkit.AccessibleListItem";
172}
173
175{
176 return cppu::supportsService(this, rServiceName);
177}
178
180{
181 return {"com.sun.star.accessibility.AccessibleContext",
182 "com.sun.star.accessibility.AccessibleComponent",
183 "com.sun.star.accessibility.AccessibleListItem"};
184}
185
186// XAccessible
187
188Reference< XAccessibleContext > SAL_CALL VCLXAccessibleListItem::getAccessibleContext( )
189{
190 return this;
191}
192
193// XAccessibleContext
194
196{
197 return 0;
198}
199
201{
203}
204
206{
207 ::osl::MutexGuard aGuard( m_aMutex );
208
209 return m_xParent;
210}
211
213{
214 ::osl::MutexGuard aGuard( m_aMutex );
215 return m_nIndexInParent;
216}
217
219{
220 return AccessibleRole::LIST_ITEM;
221 // return AccessibleRole::LABEL;
222}
223
225{
226 // no description for every item
227 return OUString();
228}
229
231{
232 ::osl::MutexGuard aGuard( m_aMutex );
233
234 // entry text == accessible name
235 return m_sEntryText;
236}
237
238Reference< XAccessibleRelationSet > SAL_CALL VCLXAccessibleListItem::getAccessibleRelationSet( )
239{
241}
242
244{
245 ::osl::MutexGuard aGuard( m_aMutex );
246
247 sal_Int64 nStateSet = 0;
248
249 if ( !rBHelper.bDisposed && !rBHelper.bInDispose )
250 {
251 nStateSet |= AccessibleStateType::TRANSIENT;
252
253 ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr;
254 if (pListBoxHelper && pListBoxHelper->IsEnabled())
255 {
256 nStateSet |= AccessibleStateType::SELECTABLE;
257 nStateSet |= AccessibleStateType::ENABLED;
258 nStateSet |= AccessibleStateType::SENSITIVE;
259 }
260
261 if ( m_bSelected )
262 nStateSet |= AccessibleStateType::SELECTED;
263 if ( m_bVisible )
264 {
265 nStateSet |= AccessibleStateType::VISIBLE;
266 nStateSet |= AccessibleStateType::SHOWING;
267 }
268 }
269 else
270 nStateSet |= AccessibleStateType::DEFUNC;
271
272 return nStateSet;
273}
274
276{
277 SolarMutexGuard aSolarGuard;
278 ::osl::MutexGuard aGuard( m_aMutex );
279
280 return implGetLocale();
281}
282
283// XAccessibleComponent
284
285sal_Bool SAL_CALL VCLXAccessibleListItem::containsPoint( const awt::Point& _aPoint )
286{
287 SolarMutexGuard aSolarGuard;
288 ::osl::MutexGuard aGuard( m_aMutex );
289
290 bool bInside = false;
291 ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr;
292 if (pListBoxHelper)
293 {
294 tools::Rectangle aRect(pListBoxHelper->GetBoundingRectangle(static_cast<sal_uInt16>(m_nIndexInParent)));
295 aRect.Move(-aRect.Left(), -aRect.Top());
296 bInside = aRect.Contains( VCLPoint( _aPoint ) );
297 }
298 return bInside;
299}
300
302{
304}
305
306awt::Rectangle SAL_CALL VCLXAccessibleListItem::getBounds( )
307{
308 SolarMutexGuard aSolarGuard;
309 ::osl::MutexGuard aGuard( m_aMutex );
310
311 awt::Rectangle aRect;
312 ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr;
313 if (pListBoxHelper)
314 aRect = AWTRectangle(pListBoxHelper->GetBoundingRectangle(static_cast<sal_uInt16>(m_nIndexInParent)));
315
316 return aRect;
317}
318
320{
321 SolarMutexGuard aSolarGuard;
322 ::osl::MutexGuard aGuard( m_aMutex );
323
324 Point aPoint(0,0);
325 ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr;
326 if (pListBoxHelper)
327 {
328 tools::Rectangle aRect = pListBoxHelper->GetBoundingRectangle( static_cast<sal_uInt16>(m_nIndexInParent) );
329 aPoint = aRect.TopLeft();
330 }
331 return AWTPoint( aPoint );
332}
333
335{
336 SolarMutexGuard aSolarGuard;
337 ::osl::MutexGuard aGuard( m_aMutex );
338
339 Point aPoint(0,0);
340 ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr;
341 if (pListBoxHelper)
342 {
343 tools::Rectangle aRect = pListBoxHelper->GetBoundingRectangle(static_cast<sal_uInt16>(m_nIndexInParent));
344 aPoint = aRect.TopLeft();
345 aPoint += pListBoxHelper->GetWindowExtentsAbsolute().TopLeft();
346 }
347 return AWTPoint( aPoint );
348}
349
351{
352 SolarMutexGuard aSolarGuard;
353 ::osl::MutexGuard aGuard( m_aMutex );
354
355 Size aSize;
356 ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr;
357 if (pListBoxHelper)
358 aSize = pListBoxHelper->GetBoundingRectangle( static_cast<sal_uInt16>(m_nIndexInParent) ).GetSize();
359
360 return AWTSize( aSize );
361}
362
364{
365 // no focus for each item
366}
367
368// XAccessibleText
369
371{
372 return -1;
373}
374
376{
377 SolarMutexGuard aSolarGuard;
378 ::osl::MutexGuard aGuard( m_aMutex );
379
380 if ( !implIsValidRange( nIndex, nIndex, m_sEntryText.getLength() ) )
381 throw IndexOutOfBoundsException();
382
383 return false;
384}
385
387{
388 SolarMutexGuard aSolarGuard;
389 ::osl::MutexGuard aGuard( m_aMutex );
390
391 return OCommonAccessibleText::implGetCharacter( m_sEntryText, nIndex );
392}
393
394Sequence< PropertyValue > SAL_CALL VCLXAccessibleListItem::getCharacterAttributes( sal_Int32 nIndex, const Sequence< OUString >& )
395{
396 SolarMutexGuard aSolarGuard;
397 ::osl::MutexGuard aGuard( m_aMutex );
398
399 if ( !implIsValidIndex( nIndex, m_sEntryText.getLength() ) )
400 throw IndexOutOfBoundsException();
401
402 return Sequence< PropertyValue >();
403}
404
405awt::Rectangle SAL_CALL VCLXAccessibleListItem::getCharacterBounds( sal_Int32 nIndex )
406{
407 SolarMutexGuard aSolarGuard;
408 ::osl::MutexGuard aGuard( m_aMutex );
409
410 if ( !implIsValidIndex( nIndex, m_sEntryText.getLength() ) )
411 throw IndexOutOfBoundsException();
412
413 awt::Rectangle aBounds( 0, 0, 0, 0 );
414 ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr;
415 if (pListBoxHelper)
416 {
417 tools::Rectangle aCharRect = pListBoxHelper->GetEntryCharacterBounds( m_nIndexInParent, nIndex );
418 tools::Rectangle aItemRect = pListBoxHelper->GetBoundingRectangle( static_cast<sal_uInt16>(m_nIndexInParent) );
419 aCharRect.Move( -aItemRect.Left(), -aItemRect.Top() );
420 aBounds = AWTRectangle( aCharRect );
421 }
422
423 return aBounds;
424}
425
427{
428 SolarMutexGuard aSolarGuard;
429 ::osl::MutexGuard aGuard( m_aMutex );
430
431 return m_sEntryText.getLength();
432}
433
434sal_Int32 SAL_CALL VCLXAccessibleListItem::getIndexAtPoint( const awt::Point& aPoint )
435{
436 SolarMutexGuard aSolarGuard;
437 ::osl::MutexGuard aGuard( m_aMutex );
438
439 sal_Int32 nIndex = -1;
440 ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr;
441 if (pListBoxHelper)
442 {
443 sal_Int32 nPos = LISTBOX_ENTRY_NOTFOUND;
444 tools::Rectangle aItemRect = pListBoxHelper->GetBoundingRectangle( static_cast<sal_uInt16>(m_nIndexInParent) );
445 Point aPnt( VCLPoint( aPoint ) );
446 aPnt += aItemRect.TopLeft();
447 sal_Int32 nI = pListBoxHelper->GetIndexForPoint( aPnt, nPos );
448 if ( nI != -1 && m_nIndexInParent == nPos )
449 nIndex = nI;
450 }
451 return nIndex;
452}
453
455{
456 SolarMutexGuard aSolarGuard;
457 ::osl::MutexGuard aGuard( m_aMutex );
458
459 return OUString();
460}
461
463{
464 SolarMutexGuard aSolarGuard;
465 ::osl::MutexGuard aGuard( m_aMutex );
466
467 return 0;
468}
469
471{
472 SolarMutexGuard aSolarGuard;
473 ::osl::MutexGuard aGuard( m_aMutex );
474
475 return 0;
476}
477
478sal_Bool SAL_CALL VCLXAccessibleListItem::setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex )
479{
480 SolarMutexGuard aSolarGuard;
481 ::osl::MutexGuard aGuard( m_aMutex );
482
483 if ( !implIsValidRange( nStartIndex, nEndIndex, m_sEntryText.getLength() ) )
484 throw IndexOutOfBoundsException();
485
486 return false;
487}
488
490{
491 SolarMutexGuard aSolarGuard;
492 ::osl::MutexGuard aGuard( m_aMutex );
493
494 return m_sEntryText;
495}
496
497OUString SAL_CALL VCLXAccessibleListItem::getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex )
498{
499 SolarMutexGuard aSolarGuard;
500 ::osl::MutexGuard aGuard( m_aMutex );
501
502 return OCommonAccessibleText::implGetTextRange( m_sEntryText, nStartIndex, nEndIndex );
503}
504
505css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType )
506{
507 SolarMutexGuard aSolarGuard;
508 ::osl::MutexGuard aGuard( m_aMutex );
509
510 return OCommonAccessibleText::getTextAtIndex( nIndex, aTextType );
511}
512
513css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType )
514{
515 SolarMutexGuard aSolarGuard;
516 ::osl::MutexGuard aGuard( m_aMutex );
517
518 return OCommonAccessibleText::getTextBeforeIndex( nIndex, aTextType );
519}
520
521css::accessibility::TextSegment SAL_CALL VCLXAccessibleListItem::getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType )
522{
523 SolarMutexGuard aSolarGuard;
524 ::osl::MutexGuard aGuard( m_aMutex );
525
526 return OCommonAccessibleText::getTextBehindIndex( nIndex, aTextType );
527}
528
529sal_Bool SAL_CALL VCLXAccessibleListItem::copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex )
530{
531 SolarMutexGuard aSolarGuard;
532 ::osl::MutexGuard aGuard( m_aMutex );
533
534 checkIndex_Impl( nStartIndex, m_sEntryText );
535 checkIndex_Impl( nEndIndex, m_sEntryText );
536
537 bool bRet = false;
538 ::accessibility::IComboListBoxHelper* pListBoxHelper = m_xParent.is() ? m_xParent->getListBoxHelper() : nullptr;
539 if (pListBoxHelper)
540 {
541 Reference< datatransfer::clipboard::XClipboard > xClipboard = pListBoxHelper->GetClipboard();
542 if ( xClipboard.is() )
543 {
544 OUString sText( getTextRange( nStartIndex, nEndIndex ) );
546
547 SolarMutexReleaser aReleaser;
548 xClipboard->setContents( pDataObj, nullptr );
549 Reference< datatransfer::clipboard::XFlushableClipboard > xFlushableClipboard( xClipboard, uno::UNO_QUERY );
550 if( xFlushableClipboard.is() )
551 xFlushableClipboard->flushClipboard();
552
553 bRet = true;
554 }
555 }
556
557 return bRet;
558}
559
560sal_Bool VCLXAccessibleListItem::scrollSubstringTo( sal_Int32, sal_Int32, AccessibleScrollType )
561{
562 return false;
563}
564
565// XAccessibleEventBroadcaster
566
567void SAL_CALL VCLXAccessibleListItem::addAccessibleEventListener( const Reference< XAccessibleEventListener >& xListener )
568{
569 if (xListener.is())
570 {
571 if (!m_nClientId)
574 }
575}
576
577void SAL_CALL VCLXAccessibleListItem::removeAccessibleEventListener( const Reference< XAccessibleEventListener >& xListener )
578{
579 if ( !(xListener.is() && m_nClientId) )
580 return;
581
582 sal_Int32 nListenerCount = comphelper::AccessibleEventNotifier::removeEventListener( m_nClientId, xListener );
583 if ( nListenerCount )
584 return;
585
586 // no listeners anymore
587 // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client),
588 // and at least to us not firing any events anymore, in case somebody calls
589 // NotifyAccessibleEvent, again
590 if ( m_nClientId )
591 {
593 m_nClientId = 0;
595 }
596}
597
598
599// AF (Oct. 29 2002): Return black as constant foreground color. This is an
600// initial implementation and has to be substituted by code that determines
601// the color that is actually used.
603{
604 return sal_Int32(COL_BLACK);
605}
606
607// AF (Oct. 29 2002): Return white as constant background color. This is an
608// initial implementation and has to be substituted by code that determines
609// the color that is actually used.
611{
612 return sal_Int32(COL_WHITE);
613}
614
615
616/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
const LanguageTag & GetLanguageTag() const
static const AllSettings & GetSettings()
const css::lang::Locale & getLocale(bool bResolveSystem=true) const
virtual void SAL_CALL grabFocus() override
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
virtual sal_Int32 SAL_CALL getSelectionEnd() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
virtual OUString SAL_CALL getImplementationName() override
virtual sal_Bool SAL_CALL setCaretPosition(sal_Int32 nIndex) override
virtual sal_Int16 SAL_CALL getAccessibleRole() override
virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getCharacterAttributes(sal_Int32 nIndex, const css::uno::Sequence< OUString > &aRequestedAttributes) override
virtual sal_Bool SAL_CALL supportsService(const OUString &rServiceName) override
virtual css::accessibility::TextSegment SAL_CALL getTextBehindIndex(sal_Int32 nIndex, sal_Int16 aTextType) override
virtual OUString SAL_CALL getTextRange(sal_Int32 nStartIndex, sal_Int32 nEndIndex) override
virtual css::lang::Locale SAL_CALL getLocale() override
virtual sal_Int64 SAL_CALL getAccessibleChildCount() override
virtual OUString SAL_CALL getText() override
virtual css::accessibility::TextSegment SAL_CALL getTextBeforeIndex(sal_Int32 nIndex, sal_Int16 aTextType) override
virtual sal_Int32 SAL_CALL getBackground() override
virtual void SAL_CALL addAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
void NotifyAccessibleEvent(sal_Int16 _nEventId, const css::uno::Any &_aOldValue, const css::uno::Any &_aNewValue)
virtual css::lang::Locale implGetLocale() override
void SetVisible(bool _bVisible)
virtual sal_Bool SAL_CALL setSelection(sal_Int32 nStartIndex, sal_Int32 nEndIndex) override
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual OUString SAL_CALL getAccessibleDescription() override
virtual sal_Bool SAL_CALL scrollSubstringTo(sal_Int32 nStartIndex, sal_Int32 nEndIndex, css::accessibility::AccessibleScrollType aScrollType) override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int64 i) override
virtual void implGetSelection(sal_Int32 &nStartIndex, sal_Int32 &nEndIndex) override
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
rtl::Reference< VCLXAccessibleList > m_xParent
virtual sal_Int32 SAL_CALL getCharacterCount() override
virtual css::awt::Rectangle SAL_CALL getCharacterBounds(sal_Int32 nIndex) override
virtual sal_Int32 SAL_CALL getForeground() override
void SetSelected(bool _bSelected)
virtual OUString implGetText() override
virtual css::awt::Rectangle SAL_CALL getBounds() override
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override
virtual sal_Int64 SAL_CALL getAccessibleIndexInParent() override
virtual css::awt::Point SAL_CALL getLocationOnScreen() override
virtual sal_Int32 SAL_CALL getCaretPosition() override
virtual sal_Bool SAL_CALL containsPoint(const css::awt::Point &aPoint) override
sal_uInt32 m_nClientId
client id in the AccessibleEventNotifier queue
VCLXAccessibleListItem(sal_Int32 _nIndexInParent, rtl::Reference< VCLXAccessibleList > _xParent)
OAccessibleBase needs a valid view.
virtual OUString SAL_CALL getSelectedText() override
virtual sal_Int32 SAL_CALL getSelectionStart() override
virtual sal_Int32 SAL_CALL getIndexAtPoint(const css::awt::Point &aPoint) override
virtual css::accessibility::TextSegment SAL_CALL getTextAtIndex(sal_Int32 nIndex, sal_Int16 aTextType) override
virtual css::awt::Point SAL_CALL getLocation() override
virtual sal_Int64 SAL_CALL getAccessibleStateSet() override
virtual css::awt::Size SAL_CALL getSize() override
virtual sal_Unicode SAL_CALL getCharacter(sal_Int32 nIndex) override
virtual OUString SAL_CALL getAccessibleName() override
virtual void SAL_CALL disposing() override
this function is called upon disposing the component
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &aPoint) override
virtual sal_Bool SAL_CALL copyText(sal_Int32 nStartIndex, sal_Int32 nEndIndex) override
virtual void SAL_CALL removeAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
virtual css::uno::Reference< css::datatransfer::clipboard::XClipboard > GetClipboard()=0
virtual tools::Rectangle GetEntryCharacterBounds(const sal_Int32 _nEntryPos, const sal_Int32 _nCharacterIndex) const =0
virtual tools::Rectangle GetWindowExtentsAbsolute()=0
virtual bool IsEnabled() const =0
virtual tools::Long GetIndexForPoint(const Point &rPoint, sal_Int32 &nPos) const =0
virtual OUString GetEntry(sal_Int32 nPos) const =0
virtual tools::Rectangle GetBoundingRectangle(sal_uInt16 nItem) const =0
static sal_Int32 addEventListener(const TClientId _nClient, const css::uno::Reference< css::accessibility::XAccessibleEventListener > &_rxListener)
static void addEvent(const TClientId _nClient, const css::accessibility::AccessibleEventObject &_rEvent)
static sal_Int32 removeEventListener(const TClientId _nClient, const css::uno::Reference< css::accessibility::XAccessibleEventListener > &_rxListener)
static void revokeClient(const TClientId _nClient)
static void revokeClientNotifyDisposing(const TClientId _nClient, const css::uno::Reference< css::uno::XInterface > &_rxEventSource)
static bool implIsValidIndex(sal_Int32 nIndex, sal_Int32 nLength)
static bool implIsValidRange(sal_Int32 nStartIndex, sal_Int32 nEndIndex, sal_Int32 nLength)
mutable::osl::Mutex m_aMutex
bool Contains(const Point &rPOINT) const
constexpr tools::Long Top() const
constexpr Point TopLeft() const
constexpr Size GetSize() const
void Move(tools::Long nHorzMoveDelta, tools::Long nVertMoveDelta)
constexpr tools::Long Left() const
constexpr ::Color COL_WHITE(0xFF, 0xFF, 0xFF)
constexpr ::Color COL_BLACK(0x00, 0x00, 0x00)
css::awt::Size AWTSize(const Size &rVCLSize)
css::awt::Point AWTPoint(const ::Point &rVCLPoint)
css::awt::Rectangle AWTRectangle(const ::tools::Rectangle &rVCLRect)
inline ::Point VCLPoint(const css::awt::Point &rAWTPoint)
std::mutex m_aMutex
sal_Int32 nIndex
sal_uInt16 nPos
#define LISTBOX_ENTRY_NOTFOUND
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
sal_Int16 nId
unsigned char sal_Bool
sal_uInt16 sal_Unicode