Skip to content

Commit

Permalink
Fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
koenbok committed Jun 19, 2014
1 parent e3e38a1 commit 4235f0c
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 15 deletions.
8 changes: 5 additions & 3 deletions framer/Extras/MobileScrollFix.coffee
Expand Up @@ -24,6 +24,7 @@ exports.enable = ->
super options

@on "change:scrollVertical", @_updateScrollListeners

This comment has been minimized.

Copy link
@tisho

tisho Jun 19, 2014

Contributor

You might want to double check this, but I think change:* fires regardless of whether the value has changed or not. This means that repeatedly setting scrollVertical to true on a layer would result in multiple listeners getting added. This is why in the original scripts I always call @off without even checking if scrollVertical is true.

@_updateScrollListeners()

_updateScrollListeners: =>
if @scrollVertical is true
Expand All @@ -35,11 +36,12 @@ exports.enable = ->

__createRootElement: =>

element = super
element.addEventListener "touchmove", (event) ->
rootElement = super

rootElement.addEventListener "touchmove", (event) ->
event.preventDefault()

return element
return rootElement

# Override the standard window Layer with this patched one
window.Layer = window.Framer.Layer = MobileScrollFixLayer
2 changes: 1 addition & 1 deletion framer/Framer.coffee
Expand Up @@ -36,7 +36,7 @@ window.Framer = Framer if window
require "./Compat"

# Fix for mobile scrolling
Framer.Extras.MobileScrollFix.enable() if Utils.isMobile
Framer.Extras.MobileScrollFix.enable() if Utils.isMobile()

# Set the defaults
Defaults = (require "./Defaults").Defaults
Expand Down
24 changes: 13 additions & 11 deletions framer/Layer.coffee
Expand Up @@ -563,7 +563,7 @@ class exports.Layer extends BaseClass
##############################################################
## EVENTS

addListener: (event, originalListener) =>
addListener: (eventName, originalListener) =>

# # Modify the scope to be the calling object, just like jquery
# # also add the object as the last argument
Expand All @@ -575,29 +575,31 @@ class exports.Layer extends BaseClass
originalListener.modifiedListener = listener

# Listen to dom events on the element
super event, listener
@_element.addEventListener event, listener
super eventName, listener
@_element.addEventListener eventName, listener

@_eventListeners ?= {}
@_eventListeners[event] ?= []
@_eventListeners[event].push listener
@_eventListeners[eventName] ?= []
@_eventListeners[eventName].push listener

# We want to make sure we listen to these events
@ignoreEvents = false
# We want to make sure we listen to these events, but we can safely
# ignore it for change events
if not _.startsWith eventName, "change:"
@ignoreEvents = false

removeListener: (event, listener) ->
removeListener: (eventName, listener) ->

# If the original listener was modified, remove that
# one instead
if listener.modifiedListener
listener = listener.modifiedListener

super event, listener
super eventName, listener

@_element.removeEventListener event, listener
@_element.removeEventListener eventName, listener

if @_eventListeners
@_eventListeners[event] = _.without @_eventListeners[event], listener
@_eventListeners[eventName] = _.without @_eventListeners[eventName], listener

removeAllListeners: ->

Expand Down
13 changes: 13 additions & 0 deletions test/init.coffee
@@ -1,5 +1,18 @@
window.console.debug = (v) ->

hideFramerRoot = ->

element = document.getElementById "FramerRoot"

if not element
return Utils.delay 0.01, hideFramerRoot

_.extend element.style,
top: "-10000000px"
left: "-10000000px"

hideFramerRoot()

require "./tests/EventEmitterTest"
require "./tests/UtilsTest"
require "./tests/BaseClassTest"
Expand Down

0 comments on commit 4235f0c

Please sign in to comment.