dom/events/MouseScrollEvent.cpp

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/dom/events/MouseScrollEvent.cpp	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,100 @@
     1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.8 +
     1.9 +#include "mozilla/dom/MouseScrollEvent.h"
    1.10 +#include "mozilla/MouseEvents.h"
    1.11 +#include "prtime.h"
    1.12 +
    1.13 +namespace mozilla {
    1.14 +namespace dom {
    1.15 +
    1.16 +MouseScrollEvent::MouseScrollEvent(EventTarget* aOwner,
    1.17 +                                   nsPresContext* aPresContext,
    1.18 +                                   WidgetMouseScrollEvent* aEvent)
    1.19 +  : MouseEvent(aOwner, aPresContext,
    1.20 +               aEvent ? aEvent : new WidgetMouseScrollEvent(false, 0, nullptr))
    1.21 +{
    1.22 +  if (aEvent) {
    1.23 +    mEventIsInternal = false;
    1.24 +  } else {
    1.25 +    mEventIsInternal = true;
    1.26 +    mEvent->time = PR_Now();
    1.27 +    mEvent->refPoint.x = mEvent->refPoint.y = 0;
    1.28 +    static_cast<WidgetMouseEventBase*>(mEvent)->inputSource =
    1.29 +      nsIDOMMouseEvent::MOZ_SOURCE_UNKNOWN;
    1.30 +  }
    1.31 +
    1.32 +  mDetail = mEvent->AsMouseScrollEvent()->delta;
    1.33 +}
    1.34 +
    1.35 +NS_IMPL_ADDREF_INHERITED(MouseScrollEvent, MouseEvent)
    1.36 +NS_IMPL_RELEASE_INHERITED(MouseScrollEvent, MouseEvent)
    1.37 +
    1.38 +NS_INTERFACE_MAP_BEGIN(MouseScrollEvent)
    1.39 +  NS_INTERFACE_MAP_ENTRY(nsIDOMMouseScrollEvent)
    1.40 +NS_INTERFACE_MAP_END_INHERITING(MouseEvent)
    1.41 +
    1.42 +NS_IMETHODIMP
    1.43 +MouseScrollEvent::InitMouseScrollEvent(const nsAString& aType,
    1.44 +                                       bool aCanBubble,
    1.45 +                                       bool aCancelable,
    1.46 +                                       nsIDOMWindow* aView,
    1.47 +                                       int32_t aDetail,
    1.48 +                                       int32_t aScreenX,
    1.49 +                                       int32_t aScreenY,
    1.50 +                                       int32_t aClientX,
    1.51 +                                       int32_t aClientY,
    1.52 +                                       bool aCtrlKey,
    1.53 +                                       bool aAltKey,
    1.54 +                                       bool aShiftKey,
    1.55 +                                       bool aMetaKey,
    1.56 +                                       uint16_t aButton,
    1.57 +                                       nsIDOMEventTarget* aRelatedTarget,
    1.58 +                                       int32_t aAxis)
    1.59 +{
    1.60 +  nsresult rv =
    1.61 +    MouseEvent::InitMouseEvent(aType, aCanBubble, aCancelable, aView, aDetail,
    1.62 +                               aScreenX, aScreenY, aClientX, aClientY,
    1.63 +                               aCtrlKey, aAltKey, aShiftKey, aMetaKey, aButton,
    1.64 +                               aRelatedTarget);
    1.65 +  NS_ENSURE_SUCCESS(rv, rv);
    1.66 +  mEvent->AsMouseScrollEvent()->isHorizontal = (aAxis == HORIZONTAL_AXIS);
    1.67 +  return NS_OK;
    1.68 +}
    1.69 +
    1.70 +
    1.71 +NS_IMETHODIMP
    1.72 +MouseScrollEvent::GetAxis(int32_t* aResult)
    1.73 +{
    1.74 +  NS_ENSURE_ARG_POINTER(aResult);
    1.75 +  *aResult = Axis();
    1.76 +  return NS_OK;
    1.77 +}
    1.78 +
    1.79 +int32_t
    1.80 +MouseScrollEvent::Axis()
    1.81 +{
    1.82 +  return mEvent->AsMouseScrollEvent()->isHorizontal ?
    1.83 +           static_cast<int32_t>(HORIZONTAL_AXIS) :
    1.84 +           static_cast<int32_t>(VERTICAL_AXIS);
    1.85 +}
    1.86 +
    1.87 +} // namespace dom
    1.88 +} // namespace mozilla
    1.89 +
    1.90 +using namespace mozilla;
    1.91 +using namespace dom;
    1.92 +
    1.93 +nsresult
    1.94 +NS_NewDOMMouseScrollEvent(nsIDOMEvent** aInstancePtrResult,
    1.95 +                          EventTarget* aOwner,
    1.96 +                          nsPresContext* aPresContext,
    1.97 +                          WidgetMouseScrollEvent* aEvent)
    1.98 +{
    1.99 +  MouseScrollEvent* it = new MouseScrollEvent(aOwner, aPresContext, aEvent);
   1.100 +  NS_ADDREF(it);
   1.101 +  *aInstancePtrResult = static_cast<Event*>(it);
   1.102 +  return NS_OK;
   1.103 +}

mercurial