summaryrefslogtreecommitdiff
path: root/svtools/source/control/valueacc.cxx
diff options
context:
space:
mode:
authorIvo Hinkelmann <ihi@openoffice.org>2009-09-18 12:59:21 +0000
committerIvo Hinkelmann <ihi@openoffice.org>2009-09-18 12:59:21 +0000
commita82083128b2a4c6538ef5bff38dcc21e620b7a2c (patch)
treeedcf668b2882cbb3247214ac784af62abc9eb20a /svtools/source/control/valueacc.cxx
parent0b8d7416168e73df21a79da11b4eeb470cb55c17 (diff)
CWS-TOOLING: integrate CWS impressaccessibility4
2009-09-16 19:30:19 +0200 af r276217 : #i80994# Fixed the triggering of accessibility initialization. 2009-09-16 18:43:57 +0200 af r276214 : #i93083# ValueSet now handles the FOCUSED and FOCUSABLE states correctly.
Diffstat (limited to 'svtools/source/control/valueacc.cxx')
-rw-r--r--svtools/source/control/valueacc.cxx36
1 files changed, 35 insertions, 1 deletions
diff --git a/svtools/source/control/valueacc.cxx b/svtools/source/control/valueacc.cxx
index afdb728f450e..96eb8bb39e99 100644
--- a/svtools/source/control/valueacc.cxx
+++ b/svtools/source/control/valueacc.cxx
@@ -37,6 +37,7 @@
#include <vcl/svapp.hxx>
#include <svtools/valueset.hxx>
#include "valueimp.hxx"
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
#include <com/sun/star/accessibility/AccessibleRole.hpp>
#include <com/sun/star/accessibility/AccessibleStateType.hpp>
@@ -92,7 +93,8 @@ void ValueSetItem::ClearAccessible()
ValueSetAcc::ValueSetAcc( ValueSet* pParent, bool bIsTransientChildrenDisabled ) :
ValueSetAccComponentBase (m_aMutex),
mpParent( pParent ),
- mbIsTransientChildrenDisabled( bIsTransientChildrenDisabled )
+ mbIsTransientChildrenDisabled( bIsTransientChildrenDisabled ),
+ mbIsFocused(false)
{
}
@@ -166,6 +168,35 @@ ValueSetAcc* ValueSetAcc::getImplementation( const uno::Reference< uno::XInterfa
}
}
+
+// -----------------------------------------------------------------------------
+
+void ValueSetAcc::GetFocus (void)
+{
+ mbIsFocused = true;
+
+ // Boradcast the state change.
+ ::com::sun::star::uno::Any aOldState, aNewState;
+ aNewState <<= ::com::sun::star::accessibility::AccessibleStateType::FOCUSED;
+ FireAccessibleEvent(
+ ::com::sun::star::accessibility::AccessibleEventId::STATE_CHANGED,
+ aOldState, aNewState);
+}
+
+// -----------------------------------------------------------------------------
+
+void ValueSetAcc::LoseFocus (void)
+{
+ mbIsFocused = false;
+
+ // Boradcast the state change.
+ ::com::sun::star::uno::Any aOldState, aNewState;
+ aOldState <<= ::com::sun::star::accessibility::AccessibleStateType::FOCUSED;
+ FireAccessibleEvent(
+ ::com::sun::star::accessibility::AccessibleEventId::STATE_CHANGED,
+ aOldState, aNewState);
+}
+
// -----------------------------------------------------------------------------
uno::Reference< accessibility::XAccessibleContext > SAL_CALL ValueSetAcc::getAccessibleContext()
@@ -321,6 +352,9 @@ uno::Reference< accessibility::XAccessibleStateSet > SAL_CALL ValueSetAcc::getAc
pStateSet->AddState (accessibility::AccessibleStateType::VISIBLE);
if ( !mbIsTransientChildrenDisabled )
pStateSet->AddState (accessibility::AccessibleStateType::MANAGES_DESCENDANTS);
+ pStateSet->AddState (accessibility::AccessibleStateType::FOCUSABLE);
+ if (mbIsFocused)
+ pStateSet->AddState (accessibility::AccessibleStateType::FOCUSED);
return pStateSet;
}