summaryrefslogtreecommitdiffstats
path: root/widget
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@gmail.com>2018-06-26 13:53:12 +0200
committerwolfbeast <mcwerewolf@gmail.com>2018-06-26 13:53:12 +0200
commita7bc62dcfe5495c8b53532c1b585af07171b4403 (patch)
tree40856bf1ba28f0c304d86769519ec52821605c39 /widget
parent783f57d74b0caf84cec01a0ae43a2a8cb8697673 (diff)
downloadUXP-a7bc62dcfe5495c8b53532c1b585af07171b4403.tar
UXP-a7bc62dcfe5495c8b53532c1b585af07171b4403.tar.gz
UXP-a7bc62dcfe5495c8b53532c1b585af07171b4403.tar.lz
UXP-a7bc62dcfe5495c8b53532c1b585af07171b4403.tar.xz
UXP-a7bc62dcfe5495c8b53532c1b585af07171b4403.zip
Issue #12 Part 2: Stop using nsIDOMEvent in IsAcceptableInputEvent.
Diffstat (limited to 'widget')
-rw-r--r--widget/BasicEvents.h6
-rw-r--r--widget/WidgetEventImpl.cpp34
2 files changed, 40 insertions, 0 deletions
diff --git a/widget/BasicEvents.h b/widget/BasicEvents.h
index a6228f179..f24d7ca8a 100644
--- a/widget/BasicEvents.h
+++ b/widget/BasicEvents.h
@@ -407,10 +407,16 @@ public:
nsString mSpecifiedEventTypeString;
// Event targets, needed by DOM Events
+ // Note that when you need event target for DOM event, you should use
+ // Get*DOMEventTarget() instead of accessing these members directly.
nsCOMPtr<dom::EventTarget> mTarget;
nsCOMPtr<dom::EventTarget> mCurrentTarget;
nsCOMPtr<dom::EventTarget> mOriginalTarget;
+ dom::EventTarget* GetDOMEventTarget() const;
+ dom::EventTarget* GetCurrentDOMEventTarget() const;
+ dom::EventTarget* GetOriginalDOMEventTarget() const;
+
void AssignEventData(const WidgetEvent& aEvent, bool aCopyTargets)
{
// mClass should be initialized with the constructor.
diff --git a/widget/WidgetEventImpl.cpp b/widget/WidgetEventImpl.cpp
index 7dd292cb0..59c80672b 100644
--- a/widget/WidgetEventImpl.cpp
+++ b/widget/WidgetEventImpl.cpp
@@ -12,6 +12,7 @@
#include "mozilla/Preferences.h"
#include "mozilla/TextEvents.h"
#include "mozilla/TouchEvents.h"
+#include "nsIDOMEventTarget.h"
#include "nsPrintfCString.h"
namespace mozilla {
@@ -411,6 +412,39 @@ WidgetEvent::IsAllowedToDispatchDOMEvent() const
}
/******************************************************************************
+ * mozilla::WidgetEvent
+ *
+ * Misc methods.
+ ******************************************************************************/
+
+static dom::EventTarget*
+GetTargetForDOMEvent(nsIDOMEventTarget* aTarget)
+{
+ return aTarget ? aTarget->GetTargetForDOMEvent() : nullptr;
+}
+
+dom::EventTarget*
+WidgetEvent::GetDOMEventTarget() const
+{
+ return GetTargetForDOMEvent(mTarget);
+}
+
+dom::EventTarget*
+WidgetEvent::GetCurrentDOMEventTarget() const
+{
+ return GetTargetForDOMEvent(mCurrentTarget);
+}
+
+dom::EventTarget*
+WidgetEvent::GetOriginalDOMEventTarget() const
+{
+ if (mOriginalTarget) {
+ return GetTargetForDOMEvent(mOriginalTarget);
+ }
+ return GetDOMEventTarget();
+}
+
+/******************************************************************************
* mozilla::WidgetInputEvent
******************************************************************************/