fixing firefox issues

This commit is contained in:
DadaMonad 2015-01-22 23:26:30 +00:00
parent b39e9d6450
commit f23bb36635
7 changed files with 102 additions and 85 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -184,7 +184,7 @@ module.exports = (HB)->
break break
d = (new types.Delete undefined, o).execute() d = (new types.Delete undefined, o).execute()
o = o.next_cl o = o.next_cl
while (not (o instanceof types.Delimiter)) or o.isDeleted() while (not (o instanceof types.Delimiter)) and o.isDeleted()
o = o.next_cl o = o.next_cl
delete_ops.push d._encode() delete_ops.push d._encode()
@ @
@ -338,7 +338,7 @@ module.exports = (HB)->
if range.right > textnode.length if range.right > textnode.length
range.right = textnode.length range.right = textnode.length
range.left = Math.min range.left, range.right range.left = Math.min range.left, range.right
r = new Range() r = document.createRange()
r.setStart(textnode, range.left) r.setStart(textnode, range.left)
r.setEnd(textnode, range.right) r.setEnd(textnode, range.right)
s = window.getSelection() s = window.getSelection()
@ -381,11 +381,11 @@ module.exports = (HB)->
# consume all text-insert changes. # consume all text-insert changes.
textfield.onkeypress = (event)-> textfield.onkeypress = (event)->
creator_token = true
if word.is_deleted if word.is_deleted
# if word is deleted, do not do anything ever again # if word is deleted, do not do anything ever again
textfield.onkeypress = null textfield.onkeypress = null
return true return true
creator_token = true
char = null char = null
if event.key? if event.key?
if event.charCode is 32 if event.charCode is 32
@ -396,7 +396,9 @@ module.exports = (HB)->
char = event.key char = event.key
else else
char = window.String.fromCharCode event.keyCode char = window.String.fromCharCode event.keyCode
if char.length > 0 if char.length > 1
return true
else if char.length > 0
r = createRange() r = createRange()
pos = Math.min r.left, r.right pos = Math.min r.left, r.right
diff = Math.abs(r.right - r.left) diff = Math.abs(r.right - r.left)
@ -405,10 +407,10 @@ module.exports = (HB)->
r.left = pos + char.length r.left = pos + char.length
r.right = r.left r.right = r.left
writeRange r writeRange r
event.preventDefault()
else event.preventDefault()
event.preventDefault()
creator_token = false creator_token = false
false
textfield.onpaste = (event)-> textfield.onpaste = (event)->
if word.is_deleted if word.is_deleted
@ -437,7 +439,7 @@ module.exports = (HB)->
textfield.onkeydown = null textfield.onkeydown = null
return true return true
r = createRange() r = createRange()
pos = Math.min r.left, r.right pos = Math.min(r.left, r.right, word.val().length)
diff = Math.abs(r.left - r.right) diff = Math.abs(r.left - r.right)
if event.keyCode? and event.keyCode is 8 # Backspace if event.keyCode? and event.keyCode is 8 # Backspace
if diff > 0 if diff > 0
@ -447,10 +449,7 @@ module.exports = (HB)->
writeRange r writeRange r
else else
if event.ctrlKey? and event.ctrlKey if event.ctrlKey? and event.ctrlKey
if textfield.value? val = word.val()
val = textfield.value
else
val = textfield.textContent
new_pos = pos new_pos = pos
del_length = 0 del_length = 0
if pos > 0 if pos > 0
@ -470,6 +469,8 @@ module.exports = (HB)->
r.right = pos-1 r.right = pos-1
writeRange r writeRange r
event.preventDefault() event.preventDefault()
creator_token = false
return false
else if event.keyCode? and event.keyCode is 46 # Delete else if event.keyCode? and event.keyCode is 46 # Delete
if diff > 0 if diff > 0
word.delete pos, diff word.delete pos, diff
@ -481,8 +482,12 @@ module.exports = (HB)->
r.left = pos r.left = pos
r.right = pos r.right = pos
writeRange r writeRange r
creator_token = false event.preventDefault()
true creator_token = false
return false
else
creator_token = false
true
# #
# @private # @private

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long