summaryrefslogtreecommitdiff
path: root/accessibility/source/standard/vclxaccessiblemenuitem.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'accessibility/source/standard/vclxaccessiblemenuitem.cxx')
-rw-r--r--accessibility/source/standard/vclxaccessiblemenuitem.cxx60
1 files changed, 31 insertions, 29 deletions
diff --git a/accessibility/source/standard/vclxaccessiblemenuitem.cxx b/accessibility/source/standard/vclxaccessiblemenuitem.cxx
index 8ad81ee06ed9..03bdc88c93c5 100644
--- a/accessibility/source/standard/vclxaccessiblemenuitem.cxx
+++ b/accessibility/source/standard/vclxaccessiblemenuitem.cxx
@@ -20,6 +20,7 @@
#include <standard/vclxaccessiblemenuitem.hxx>
#include <toolkit/helper/convert.hxx>
#include <helper/characterattributeshelper.hxx>
+#include <comphelper/accessiblecontexthelper.hxx>
#include <comphelper/accessiblekeybindinghelper.hxx>
#include <com/sun/star/awt/KeyModifier.hpp>
@@ -28,7 +29,6 @@
#include <com/sun/star/datatransfer/clipboard/XClipboard.hpp>
#include <com/sun/star/datatransfer/clipboard/XFlushableClipboard.hpp>
#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
-#include <unotools/accessiblestatesethelper.hxx>
#include <comphelper/sequence.hxx>
#include <i18nlangtag/languagetag.hxx>
#include <vcl/event.hxx>
@@ -50,7 +50,7 @@ using namespace ::comphelper;
VCLXAccessibleMenuItem::VCLXAccessibleMenuItem( Menu* pParent, sal_uInt16 nItemPos, Menu* pMenu )
- :OAccessibleMenuItemComponent( pParent, nItemPos, pMenu )
+ :ImplInheritanceHelper( pParent, nItemPos, pMenu )
{
}
@@ -66,6 +66,14 @@ bool VCLXAccessibleMenuItem::IsSelected()
return IsHighlighted();
}
+bool VCLXAccessibleMenuItem::IsCheckable()
+{
+ if (!m_pParent)
+ return false;
+
+ const sal_uInt16 nItemId = m_pParent->GetItemId(m_nItemPos);
+ return m_pParent->IsItemCheckable(nItemId);
+}
bool VCLXAccessibleMenuItem::IsChecked()
{
@@ -93,22 +101,24 @@ bool VCLXAccessibleMenuItem::IsHighlighted()
}
-void VCLXAccessibleMenuItem::FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet )
+void VCLXAccessibleMenuItem::FillAccessibleStateSet( sal_Int64& rStateSet )
{
OAccessibleMenuItemComponent::FillAccessibleStateSet( rStateSet );
- rStateSet.AddState( AccessibleStateType::FOCUSABLE );
+ rStateSet |= AccessibleStateType::FOCUSABLE;
if ( IsFocused() )
- rStateSet.AddState( AccessibleStateType::FOCUSED );
+ rStateSet |= AccessibleStateType::FOCUSED;
- rStateSet.AddState( AccessibleStateType::SELECTABLE );
+ rStateSet |= AccessibleStateType::SELECTABLE;
if ( IsSelected() )
- rStateSet.AddState( AccessibleStateType::SELECTED );
+ rStateSet |= AccessibleStateType::SELECTED;
+ if (IsCheckable())
+ rStateSet |= AccessibleStateType::CHECKABLE;
if ( IsChecked() )
- rStateSet.AddState( AccessibleStateType::CHECKED );
+ rStateSet |= AccessibleStateType::CHECKED;
}
@@ -134,18 +144,6 @@ void VCLXAccessibleMenuItem::implGetSelection( sal_Int32& nStartIndex, sal_Int32
}
-// XInterface
-
-
-IMPLEMENT_FORWARD_XINTERFACE2( VCLXAccessibleMenuItem, OAccessibleMenuItemComponent, VCLXAccessibleMenuItem_BASE )
-
-
-// XTypeProvider
-
-
-IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXAccessibleMenuItem, OAccessibleMenuItemComponent, VCLXAccessibleMenuItem_BASE )
-
-
// XServiceInfo
@@ -454,7 +452,7 @@ Reference< XAccessibleKeyBinding > VCLXAccessibleMenuItem::getAccessibleActionKe
{
Reference< XAccessibleContext > xParentContext( xParent->getAccessibleContext() );
if ( xParentContext.is() && xParentContext->getAccessibleRole() == AccessibleRole::MENU_BAR )
- aSeq1[0].Modifiers |= awt::KeyModifier::MOD2;
+ aSeq1.getArray()[0].Modifiers |= awt::KeyModifier::MOD2;
}
pKeyBindingHelper->AddKeyBinding( aSeq1 );
@@ -490,14 +488,18 @@ Reference< XAccessibleKeyBinding > VCLXAccessibleMenuItem::getAccessibleActionKe
static_cast< sal_Int16 >(aAccelKeyCode.GetFunction())
}
};
- if ( aAccelKeyCode.IsShift() )
- aSeq3[0].Modifiers |= awt::KeyModifier::SHIFT;
- if ( aAccelKeyCode.IsMod1() )
- aSeq3[0].Modifiers |= awt::KeyModifier::MOD1;
- if ( aAccelKeyCode.IsMod2() )
- aSeq3[0].Modifiers |= awt::KeyModifier::MOD2;
- if ( aAccelKeyCode.IsMod3() )
- aSeq3[0].Modifiers |= awt::KeyModifier::MOD3;
+ if (aAccelKeyCode.GetModifier() != 0)
+ {
+ auto pSeq3 = aSeq3.getArray();
+ if ( aAccelKeyCode.IsShift() )
+ pSeq3[0].Modifiers |= awt::KeyModifier::SHIFT;
+ if ( aAccelKeyCode.IsMod1() )
+ pSeq3[0].Modifiers |= awt::KeyModifier::MOD1;
+ if ( aAccelKeyCode.IsMod2() )
+ pSeq3[0].Modifiers |= awt::KeyModifier::MOD2;
+ if ( aAccelKeyCode.IsMod3() )
+ pSeq3[0].Modifiers |= awt::KeyModifier::MOD3;
+ }
pKeyBindingHelper->AddKeyBinding( aSeq3 );
}
}