mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1193062 - Add fields to PanGestureInput and ScrollWheelInput. r=kats
We are going to create WidgetWheelEvents from them and need more information than what they currently have.
This commit is contained in:
parent
67df34c215
commit
a9ac0c9ff4
@ -225,6 +225,40 @@ MultiTouchInput::TransformToLocal(const gfx::Matrix4x4& aTransform)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
PanGestureInput::IsMomentum() const
|
||||
{
|
||||
switch (mType) {
|
||||
case PanGestureInput::PANGESTURE_MOMENTUMSTART:
|
||||
case PanGestureInput::PANGESTURE_MOMENTUMPAN:
|
||||
case PanGestureInput::PANGESTURE_MOMENTUMEND:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
WidgetWheelEvent
|
||||
PanGestureInput::ToWidgetWheelEvent(nsIWidget* aWidget) const
|
||||
{
|
||||
WidgetWheelEvent wheelEvent(true, NS_WHEEL_WHEEL, aWidget);
|
||||
wheelEvent.modifiers = this->modifiers;
|
||||
wheelEvent.time = mTime;
|
||||
wheelEvent.timeStamp = mTimeStamp;
|
||||
wheelEvent.refPoint =
|
||||
RoundedToInt(ViewAs<LayoutDevicePixel>(mPanStartPoint,
|
||||
PixelCastJustification::LayoutDeviceToScreenForUntransformedEvent));
|
||||
wheelEvent.buttons = 0;
|
||||
wheelEvent.deltaMode = nsIDOMWheelEvent::DOM_DELTA_PIXEL;
|
||||
wheelEvent.isMomentum = IsMomentum();
|
||||
wheelEvent.lineOrPageDeltaX = mLineOrPageDeltaX;
|
||||
wheelEvent.lineOrPageDeltaY = mLineOrPageDeltaY;
|
||||
wheelEvent.deltaX = mPanDisplacement.x;
|
||||
wheelEvent.deltaY = mPanDisplacement.y;
|
||||
wheelEvent.mFlags.mHandledByAPZ = true;
|
||||
return wheelEvent;
|
||||
}
|
||||
|
||||
bool
|
||||
PanGestureInput::TransformToLocal(const gfx::Matrix4x4& aTransform)
|
||||
{
|
||||
@ -264,6 +298,39 @@ TapGestureInput::TransformToLocal(const gfx::Matrix4x4& aTransform)
|
||||
return true;
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
DeltaModeForDeltaType(ScrollWheelInput::ScrollDeltaType aDeltaType)
|
||||
{
|
||||
switch (aDeltaType) {
|
||||
case ScrollWheelInput::SCROLLDELTA_LINE:
|
||||
return nsIDOMWheelEvent::DOM_DELTA_LINE;
|
||||
case ScrollWheelInput::SCROLLDELTA_PIXEL:
|
||||
default:
|
||||
return nsIDOMWheelEvent::DOM_DELTA_PIXEL;
|
||||
}
|
||||
}
|
||||
|
||||
WidgetWheelEvent
|
||||
ScrollWheelInput::ToWidgetWheelEvent(nsIWidget* aWidget) const
|
||||
{
|
||||
WidgetWheelEvent wheelEvent(true, NS_WHEEL_WHEEL, aWidget);
|
||||
wheelEvent.modifiers = this->modifiers;
|
||||
wheelEvent.time = mTime;
|
||||
wheelEvent.timeStamp = mTimeStamp;
|
||||
wheelEvent.refPoint =
|
||||
RoundedToInt(ViewAs<LayoutDevicePixel>(mOrigin,
|
||||
PixelCastJustification::LayoutDeviceToScreenForUntransformedEvent));
|
||||
wheelEvent.buttons = 0;
|
||||
wheelEvent.deltaMode = DeltaModeForDeltaType(mDeltaType);
|
||||
wheelEvent.isMomentum = mIsMomentum;
|
||||
wheelEvent.deltaX = mDeltaX;
|
||||
wheelEvent.deltaY = mDeltaY;
|
||||
wheelEvent.lineOrPageDeltaX = mLineOrPageDeltaX;
|
||||
wheelEvent.lineOrPageDeltaY = mLineOrPageDeltaY;
|
||||
wheelEvent.mFlags.mHandledByAPZ = true;
|
||||
return wheelEvent;
|
||||
}
|
||||
|
||||
bool
|
||||
ScrollWheelInput::TransformToLocal(const gfx::Matrix4x4& aTransform)
|
||||
{
|
||||
|
@ -307,10 +307,16 @@ public:
|
||||
: InputData(PANGESTURE_INPUT, aTime, aTimeStamp, aModifiers),
|
||||
mType(aType),
|
||||
mPanStartPoint(aPanStartPoint),
|
||||
mPanDisplacement(aPanDisplacement)
|
||||
mPanDisplacement(aPanDisplacement),
|
||||
mLineOrPageDeltaX(0),
|
||||
mLineOrPageDeltaY(0)
|
||||
{
|
||||
}
|
||||
|
||||
bool IsMomentum() const;
|
||||
|
||||
WidgetWheelEvent ToWidgetWheelEvent(nsIWidget* aWidget) const;
|
||||
|
||||
bool TransformToLocal(const gfx::Matrix4x4& aTransform);
|
||||
|
||||
PanGestureType mType;
|
||||
@ -323,6 +329,10 @@ public:
|
||||
// coordinates of the APZC receiving the pan. These are set and used by APZ.
|
||||
ParentLayerPoint mLocalPanStartPoint;
|
||||
ParentLayerPoint mLocalPanDisplacement;
|
||||
|
||||
// See lineOrPageDeltaX/Y on WidgetWheelEvent.
|
||||
int32_t mLineOrPageDeltaX;
|
||||
int32_t mLineOrPageDeltaY;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -503,9 +513,13 @@ public:
|
||||
mScrollMode(aScrollMode),
|
||||
mOrigin(aOrigin),
|
||||
mDeltaX(aDeltaX),
|
||||
mDeltaY(aDeltaY)
|
||||
mDeltaY(aDeltaY),
|
||||
mLineOrPageDeltaX(0),
|
||||
mLineOrPageDeltaY(0),
|
||||
mIsMomentum(false)
|
||||
{}
|
||||
|
||||
WidgetWheelEvent ToWidgetWheelEvent(nsIWidget* aWidget) const;
|
||||
bool TransformToLocal(const gfx::Matrix4x4& aTransform);
|
||||
|
||||
ScrollDeltaType mDeltaType;
|
||||
@ -525,6 +539,12 @@ public:
|
||||
// The location of the scroll in local coordinates. This is set and used by
|
||||
// APZ.
|
||||
ParentLayerPoint mLocalOrigin;
|
||||
|
||||
// See lineOrPageDeltaX/Y on WidgetWheelEvent.
|
||||
int32_t mLineOrPageDeltaX;
|
||||
int32_t mLineOrPageDeltaY;
|
||||
|
||||
bool mIsMomentum;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
Loading…
Reference in New Issue
Block a user