keyboard.handleKey(e, this);
}.bind(this));
+ var mouseDown;
+ this.wrapper.on('mousedown', '[document-node-element], [document-text-element]', function(e) {
+ mouseDown = e.target;
+ });
+
this.wrapper.on('click', '[document-node-element], [document-text-element]', function(e) {
e.stopPropagation();
- canvas.setCurrentElement(canvas.getDocumentElement(e.currentTarget), {caretTo: false});
+ if(e.originalEvent.detail === 3) {
+ e.preventDefault();
+ canvas._moveCaretToTextElement(canvas.getDocumentElement(e.currentTarget), 'whole');
+ } else {
+ if(mouseDown === e.target) {
+ canvas.setCurrentElement(canvas.getDocumentElement(e.currentTarget), {caretTo: false});
+ }
+ }
});
this.wrapper.on('paste', function(e) {
canvas._moveCaretToTextElement(canvas.getDocumentElement(mutation.target), 'end');
}
observer.observe(canvas.wrapper[0], config);
- canvas.publisher('contentChanged');
var textElement = canvas.getDocumentElement(mutation.target),
toSet = mutation.target.data !== utils.unicode.ZWS ? mutation.target.data : '';
} else {
this.wrapper.find('.current-node-element').removeClass('current-node-element');
element._container().addClass('current-node-element');
- this.publisher('currentElementChanged', element);
}
}.bind(this);
range.setStart(node, where);
}
- var collapseArg = true;
- if(where === 'end') {
- collapseArg = false;
+ if(where !== 'whole') {
+ var collapseArg = true;
+ if(where === 'end') {
+ collapseArg = false;
+ }
+ range.collapse(collapseArg);
}
- range.collapse(collapseArg);
-
var selection = document.getSelection();
selection.removeAllRanges();
return {
element: anchorElement,
offset: selection.anchorOffset,
- offsetAtBeginning: selection.anchorOffset === 0,
- offsetAtEnd: selection.anchorNode.data.length === selection.anchorOffset
+ offsetAtBeginning: selection.anchorOffset === 0 || anchorElement.getText() === '',
+ offsetAtEnd: selection.anchorNode.data.length === selection.anchorOffset || anchorElement.getText() === ''
};
}
if(which === 'focus') {
return {
element: focusElement,
offset: selection.focusOffset,
- offsetAtBeginning: selection.focusOffset === 0,
- offsetAtEnd: selection.focusNode.data.length === selection.focusOffset
+ offsetAtBeginning: selection.focusOffset === 0 || focusElement.getText() === '',
+ offsetAtEnd: selection.focusNode.data.length === selection.focusOffset || focusElement.getText() === '',
};
}
return {
element: placeData.element,
offset: placeData.offset,
- offsetAtBeginning: placeData.offset === 0,
- offsetAtEnd: nodeLen === placeData.offset
+ offsetAtBeginning: placeData.offset === 0 || focusElement.getText() === '',
+ offsetAtEnd: nodeLen === placeData.offset || focusElement.getText() === ''
};
}
});