21#include <com/sun/star/awt/XControl.hpp>
22#include <com/sun/star/awt/XWindow.hpp>
23#include <com/sun/star/beans/XPropertySet.hpp>
24#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
26#include <com/sun/star/accessibility/AccessibleStateType.hpp>
27#include <com/sun/star/accessibility/AccessibleRole.hpp>
38 using ::comphelper::OContextEntryGuard;
63 OContextEntryGuard aGuard(
this );
66 OSL_ENSURE( !
m_xControlModel.is(),
"OAccessibleControlContext::Init: already know a control model...!???" );
68 Reference< awt::XControl > xControl( _rxCreator, UNO_QUERY );
71 OSL_ENSURE(
m_xControlModel.is(),
"OAccessibleControlContext::Init: invalid creator (no control, or control without model!" );
73 throw DisposedException();
79 OAccessibleControlContext_Base::lateInit( _rxCreator );
89 pNew->Init( _rxCreator );
93 TOOLS_WARN_EXCEPTION(
"toolkit",
"OAccessibleControlContext::create: caught an exception from the late ctor!" );
102 OSL_ENSURE( xModelComp.is(),
"OAccessibleControlContext::startModelListening: invalid model!" );
103 if ( xModelComp.is() )
104 xModelComp->addEventListener(
this );
111 OSL_ENSURE( xModelComp.is(),
"OAccessibleControlContext::stopModelListening: invalid model!" );
112 if ( xModelComp.is() )
113 xModelComp->removeEventListener(
this );
127 throw IndexOutOfBoundsException();
133 return Reference< XAccessible >();
139 return AccessibleRole::SHAPE;
145 OContextEntryGuard aGuard(
this );
152 OContextEntryGuard aGuard(
this );
165 ::osl::MutexGuard aGuard( GetMutex() );
168 sal_Int64 nStateSet = 0;
175 nStateSet |= AccessibleStateType::DEFUNC;
183 OSL_ENSURE( Reference< XPropertySet >( _rSource.Source, UNO_QUERY ).get() ==
m_xControlModel.get(),
184 "OAccessibleControlContext::disposing: where did this come from?" );
190 OAccessibleControlContext_Base::disposing();
202 OUString sPropertyName( OUString::createFromAscii( _pPropertyName ) );
216 Reference< awt::XControl > xControl( getAccessibleCreator(), UNO_QUERY );
217 Reference< awt::XWindow > xWindow;
219 xWindow.set(xControl->getPeer(), css::uno::UNO_QUERY);
224 *_pxUNOWindow = xWindow;
234 OContextEntryGuard aGuard(
this );
236 OSL_FAIL(
"OAccessibleControlContext::implGetBounds: performance issue: forced to calc the size myself!" );
248 Reference< awt::XWindow > xWindow;
251 awt::Rectangle aBounds( 0, 0, 0, 0 );
257 vcl::Window* pVCLParent = pVCLWindow ? pVCLWindow->GetParent() :
nullptr;
260 ::Point aWindowRelativePos( 0, 0);
262 aWindowRelativePos = pVCLWindow->GetPosPixel();
265 ::Point aVCLParentScreenPos( 0, 0 );
270 aBounds = xWindow->getPosSize();
273 aBounds.
X = aWindowRelativePos.
X() + aVCLParentScreenPos.
X();
274 aBounds.Y = aWindowRelativePos.
Y() + aVCLParentScreenPos.
Y();
290 OSL_FAIL(
"OAccessibleControlContext::grabFocus: !isFocusTraversable, but grabFocus!" );
298 OContextEntryGuard aGuard(
this );
304 if ( pWindow->IsControlForeground() )
305 nColor = pWindow->GetControlForeground();
309 if ( pWindow->IsControlFont() )
310 aFont = pWindow->GetControlFont();
312 aFont = pWindow->GetFont();
316 return sal_Int32(nColor);
324 OContextEntryGuard aGuard(
this );
330 if ( pWindow->IsControlBackground() )
331 nColor = pWindow->GetControlBackground();
333 nColor = pWindow->GetBackground().GetColor();
336 return sal_Int32(nColor);
constexpr tools::Long Y() const
constexpr tools::Long X() const
static vcl::Window * GetWindow(const css::uno::Reference< css::awt::XWindow > &rxWindow)
void Init(const css::uno::Reference< css::accessibility::XAccessible > &_rxCreator)
late ctor
virtual sal_Int32 SAL_CALL getForeground() override
virtual ~OAccessibleControlContext() override
void startModelListening()
virtual sal_Int64 SAL_CALL getAccessibleStateSet() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int64 i) override
virtual sal_Int64 SAL_CALL getAccessibleChildCount() override
void stopModelListening()
virtual OUString SAL_CALL getAccessibleName() override
css::uno::Reference< css::beans::XPropertySetInfo > m_xModelPropsInfo
virtual void SAL_CALL grabFocus() override
static rtl::Reference< OAccessibleControlContext > create(const css::uno::Reference< css::accessibility::XAccessible > &_rxCreator)
creates an accessible context for a uno control
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
virtual OUString SAL_CALL getAccessibleDescription() override
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
OAccessibleControlContext()
ctor.
OUString getModelStringProperty(const char *_pPropertyName)
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
virtual sal_Int32 SAL_CALL getBackground() override
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &aPoint) override
virtual css::awt::Rectangle implGetBounds() override
vcl::Window * implGetWindow(css::uno::Reference< css::awt::XWindow > *_pxUNOWindow=nullptr) const
css::uno::Reference< css::beans::XPropertySet > m_xControlModel
virtual sal_Int16 SAL_CALL getAccessibleRole() override
const Color & GetColor() const
virtual Point GetPosPixel() const
#define TOOLS_WARN_EXCEPTION(area, stream)