From aeee25cf0bba9c1a8a132f4a9964c8f9db1c86f9 Mon Sep 17 00:00:00 2001 From: Masayuki Nakano Date: Tue, 3 Sep 2013 20:45:29 +0900 Subject: [PATCH] Bug 910978 part.9 Implement widget::WheelEvent::AssignWheelEventData() r=smaug --- content/events/src/nsDOMEvent.cpp | 19 +----------- widget/nsGUIEvent.h | 18 ++++++++++++ widget/tests/test_assign_event_data.html | 37 ++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 18 deletions(-) diff --git a/content/events/src/nsDOMEvent.cpp b/content/events/src/nsDOMEvent.cpp index 514026c0f660..20ab4b3656c2 100644 --- a/content/events/src/nsDOMEvent.cpp +++ b/content/events/src/nsDOMEvent.cpp @@ -606,24 +606,7 @@ nsDOMEvent::DuplicatePrivateData() static_cast(mEvent); widget::WheelEvent* wheelEvent = new widget::WheelEvent(false, msg, nullptr); - wheelEvent->AssignInputEventData(*oldWheelEvent, true); - wheelEvent->deltaX = oldWheelEvent->deltaX; - wheelEvent->deltaY = oldWheelEvent->deltaY; - wheelEvent->deltaZ = oldWheelEvent->deltaZ; - wheelEvent->deltaMode = oldWheelEvent->deltaMode; - wheelEvent->relatedTarget = oldWheelEvent->relatedTarget; - wheelEvent->button = oldWheelEvent->button; - wheelEvent->buttons = oldWheelEvent->buttons; - wheelEvent->modifiers = oldWheelEvent->modifiers; - wheelEvent->inputSource = oldWheelEvent->inputSource; - wheelEvent->customizedByUserPrefs = oldWheelEvent->customizedByUserPrefs; - wheelEvent->isMomentum = oldWheelEvent->isMomentum; - wheelEvent->isPixelOnlyDevice = oldWheelEvent->isPixelOnlyDevice; - wheelEvent->lineOrPageDeltaX = oldWheelEvent->lineOrPageDeltaX; - wheelEvent->lineOrPageDeltaY = oldWheelEvent->lineOrPageDeltaY; - wheelEvent->scrollType = oldWheelEvent->scrollType; - wheelEvent->overflowDeltaX = oldWheelEvent->overflowDeltaX; - wheelEvent->overflowDeltaY = oldWheelEvent->overflowDeltaY; + wheelEvent->AssignWheelEventData(*oldWheelEvent, true); newEvent = wheelEvent; break; } diff --git a/widget/nsGUIEvent.h b/widget/nsGUIEvent.h index 545be8e2fa59..6069b3d6657e 100644 --- a/widget/nsGUIEvent.h +++ b/widget/nsGUIEvent.h @@ -1541,6 +1541,24 @@ public: // it would need to check the deltaX and deltaY. double overflowDeltaX; double overflowDeltaY; + + void AssignWheelEventData(const WheelEvent& aEvent, bool aCopyTargets) + { + AssignMouseEventBaseData(aEvent, aCopyTargets); + + deltaX = aEvent.deltaX; + deltaY = aEvent.deltaY; + deltaZ = aEvent.deltaZ; + deltaMode = aEvent.deltaMode; + customizedByUserPrefs = aEvent.customizedByUserPrefs; + isMomentum = aEvent.isMomentum; + isPixelOnlyDevice = aEvent.isPixelOnlyDevice; + lineOrPageDeltaX = aEvent.lineOrPageDeltaX; + lineOrPageDeltaY = aEvent.lineOrPageDeltaY; + scrollType = aEvent.scrollType; + overflowDeltaX = aEvent.overflowDeltaX; + overflowDeltaY = aEvent.overflowDeltaY; + } }; } // namespace widget diff --git a/widget/tests/test_assign_event_data.html b/widget/tests/test_assign_event_data.html index a91a5e1e76cb..37fa23dd5338 100644 --- a/widget/tests/test_assign_event_data.html +++ b/widget/tests/test_assign_event_data.html @@ -312,6 +312,43 @@ const kTests = [ }, todoMismatch: [ ], }, + { description: "widget::WheelEvent (wheel, vertical)", + targetID: "input-text", eventType: "wheel", + dispatchEvent: function () { + document.getElementById(this.targetID).value = ""; + synthesizeWheel(document.getElementById(this.targetID), 3, 4, + { deltaY: 20, lineOrPageDeltaY: 1, altKey: true }); + }, + canRun: function () { + return true; + }, + todoMismatch: [ ], + }, + { description: "widget::WheelEvent (wheel, horizontal)", + targetID: "input-text", eventType: "wheel", + dispatchEvent: function () { + document.getElementById(this.targetID).value = ""; + synthesizeWheel(document.getElementById(this.targetID), 4, 5, + { deltaX: 20, lineOrPageDeltaX: 1, ctrlKey: true }); + }, + canRun: function () { + return true; + }, + todoMismatch: [ ], + }, + { description: "widget::WheelEvent (wheel, both)", + targetID: "input-text", eventType: "wheel", + dispatchEvent: function () { + document.getElementById(this.targetID).value = ""; + synthesizeWheel(document.getElementById(this.targetID), 4, 5, + { deltaX: 20, deltaY: 10, + lineOrPageDeltaX: 1, lineOrPageDeltaY: 1 }); + }, + canRun: function () { + return true; + }, + todoMismatch: [ ], + }, ]; function doTest(aTest)