setCurrentElement: function(element, params) {
params = _.extend({caretTo: 'end'}, params);
setCurrentElement: function(element, params) {
params = _.extend({caretTo: 'end'}, params);
- var findFirstDirectTextChild = function(e) {
+ var findFirstDirectTextChild = function(e, nodeToLand) {
+ var byBrowser = this.getCursor().getPosition().element;
+ if(byBrowser && byBrowser.parent().sameNode(nodeToLand))
+ return byBrowser;
var children = e.children();
for(var i = 0; i < children.length; i++) {
if(children[i] instanceof documentElement.DocumentTextElement)
return children[i];
}
return null;
var children = e.children();
for(var i = 0; i < children.length; i++) {
if(children[i] instanceof documentElement.DocumentTextElement)
return children[i];
}
return null;
var _markAsCurrent = function(element) {
if(element instanceof documentElement.DocumentTextElement) {
this.wrapper.find('.current-text-element').removeClass('current-text-element');
var _markAsCurrent = function(element) {
if(element instanceof documentElement.DocumentTextElement) {
this.wrapper.find('.current-text-element').removeClass('current-text-element');
currentTextElement = this.getCurrentTextElement(),
currentNodeElement = this.getCurrentNodeElement();
currentTextElement = this.getCurrentTextElement(),
currentNodeElement = this.getCurrentNodeElement();
this._moveCaretToTextElement(textElementToLand, params.caretTo); // as method on element?
if(!(textElementToLand.sameNode(currentTextElement)))
this.publisher('currentTextElementSet', element);
this._moveCaretToTextElement(textElementToLand, params.caretTo); // as method on element?
if(!(textElementToLand.sameNode(currentTextElement)))
this.publisher('currentTextElementSet', element);
}
if(!(currentNodeElement && currentNodeElement.sameNode(nodeElementToLand))) {
_markAsCurrent(nodeElementToLand);
}
if(!(currentNodeElement && currentNodeElement.sameNode(nodeElementToLand))) {
_markAsCurrent(nodeElementToLand);