mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1169701 - Fire native OS X accessibility events for proxied accessibles r=tbsaunde
This commit is contained in:
parent
b774730849
commit
49a6ad2ed5
@ -105,6 +105,12 @@ private:
|
|||||||
bool mNativeInited;
|
bool mNativeInited;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(__OBJC__)
|
||||||
|
void FireNativeEvent(mozAccessible* aNativeAcc, uint32_t aEventType);
|
||||||
|
#else
|
||||||
|
void FireNativeEvent(id aNativeAcc, uint32_t aEventType);
|
||||||
|
#endif
|
||||||
|
|
||||||
Class GetTypeFromRole(roles::Role aRole);
|
Class GetTypeFromRole(roles::Role aRole);
|
||||||
|
|
||||||
} // namespace a11y
|
} // namespace a11y
|
||||||
|
@ -112,18 +112,7 @@ AccessibleWrap::HandleAccEvent(AccEvent* aEvent)
|
|||||||
if (!nativeAcc)
|
if (!nativeAcc)
|
||||||
return NS_ERROR_FAILURE;
|
return NS_ERROR_FAILURE;
|
||||||
|
|
||||||
switch (eventType) {
|
FireNativeEvent(nativeAcc, eventType);
|
||||||
case nsIAccessibleEvent::EVENT_FOCUS:
|
|
||||||
[nativeAcc didReceiveFocus];
|
|
||||||
break;
|
|
||||||
case nsIAccessibleEvent::EVENT_VALUE_CHANGE:
|
|
||||||
[nativeAcc valueDidChange];
|
|
||||||
break;
|
|
||||||
case nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED:
|
|
||||||
case nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED:
|
|
||||||
[nativeAcc selectedTextDidChange];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
|
||||||
@ -234,6 +223,27 @@ AccessibleWrap::AncestorIsFlat()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
a11y::FireNativeEvent(mozAccessible* aNativeAcc, uint32_t aEventType)
|
||||||
|
{
|
||||||
|
NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
|
||||||
|
|
||||||
|
switch (aEventType) {
|
||||||
|
case nsIAccessibleEvent::EVENT_FOCUS:
|
||||||
|
[aNativeAcc didReceiveFocus];
|
||||||
|
break;
|
||||||
|
case nsIAccessibleEvent::EVENT_VALUE_CHANGE:
|
||||||
|
[aNativeAcc valueDidChange];
|
||||||
|
break;
|
||||||
|
case nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED:
|
||||||
|
case nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED:
|
||||||
|
[aNativeAcc selectedTextDidChange];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_OBJC_END_TRY_ABORT_BLOCK;
|
||||||
|
}
|
||||||
|
|
||||||
Class
|
Class
|
||||||
a11y::GetTypeFromRole(roles::Role aRole)
|
a11y::GetTypeFromRole(roles::Role aRole)
|
||||||
{
|
{
|
||||||
|
@ -55,21 +55,39 @@ ProxyDestroyed(ProxyAccessible* aProxy)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ProxyEvent(ProxyAccessible*, uint32_t)
|
ProxyEvent(ProxyAccessible* aProxy, uint32_t aEventType)
|
||||||
{
|
{
|
||||||
|
// ignore everything but focus-changed, value-changed, caret and selection
|
||||||
|
// events for now.
|
||||||
|
if (aEventType != nsIAccessibleEvent::EVENT_FOCUS &&
|
||||||
|
aEventType != nsIAccessibleEvent::EVENT_VALUE_CHANGE &&
|
||||||
|
aEventType != nsIAccessibleEvent::EVENT_TEXT_CARET_MOVED &&
|
||||||
|
aEventType != nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mozAccessible* wrapper =
|
||||||
|
reinterpret_cast<mozAccessible*>(aProxy->GetWrapper());
|
||||||
|
if (wrapper)
|
||||||
|
FireNativeEvent(wrapper, aEventType);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ProxyStateChangeEvent(ProxyAccessible*, uint64_t, bool)
|
ProxyStateChangeEvent(ProxyAccessible* aProxy, uint64_t, bool)
|
||||||
{
|
{
|
||||||
|
// mac doesn't care about state change events
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ProxyCaretMoveEvent(ProxyAccessible* aTarget, int32_t aOffset)
|
ProxyCaretMoveEvent(ProxyAccessible* aTarget, int32_t aOffset)
|
||||||
{
|
{
|
||||||
|
mozAccessible* wrapper =
|
||||||
|
reinterpret_cast<mozAccessible*>(aTarget->GetWrapper());
|
||||||
|
if (wrapper)
|
||||||
|
[wrapper selectedTextDidChange];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
} // namespace a11y
|
||||||
|
} // namespace mozilla
|
||||||
|
|
||||||
@interface GeckoNSApplication(a11y)
|
@interface GeckoNSApplication(a11y)
|
||||||
-(void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute;
|
-(void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute;
|
||||||
|
Loading…
Reference in New Issue
Block a user