Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
sderickson committed Jan 7, 2014
1 parent a4fa410 commit 250b732
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 17 deletions.
20 changes: 20 additions & 0 deletions app/application.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ GPlusHandler = require 'lib/GPlusHandler'
locale = require 'locale/locale'
{me} = require 'lib/auth'
Tracker = require 'lib/Tracker'
CocoView = require 'views/kinds/CocoView'

COMMON_FILES = ['/images/modal_background.png', '/images/level/code_palette_background.png']
preload = (arrayOfImages) ->
Expand All @@ -15,6 +16,9 @@ Application = initialize: ->
@tracker = new Tracker()
new FacebookHandler()
new GPlusHandler()
$(document).bind 'keydown', preventBackspace
console.log 'done applied it'

preload(COMMON_FILES)
$.i18n.init {
lng: me?.lang() ? 'en'
Expand All @@ -32,3 +36,19 @@ Application = initialize: ->

module.exports = Application
window.application = Application


preventBackspace = (event) ->
console.log 'PREVENT', event
if event.keyCode is 8 and not elementAcceptsKeystrokes(event.srcElement or event.target)
event.preventDefault()
# event.preventDefault()

elementAcceptsKeystrokes = (el) ->
# http://stackoverflow.com/questions/1495219/how-can-i-prevent-the-backspace-key-from-navigating-back
el ?= document.activeElement
tag = el.tagName.toLowerCase()
type = el.type?.toLowerCase()
textInputTypes = ['text', 'password', 'file', 'number', 'search', 'url', 'tel', 'email', 'date', 'month', 'week', 'time', 'datetimelocal']
# not radio, checkbox, range, or color
return (tag is 'textarea' or (tag is 'input' and type in textInputTypes) or el.contentEditable in ["", "true"]) and not (el.readOnly or el.disabled)
12 changes: 0 additions & 12 deletions app/views/kinds/CocoView.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -181,18 +181,6 @@ module.exports = class CocoView extends Backbone.View
for viewID, view of @subviews
view.stopListeningToShortcuts()

preventBackspace: (event) ->
event.preventDefault() if event.keyCode is 8 and not @elementAcceptsKeystrokes(event.srcElement or event.target)

elementAcceptsKeystrokes: (el) ->
# http://stackoverflow.com/questions/1495219/how-can-i-prevent-the-backspace-key-from-navigating-back
el ?= document.activeElement
tag = el.tagName.toLowerCase()
type = el.type?.toLowerCase()
textInputTypes = ['text', 'password', 'file', 'number', 'search', 'url', 'tel', 'email', 'date', 'month', 'week', 'time', 'datetimelocal']
# not radio, checkbox, range, or color
return (tag is 'textarea' or (tag is 'input' and type in textInputTypes) or el.contentEditable in ["", "true"]) and not (el.readOnly or el.disabled)

# Subviews

insertSubView: (view) ->
Expand Down
1 change: 0 additions & 1 deletion app/views/kinds/ModalView.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ module.exports = class ModalView extends CocoView

shortcuts:
'esc': 'hide'
'backspace, delete': 'preventBackspace'

constructor: (options) ->
options ?= {}
Expand Down
4 changes: 0 additions & 4 deletions app/views/kinds/RootView.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@ module.exports = class RootView extends CocoView
"click #logout-button": "logoutAccount"
'change .language-dropdown': 'showDiplomatSuggestionModal'

shortcuts:
'backspace, delete': 'preventBackspace'
# 'backspace': 'preventBackspace'

afterRender: ->
super()
@buildLanguages()
Expand Down
3 changes: 3 additions & 0 deletions app/views/play/level/tome/spell_view.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ module.exports = class SpellView extends View
'tome:reload-code': 'onCodeReload'
'modal-closed': 'focus'
'focus-editor': 'focus'

events:
'click .ace': -> console.log 'clicked ace', @

constructor: (options) ->
super options
Expand Down

0 comments on commit 250b732

Please sign in to comment.