diff --git a/content/events/src/nsDOMEvent.cpp b/content/events/src/nsDOMEvent.cpp index f484f547f66a..30f2478ebf00 100644 --- a/content/events/src/nsDOMEvent.cpp +++ b/content/events/src/nsDOMEvent.cpp @@ -282,6 +282,7 @@ nsDOMEvent::PreventDefault() return NS_OK; } + NS_IMETHODIMP nsDOMEvent::GetView(nsIDOMAbstractView** aView) { @@ -939,6 +940,7 @@ nsDOMEvent::InitEvent(const nsString& aEventTypeArg, PRBool aCanBubbleArg, PRBoo NS_ENSURE_SUCCESS(SetEventType(aEventTypeArg), NS_ERROR_FAILURE); mEvent->flags |= aCanBubbleArg ? NS_EVENT_FLAG_NONE : NS_EVENT_FLAG_CANT_BUBBLE; mEvent->flags |= aCancelableArg ? NS_EVENT_FLAG_NONE : NS_EVENT_FLAG_CANT_CANCEL; + mEvent->internalAppFlags |= NS_APP_EVENT_FLAG_NONE; return NS_OK; } @@ -963,6 +965,7 @@ nsDOMEvent::InitKeyEvent(const nsString& aTypeArg, PRBool aCanBubbleArg, PRBool NS_ENSURE_SUCCESS(SetEventType(aTypeArg), NS_ERROR_FAILURE); mEvent->flags |= aCanBubbleArg ? NS_EVENT_FLAG_NONE : NS_EVENT_FLAG_CANT_BUBBLE; mEvent->flags |= aCancelableArg ? NS_EVENT_FLAG_NONE : NS_EVENT_FLAG_CANT_CANCEL; + mEvent->internalAppFlags |= NS_APP_EVENT_FLAG_NONE; return NS_OK; } @@ -1006,6 +1009,28 @@ nsDOMEvent::IsDispatchStopped(PRBool* aIsDispatchStopped) return NS_OK; } +NS_IMETHODIMP +nsDOMEvent::IsHandled(PRBool* aIsHandled) +{ + if (mEvent->internalAppFlags | NS_APP_EVENT_FLAG_HANDLED) { + *aIsHandled = PR_TRUE; + } else { + *aIsHandled = PR_FALSE; + } + return NS_OK; +} + +NS_IMETHODIMP +nsDOMEvent::SetHandled(PRBool aHandled) +{ + if(aHandled) + mEvent->internalAppFlags |= NS_APP_EVENT_FLAG_HANDLED; + else + mEvent->internalAppFlags &= ~NS_APP_EVENT_FLAG_HANDLED; + + return NS_OK; +} + NS_IMETHODIMP nsDOMEvent::GetInternalNSEvent(nsEvent** aNSEvent) { diff --git a/content/events/src/nsDOMEvent.h b/content/events/src/nsDOMEvent.h index 254a6321c44a..00d639069e5f 100644 --- a/content/events/src/nsDOMEvent.h +++ b/content/events/src/nsDOMEvent.h @@ -146,6 +146,8 @@ public: NS_IMETHOD SetCurrentTarget(nsIDOMEventTarget* aCurrentTarget); NS_IMETHOD IsDispatchStopped(PRBool* aIsDispatchStopped); NS_IMETHOD GetInternalNSEvent(nsEvent** aNSEvent); + NS_IMETHOD IsHandled(PRBool* aHandled); + NS_IMETHOD SetHandled(PRBool aHandled); // nsIPrivateTextEvent interface NS_IMETHOD GetText(nsString& aText); diff --git a/layout/events/src/nsDOMEvent.cpp b/layout/events/src/nsDOMEvent.cpp index f484f547f66a..30f2478ebf00 100644 --- a/layout/events/src/nsDOMEvent.cpp +++ b/layout/events/src/nsDOMEvent.cpp @@ -282,6 +282,7 @@ nsDOMEvent::PreventDefault() return NS_OK; } + NS_IMETHODIMP nsDOMEvent::GetView(nsIDOMAbstractView** aView) { @@ -939,6 +940,7 @@ nsDOMEvent::InitEvent(const nsString& aEventTypeArg, PRBool aCanBubbleArg, PRBoo NS_ENSURE_SUCCESS(SetEventType(aEventTypeArg), NS_ERROR_FAILURE); mEvent->flags |= aCanBubbleArg ? NS_EVENT_FLAG_NONE : NS_EVENT_FLAG_CANT_BUBBLE; mEvent->flags |= aCancelableArg ? NS_EVENT_FLAG_NONE : NS_EVENT_FLAG_CANT_CANCEL; + mEvent->internalAppFlags |= NS_APP_EVENT_FLAG_NONE; return NS_OK; } @@ -963,6 +965,7 @@ nsDOMEvent::InitKeyEvent(const nsString& aTypeArg, PRBool aCanBubbleArg, PRBool NS_ENSURE_SUCCESS(SetEventType(aTypeArg), NS_ERROR_FAILURE); mEvent->flags |= aCanBubbleArg ? NS_EVENT_FLAG_NONE : NS_EVENT_FLAG_CANT_BUBBLE; mEvent->flags |= aCancelableArg ? NS_EVENT_FLAG_NONE : NS_EVENT_FLAG_CANT_CANCEL; + mEvent->internalAppFlags |= NS_APP_EVENT_FLAG_NONE; return NS_OK; } @@ -1006,6 +1009,28 @@ nsDOMEvent::IsDispatchStopped(PRBool* aIsDispatchStopped) return NS_OK; } +NS_IMETHODIMP +nsDOMEvent::IsHandled(PRBool* aIsHandled) +{ + if (mEvent->internalAppFlags | NS_APP_EVENT_FLAG_HANDLED) { + *aIsHandled = PR_TRUE; + } else { + *aIsHandled = PR_FALSE; + } + return NS_OK; +} + +NS_IMETHODIMP +nsDOMEvent::SetHandled(PRBool aHandled) +{ + if(aHandled) + mEvent->internalAppFlags |= NS_APP_EVENT_FLAG_HANDLED; + else + mEvent->internalAppFlags &= ~NS_APP_EVENT_FLAG_HANDLED; + + return NS_OK; +} + NS_IMETHODIMP nsDOMEvent::GetInternalNSEvent(nsEvent** aNSEvent) { diff --git a/layout/events/src/nsDOMEvent.h b/layout/events/src/nsDOMEvent.h index 254a6321c44a..00d639069e5f 100644 --- a/layout/events/src/nsDOMEvent.h +++ b/layout/events/src/nsDOMEvent.h @@ -146,6 +146,8 @@ public: NS_IMETHOD SetCurrentTarget(nsIDOMEventTarget* aCurrentTarget); NS_IMETHOD IsDispatchStopped(PRBool* aIsDispatchStopped); NS_IMETHOD GetInternalNSEvent(nsEvent** aNSEvent); + NS_IMETHOD IsHandled(PRBool* aHandled); + NS_IMETHOD SetHandled(PRBool aHandled); // nsIPrivateTextEvent interface NS_IMETHOD GetText(nsString& aText);