fixed focus issue

This commit is contained in:
DadaMonad 2015-01-30 17:02:03 +00:00
parent 93e75e0111
commit 50fa81d191
8 changed files with 84 additions and 66 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -322,20 +322,23 @@ module.exports = function(HB) {
}; };
} else { } else {
createRange = function(fix) { createRange = function(fix) {
var clength, left, right, s; var clength, edited_element, range, s;
range = {};
s = dom_root.getSelection(); s = dom_root.getSelection();
clength = textfield.textContent.length; clength = textfield.textContent.length;
left = Math.min(s.anchorOffset, clength); range.left = Math.min(s.anchorOffset, clength);
right = Math.min(s.focusOffset, clength); range.right = Math.min(s.focusOffset, clength);
if (fix != null) { if (fix != null) {
left = fix(left); range.left = fix(range.left);
right = fix(right); range.right = fix(range.right);
} }
return { edited_element = s.focusNode;
left: left, if (edited_element === textfield || edited_element === textfield.childNodes[0]) {
right: right, range.isReal = true;
isReal: true } else {
}; range.isReal = false;
}
return range;
}; };
writeRange = function(range) { writeRange = function(range) {
var r, s, textnode; var r, s, textnode;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -315,18 +315,21 @@ module.exports = (HB)->
textfield.value = content textfield.value = content
else else
createRange = (fix)-> createRange = (fix)->
range = {}
s = dom_root.getSelection() s = dom_root.getSelection()
clength = textfield.textContent.length clength = textfield.textContent.length
left = Math.min s.anchorOffset, clength range.left = Math.min s.anchorOffset, clength
right = Math.min s.focusOffset, clength range.right = Math.min s.focusOffset, clength
if fix? if fix?
left = fix left range.left = fix range.left
right = fix right range.right = fix range.right
{
left: left edited_element = s.focusNode
right: right if edited_element is textfield or edited_element is textfield.childNodes[0]
isReal: true range.isReal = true
} else
range.isReal = false
range
writeRange = (range)-> writeRange = (range)->
writeContent word.val() writeContent word.val()

File diff suppressed because one or more lines are too long

2
y.js

File diff suppressed because one or more lines are too long