@ -260,14 +260,16 @@
- (void)setAccessibilityValue:(id)newValue
- (void)setAccessibilityValue:(id)newValue
{
{
if (_peer->IsValueProvider())
if (!_peer->IsEnabled())
return;
if (_peer->IsValueProvider() && !_peer->ValueProvider_IsReadOnly())
{
{
if (newValue == nil)
if (newValue == nil)
_peer->ValueProvider_SetValue(nil);
_peer->ValueProvider_SetValue(nil);
else if ([newValue isKindOfClass:[NSString class]])
else if ([newValue isKindOfClass:[NSString class]])
_peer->ValueProvider_SetValue([(NSString*)newValue UTF8String]);
_peer->ValueProvider_SetValue([(NSString*)newValue UTF8String]);
}
}
else if (_peer->IsRangeValueProvider())
else if (_peer->IsRangeValueProvider() && !_peer->RangeValueProvider_IsReadOnly() )
{
{
if ([newValue isKindOfClass:[NSNumber class]])
if ([newValue isKindOfClass:[NSNumber class]])
_peer->RangeValueProvider_SetValue([(NSNumber*)newValue doubleValue]);
_peer->RangeValueProvider_SetValue([(NSNumber*)newValue doubleValue]);
@ -281,7 +283,7 @@
if (_peer->IsValueProvider())
if (_peer->IsValueProvider())
return !_peer->ValueProvider_IsReadOnly();
return !_peer->ValueProvider_IsReadOnly();
if (_peer->IsRangeValueProvider())
if (_peer->IsRangeValueProvider())
return YES ;
return !_peer->RangeValueProvider_IsReadOnly() ;
return NO;
return NO;
}
}
@ -395,7 +397,7 @@
- (void)setAccessibilityExpanded:(BOOL)accessibilityExpanded
- (void)setAccessibilityExpanded:(BOOL)accessibilityExpanded
{
{
if (!_peer->IsExpandCollapseProvider())
if (!_peer->IsExpandCollapseProvider() || !_peer->IsEnabled() )
return;
return;
if (accessibilityExpanded)
if (accessibilityExpanded)
_peer->ExpandCollapseProvider_Expand();
_peer->ExpandCollapseProvider_Expand();
@ -405,13 +407,18 @@
- (BOOL)accessibilityPerformPress
- (BOOL)accessibilityPerformPress
{
{
if (!_peer->IsEnabled())
return NO;
if (_peer->IsInvokeProvider())
if (_peer->IsInvokeProvider())
{
{
_peer->InvokeProvider_Invoke();
_peer->InvokeProvider_Invoke();
}
}
else if (_peer->IsExpandCollapseProvider())
else if (_peer->IsExpandCollapseProvider())
{
{
_peer->ExpandCollapseProvider_Expand();
if (_peer->ExpandCollapseProvider_GetIsExpanded())
_peer->ExpandCollapseProvider_Collapse();
else
_peer->ExpandCollapseProvider_Expand();
}
}
else if (_peer->IsToggleProvider())
else if (_peer->IsToggleProvider())
{
{
@ -422,7 +429,7 @@
- (BOOL)accessibilityPerformIncrement
- (BOOL)accessibilityPerformIncrement
{
{
if (!_peer->IsRangeValueProvider())
if (!_peer->IsRangeValueProvider() || _peer->RangeValueProvider_IsReadOnly() || !_peer->IsEnabled() )
return NO;
return NO;
auto value = _peer->RangeValueProvider_GetValue();
auto value = _peer->RangeValueProvider_GetValue();
value += _peer->RangeValueProvider_GetSmallChange();
value += _peer->RangeValueProvider_GetSmallChange();
@ -432,7 +439,7 @@
- (BOOL)accessibilityPerformDecrement
- (BOOL)accessibilityPerformDecrement
{
{
if (!_peer->IsRangeValueProvider())
if (!_peer->IsRangeValueProvider() || _peer->RangeValueProvider_IsReadOnly() || !_peer->IsEnabled() )
return NO;
return NO;
auto value = _peer->RangeValueProvider_GetValue();
auto value = _peer->RangeValueProvider_GetValue();
value -= _peer->RangeValueProvider_GetSmallChange();
value -= _peer->RangeValueProvider_GetSmallChange();
@ -442,7 +449,7 @@
- (BOOL)accessibilityPerformShowMenu
- (BOOL)accessibilityPerformShowMenu
{
{
if (!_peer->IsExpandCollapseProvider())
if (!_peer->IsExpandCollapseProvider() || !_peer->IsEnabled() )
return NO;
return NO;
_peer->ExpandCollapseProvider_Expand();
_peer->ExpandCollapseProvider_Expand();
return YES;
return YES;
@ -476,15 +483,20 @@
- (void)setAccessibilitySelected:(BOOL)accessibilitySelected
- (void)setAccessibilitySelected:(BOOL)accessibilitySelected
{
{
if (accessibilitySelected && _peer->IsSelectionItemProvider())
if (!_peer->IsSelectionItemProvider() || !_peer->IsEnabled())
_peer->SelectionItemProvider_Select();
return;
if (accessibilitySelected)
_peer->SelectionItemProvider_AddToSelection();
else
_peer->SelectionItemProvider_RemoveFromSelection();
}
}
- (BOOL)isAccessibilitySelectorAllowed:(SEL)selector
- (BOOL)isAccessibilitySelectorAllowed:(SEL)selector
{
{
if (selector == @selector(setAccessibilityValue:))
if (selector == @selector(setAccessibilityValue:))
{
{
return _peer->IsValueProvider() || _peer->IsRangeValueProvider();
return (_peer->IsValueProvider() && !_peer->ValueProvider_IsReadOnly()) ||
(_peer->IsRangeValueProvider() && !_peer->RangeValueProvider_IsReadOnly());
}
}
else if (selector == @selector(accessibilityPerformShowMenu))
else if (selector == @selector(accessibilityPerformShowMenu))
{
{
@ -503,8 +515,11 @@
return _peer->IsSelectionItemProvider();
return _peer->IsSelectionItemProvider();
}
}
else if (selector == @selector(accessibilityPerformIncrement) ||
else if (selector == @selector(accessibilityPerformIncrement) ||
selector == @selector(accessibilityPerformDecrement) ||
selector == @selector(accessibilityPerformDecrement))
selector == @selector(accessibilityMinValue) ||
{
return _peer->IsRangeValueProvider() && !_peer->RangeValueProvider_IsReadOnly();
}
else if (selector == @selector(accessibilityMinValue) ||
selector == @selector(accessibilityMaxValue))
selector == @selector(accessibilityMaxValue))
{
{
return _peer->IsRangeValueProvider();
return _peer->IsRangeValueProvider();