more text bind issues

This commit is contained in:
DadaMonad 2015-01-19 06:46:08 +00:00
parent bc1c1f7bcf
commit 00458bab58
8 changed files with 253 additions and 143 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

@ -45,10 +45,10 @@ window.onload = function(){
for(var i=0; i<events.length; i++){ for(var i=0; i<events.length; i++){
var event = events[i]; var event = events[i];
if(event.name === "textfield" && event.type !== "delete"){ if(event.name === "textfield" && event.type !== "delete"){
yatta.val("textfield").bind(textbox); //yatta.val("textfield").bind(textbox);
yatta.val("textfield").bind(document.querySelector("h1")) yatta.val("textfield").bind(document.querySelector("h1"))
} }
} }
}); });
yatta.val("textfield","", "mutable"); yatta.val("textfield","stuff", "mutable");
}; };

View File

@ -285,6 +285,7 @@ module.exports = (HB)->
for t in @textfields for t in @textfields
if t is textfield if t is textfield
return return
creator_token = false;
word = @ word = @
textfield.value = @val() textfield.value = @val()
@ -303,7 +304,9 @@ module.exports = (HB)->
} }
writeRange = (range)-> writeRange = (range)->
writeContent word.val()
textfield.setSelectionRange range.left, range.right textfield.setSelectionRange range.left, range.right
writeContent = (content)-> writeContent = (content)->
textfield.value = content textfield.value = content
else else
@ -322,8 +325,15 @@ module.exports = (HB)->
} }
writeRange = (range)-> writeRange = (range)->
writeContent word.val()
textnode = textfield.childNodes[0] textnode = textfield.childNodes[0]
if range.isReal and textnode? if range.isReal and textnode?
if range.left < 0
range.left = 0
range.right = Math.max range.left, range.right
if range.right > textnode.length
range.right = textnode.length
range.left = Math.min range.left, range.right
r = new Range() r = new Range()
r.setStart(textnode, range.left) r.setStart(textnode, range.left)
r.setEnd(textnode, range.right) r.setEnd(textnode, range.right)
@ -342,6 +352,7 @@ module.exports = (HB)->
@observe (events)-> @observe (events)->
for event in events for event in events
if not creator_token
if event.type is "insert" if event.type is "insert"
o_pos = event.position o_pos = event.position
fix = (cursor)-> fix = (cursor)->
@ -351,7 +362,6 @@ module.exports = (HB)->
cursor += 1 cursor += 1
cursor cursor
r = createRange fix r = createRange fix
writeContent word.val()
writeRange r writeRange r
else if event.type is "delete" else if event.type is "delete"
@ -363,11 +373,11 @@ module.exports = (HB)->
cursor -= 1 cursor -= 1
cursor cursor
r = createRange fix r = createRange fix
writeContent word.val()
writeRange r writeRange r
# 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
@ -394,6 +404,7 @@ module.exports = (HB)->
event.preventDefault() event.preventDefault()
else else
event.preventDefault() event.preventDefault()
creator_token = false
textfield.onpaste = (event)-> textfield.onpaste = (event)->
if word.is_deleted if word.is_deleted
@ -416,6 +427,7 @@ module.exports = (HB)->
# Every browser supports keyCode. Let's stick with it for now.. # Every browser supports keyCode. Let's stick with it for now..
# #
textfield.onkeydown = (event)-> textfield.onkeydown = (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.onkeydown = null textfield.onkeydown = null
@ -448,7 +460,11 @@ module.exports = (HB)->
r.right = new_pos r.right = new_pos
writeRange r writeRange r
else else
word.delete (pos-1), 1 if pos > 0
word.delete (pos-1), 1
r.left = pos-1
r.right = pos-1
writeRange r
event.preventDefault() event.preventDefault()
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
@ -461,6 +477,8 @@ module.exports = (HB)->
r.left = pos r.left = pos
r.right = pos r.right = pos
writeRange r writeRange r
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