Bug 1254629 - Make onKeyEvent more efficient; r=esawin
When handling synthetic keys, don't remove existing compositions and don't check for certain early exit conditions.
This commit is contained in:
@@ -2461,8 +2461,10 @@ nsWindow::GeckoViewSupport::OnKeyEvent(int32_t aAction, int32_t aKeyCode,
|
|||||||
bool aIsSynthesizedImeKey, jni::Object::Param originalEvent)
|
bool aIsSynthesizedImeKey, jni::Object::Param originalEvent)
|
||||||
{
|
{
|
||||||
RefPtr<nsWindow> kungFuDeathGrip(&window);
|
RefPtr<nsWindow> kungFuDeathGrip(&window);
|
||||||
window.UserActivity();
|
if (!aIsSynthesizedImeKey) {
|
||||||
window.RemoveIMEComposition();
|
window.UserActivity();
|
||||||
|
window.RemoveIMEComposition();
|
||||||
|
}
|
||||||
|
|
||||||
EventMessage msg;
|
EventMessage msg;
|
||||||
if (aAction == sdk::KeyEvent::ACTION_DOWN) {
|
if (aAction == sdk::KeyEvent::ACTION_DOWN) {
|
||||||
@@ -2491,17 +2493,19 @@ nsWindow::GeckoViewSupport::OnKeyEvent(int32_t aAction, int32_t aKeyCode,
|
|||||||
// these keys are dispatched in sequence.
|
// these keys are dispatched in sequence.
|
||||||
mIMEKeyEvents.AppendElement(
|
mIMEKeyEvents.AppendElement(
|
||||||
mozilla::UniquePtr<WidgetEvent>(event.Duplicate()));
|
mozilla::UniquePtr<WidgetEvent>(event.Duplicate()));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
window.DispatchEvent(&event, status);
|
window.DispatchEvent(&event, status);
|
||||||
|
|
||||||
if (status != nsEventStatus_eConsumeNoDefault) {
|
if (window.Destroyed() || status == nsEventStatus_eConsumeNoDefault) {
|
||||||
mEditable->OnDefaultKeyEvent(originalEvent);
|
// Skip default processing.
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mEditable->OnDefaultKeyEvent(originalEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window.Destroyed() ||
|
if (msg != eKeyDown || IsModifierKey(aKeyCode)) {
|
||||||
status == nsEventStatus_eConsumeNoDefault ||
|
|
||||||
msg != eKeyDown || IsModifierKey(aKeyCode)) {
|
|
||||||
// Skip sending key press event.
|
// Skip sending key press event.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user