Skip to content

Commit

Permalink
Fixed scrolling, dragging and pinching again
Browse files Browse the repository at this point in the history
  • Loading branch information
nvh committed Dec 21, 2017
1 parent 3d6094a commit 206fb0e
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 27 deletions.
14 changes: 5 additions & 9 deletions framer/LayerDraggable.coffee
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -157,11 +157,10 @@ class exports.LayerDraggable extends BaseClass
# Extract the event (mobile may have multiple) # Extract the event (mobile may have multiple)
touchEvent = Events.touchEvent(event) touchEvent = Events.touchEvent(event)



# TODO: we should use the event velocity # TODO: we should use the event velocity
@_eventBuffer.push @_eventBuffer.push
x: event.point.x x: touchEvent.clientX
y: event.point.y y: touchEvent.clientY
t: Date.now() t: Date.now()


# Store original layer position # Store original layer position
Expand Down Expand Up @@ -197,16 +196,13 @@ class exports.LayerDraggable extends BaseClass


event.preventDefault() event.preventDefault()
event.stopPropagation() if @propagateEvents is false event.stopPropagation() if @propagateEvents is false
# print event.touches[0].identifier, event.touches[1].identifier
touchEvent = Events.touchEvent(event) touchEvent = Events.touchEvent(event)
point = {x: touchEvent.clientX, y: touchEvent.clientY}
touchEvent.point = Utils.convertPointFromContext(point, @layer, true)
touchEvent.contextPoint = Utils.convertPointFromContext(point, @layer.context, true)
@_lastEvent = touchEvent @_lastEvent = touchEvent


@_eventBuffer.push @_eventBuffer.push
x: touchEvent.point.x x: touchEvent.clientX
y: touchEvent.point.y y: touchEvent.clientY
t: Date.now() # We don't use timeStamp because it's different on Chrome/Safari t: Date.now() # We don't use timeStamp because it's different on Chrome/Safari


point = _.clone(@_point) point = _.clone(@_point)
Expand Down
4 changes: 3 additions & 1 deletion framer/LayerPinchable.coffee
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -52,10 +52,12 @@ class exports.LayerPinchable extends BaseClass
#@_centerOrigin(event) if @centerOrigin #@_centerOrigin(event) if @centerOrigin


_centerOrigin: (event) => _centerOrigin: (event) =>

topInSuperBefore = Utils.convertPoint({}, @layer, @layer.superLayer) topInSuperBefore = Utils.convertPoint({}, @layer, @layer.superLayer)
pinchLocation = Screen.convertPointToLayer(event.touchCenter, @layer) pinchLocation = Utils.convertPointFromContext(event.touchCenter, @layer, true, true)
@layer.originX = pinchLocation.x / @layer.width @layer.originX = pinchLocation.x / @layer.width
@layer.originY = pinchLocation.y / @layer.height @layer.originY = pinchLocation.y / @layer.height

topInSuperAfter = Utils.convertPoint({}, @layer, @layer.superLayer) topInSuperAfter = Utils.convertPoint({}, @layer, @layer.superLayer)
originDelta = originDelta =
x: topInSuperAfter.x - topInSuperBefore.x x: topInSuperAfter.x - topInSuperBefore.x
Expand Down
20 changes: 7 additions & 13 deletions test/tests/LayerDraggableTest.coffee
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ describe "Layer", ->
a2.isAnimating.should.equal true a2.isAnimating.should.equal true
a3.isAnimating.should.equal true a3.isAnimating.should.equal true


event = Framer.GestureInputRecognizer._getGestureEvent(document.createEvent("MouseEvent")) layer.draggable.touchStart(document.createEvent("MouseEvent"))
layer.draggable.touchStart(event)


a1.isAnimating.should.equal false a1.isAnimating.should.equal false
a2.isAnimating.should.equal false a2.isAnimating.should.equal false
Expand All @@ -25,25 +24,20 @@ describe "Layer", ->
describe "Simulation", -> describe "Simulation", ->
it "should be cancelled when animating the same property", (done) -> it "should be cancelled when animating the same property", (done) ->
layerA = new Layer layerA = new Layer
start = document.createEvent("MouseEvent")
event = Framer.GestureInputRecognizer._getGestureEvent(start)
layerA.draggable._touchStart(start)
time = 0.001 time = 0.001
for i in [0..3] for i in [0..3]
do (i) -> do (i) ->
Utils.delay i*time, -> Utils.delay i*time, ->
move = document.createEvent("MouseEvent") move = document.createEvent("MouseEvent")
move.touches = [ move.delta =
{pageX: i, pageY: 0}
]
event = Framer.GestureInputRecognizer._getGestureEvent(move)
event.delta =
x: i x: i
y: 0 y: 0
layerA.draggable._touchMove(event) move.touches = [
{clientX: i, clientY: 0}
]
layerA.draggable._touchMove(move)
Utils.delay i*time, -> Utils.delay i*time, ->
event = Framer.GestureInputRecognizer._getGestureEvent(document.createEvent("MouseEvent")) layerA.draggable._touchEnd(document.createEvent("MouseEvent"))
layerA.draggable._touchEnd(event)
layerA.onDragEnd -> layerA.onDragEnd ->
simulation = layerA.draggable._simulation.x simulation = layerA.draggable._simulation.x
a = @animate a = @animate
Expand Down
8 changes: 4 additions & 4 deletions test/tests/ScrollComponentTest.coffee
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -119,13 +119,13 @@ describe "ScrollComponent", ->
done("expected up+, down+, null+, but got: #{moves}") done("expected up+, down+, null+, but got: #{moves}")


# TODO instead of actually taking time, trick time # TODO instead of actually taking time, trick time
draggable._touchStart({point: {x: 100, y: 100}, preventDefault: (->), stopPropagation: (->)}) draggable._touchStart({clientX: 100, clientY: 100, preventDefault: (->), stopPropagation: (->)})
Utils.delay 0.01, -> Utils.delay 0.01, ->
draggable._touchMove({clientX: 100, clientY: 111, point: {x: 100, y: 111}, preventDefault: (->), stopPropagation: (->), delta: {x: 0, y: 11}}) draggable._touchMove({clientX: 100, clientY: 111, preventDefault: (->), stopPropagation: (->), delta: {x: 0, y: 11}})
Utils.delay 0.20, -> # enough time to set velocity to zero Utils.delay 0.20, -> # enough time to set velocity to zero
draggable._touchMove({clientX: 100, clientY: 112, point: {x: 100, y: 112}, preventDefault: (->), stopPropagation: (->), delta: {x: 0, y: 1}}) draggable._touchMove({clientX: 100, clientY: 112, preventDefault: (->), stopPropagation: (->), delta: {x: 0, y: 1}})
Utils.delay 0.21, -> Utils.delay 0.21, ->
draggable._touchEnd({clientX: 100, clientY: 112, point: {x: 100, y: 112}, preventDefault: (->), stopPropagation: (->), delta: {x: 0, y: 0}}) draggable._touchEnd({clientX: 100, clientY: 112, preventDefault: (->), stopPropagation: (->), delta: {x: 0, y: 0}})


describe "PageComponent", -> describe "PageComponent", ->
it "should fire scroll events", (done) -> it "should fire scroll events", (done) ->
Expand Down

0 comments on commit 206fb0e

Please sign in to comment.