зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1626036 - Cache SELECTED state in Mac. r=morgan
Differential Revision: https://phabricator.services.mozilla.com/D69133 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
9d0aad6f8b
Коммит
cd6b27feeb
|
@ -245,8 +245,8 @@ static inline NSMutableArray* ConvertToNSArray(nsTArray<ProxyAccessible*>& aArra
|
|||
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
||||
}
|
||||
|
||||
static const uint64_t kCachedStates =
|
||||
states::CHECKED | states::PRESSED | states::MIXED | states::EXPANDED | states::CURRENT;
|
||||
static const uint64_t kCachedStates = states::CHECKED | states::PRESSED | states::MIXED |
|
||||
states::EXPANDED | states::CURRENT | states::SELECTED;
|
||||
static const uint64_t kCacheInitialized = ((uint64_t)0x1) << 63;
|
||||
|
||||
- (uint64_t)state {
|
||||
|
|
|
@ -53,28 +53,13 @@
|
|||
- (id)selectedChildren {
|
||||
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
||||
|
||||
NSMutableArray* selectedChildren = [[NSMutableArray alloc] init];
|
||||
if (AccessibleWrap* accWrap = [self getGeckoAccessible]) {
|
||||
AutoTArray<Accessible*, 10> selectedItems;
|
||||
accWrap->SelectedItems(&selectedItems);
|
||||
for (uint64_t i = 0; i < selectedItems.Length(); i++) {
|
||||
mozAccessible* nativeChild;
|
||||
selectedItems.ElementAt(i)->GetNativeInterface((void**)&nativeChild);
|
||||
if (nativeChild) {
|
||||
[selectedChildren addObject:nativeChild];
|
||||
}
|
||||
}
|
||||
} else if (ProxyAccessible* proxy = [self getProxyAccessible]) {
|
||||
AutoTArray<ProxyAccessible*, 10> selectedItems;
|
||||
proxy->SelectedItems(&selectedItems);
|
||||
for (uint64_t i = 0; i < selectedItems.Length(); i++) {
|
||||
if (mozAccessible* nativeChild = GetNativeFromProxy(selectedItems.ElementAt(i))) {
|
||||
[selectedChildren addObject:nativeChild];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return selectedChildren;
|
||||
return [[self children]
|
||||
filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(mozAccessible* child,
|
||||
NSDictionary* bindings) {
|
||||
// Return mozSelectableChildAccessibles that have are selected (truthy value).
|
||||
return
|
||||
[child isKindOfClass:[mozSelectableChildAccessible class]] && [[child value] boolValue];
|
||||
}]];
|
||||
|
||||
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
|
||||
}
|
||||
|
@ -90,6 +75,7 @@
|
|||
@implementation mozSelectableChildAccessible
|
||||
|
||||
- (id)value {
|
||||
// Retuens true if item is selected.
|
||||
return [NSNumber numberWithBool:[self stateWithMask:states::SELECTED] != 0];
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче