From 783b60aae187d75c8c1924eceec8c4c56aa40c5e Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Tue, 26 Jun 2018 14:07:51 +0200 Subject: Issue #12 Part 5: WidgetEvent shouldn't mark event as consumed if it's not cancelable. Currently, EventListenerManager calls WidgetEvent::PreventDefault() when the status is nsEventStatus_eConsumeNoDefault. That causes an unexpected state of events. To solve this, WidgetEvent should do nothing when it's not cancelable but PreventDefault() is called. --- widget/BasicEvents.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'widget') diff --git a/widget/BasicEvents.h b/widget/BasicEvents.h index f24d7ca8a..960cb67c6 100644 --- a/widget/BasicEvents.h +++ b/widget/BasicEvents.h @@ -161,6 +161,9 @@ public: } inline void PreventDefault(bool aCalledByDefaultHandler = true) { + if (!mCancelable) { + return; + } mDefaultPrevented = true; // Note that even if preventDefault() has already been called by chrome, // a call of preventDefault() by content needs to overwrite @@ -175,6 +178,9 @@ public: // This should be used only before dispatching events into the DOM tree. inline void PreventDefaultBeforeDispatch() { + if (!mCancelable) { + return; + } mDefaultPrevented = true; } inline bool DefaultPrevented() const -- cgit v1.2.3