diff --git a/content/events/src/nsDOMEvent.cpp b/content/events/src/nsDOMEvent.cpp index a80cd3159f62..c52a44f73238 100644 --- a/content/events/src/nsDOMEvent.cpp +++ b/content/events/src/nsDOMEvent.cpp @@ -896,7 +896,8 @@ NS_METHOD nsDOMEvent::DuplicatePrivateData() } case NS_TOUCH_EVENT: { - newEvent = new nsTouchEvent(false, msg, nsnull); + nsTouchEvent *oldTouchEvent = static_cast(mEvent); + newEvent = new nsTouchEvent(false, oldTouchEvent); NS_ENSURE_TRUE(newEvent, NS_ERROR_OUT_OF_MEMORY); isInputEvent = true; break; diff --git a/content/events/test/Makefile.in b/content/events/test/Makefile.in index 447a3b5a88e1..dd558d9cb029 100644 --- a/content/events/test/Makefile.in +++ b/content/events/test/Makefile.in @@ -114,6 +114,7 @@ _TEST_FILES = \ test_bug698929.html \ test_eventctors.html \ test_bug635465.html \ + test_bug741666.html \ $(NULL) #bug 585630 diff --git a/content/events/test/test_bug741666.html b/content/events/test/test_bug741666.html new file mode 100644 index 000000000000..795c3cd0aa0c --- /dev/null +++ b/content/events/test/test_bug741666.html @@ -0,0 +1,176 @@ + + + + + Test for Bug 741666 + + + + +Mozilla Bug 741666 +

+ +
+
+
+
+ testTarget +
+ + diff --git a/layout/base/nsPresShell.cpp b/layout/base/nsPresShell.cpp index 8b4e8db6f786..47462f0bc234 100644 --- a/layout/base/nsPresShell.cpp +++ b/layout/base/nsPresShell.cpp @@ -6627,7 +6627,9 @@ PresShell::DispatchTouchEvent(nsEvent *aEvent, continue; } - nsTouchEvent newEvent(touchEvent); + nsTouchEvent newEvent(NS_IS_TRUSTED_EVENT(touchEvent) ? + true : false, + touchEvent); newEvent.target = targetPtr; nsCOMPtr content(do_QueryInterface(targetPtr)); diff --git a/widget/nsGUIEvent.h b/widget/nsGUIEvent.h index 688c2cbad064..b6c814646904 100644 --- a/widget/nsGUIEvent.h +++ b/widget/nsGUIEvent.h @@ -1548,11 +1548,11 @@ public: class nsTouchEvent : public nsInputEvent { public: - nsTouchEvent(nsTouchEvent *aEvent) - :nsInputEvent(aEvent->flags & NS_EVENT_FLAG_TRUSTED ? true : false, - aEvent->message, - aEvent->widget, - NS_TOUCH_EVENT) + nsTouchEvent(bool isTrusted, nsTouchEvent *aEvent) + : nsInputEvent(isTrusted, + aEvent->message, + aEvent->widget, + NS_TOUCH_EVENT) { isShift = aEvent->isShift; isControl = aEvent->isControl;