Capture delayed events and cancel as necessary.

Tag #1052
This commit is contained in:
wolfbeast 2019-04-26 14:13:32 +02:00 committed by Roy Tam
commit e3827df1a0
4 changed files with 20 additions and 9 deletions

View file

@ -8192,6 +8192,9 @@ PresShell::HandleEventInternal(WidgetEvent* aEvent,
}
}
}
if (aEvent->mMessage == eKeyDown) {
mIsLastKeyDownCanceled = aEvent->mFlags.mDefaultPrevented;
}
break;
}
case eMouseUp:
@ -8981,6 +8984,9 @@ PresShell::FireOrClearDelayedEvents(bool aFireEvents)
!doc->EventHandlingSuppressed()) {
nsAutoPtr<DelayedEvent> ev(mDelayedEvents[0].forget());
mDelayedEvents.RemoveElementAt(0);
if (ev->IsKeyPressEvent() && mIsLastKeyDownCanceled) {
continue;
}
ev->Dispatch();
}
if (!doc->EventHandlingSuppressed()) {
@ -9775,6 +9781,12 @@ PresShell::DelayedKeyEvent::DelayedKeyEvent(WidgetKeyboardEvent* aEvent) :
mEvent = keyEvent;
}
bool
PresShell::DelayedKeyEvent::IsKeyPressEvent()
{
return mEvent->mMessage == eKeyPress;
}
// Start of DEBUG only code
#ifdef DEBUG