- Canvas.rootWrapper is no longer a contenteditable so key events
need to be listened to on the document body in case there is no
caret on a canvas (e.g. when selection is made).
- During selection, even inside a single text element, contenteditable
is not used, meaning that during even for such a selection
we need to handle delete/backspace ourselves.
setupEventHandling: function() {
var canvas = this;
- this.rootWrapper.on('keyup keydown keypress', function(e) {
- keyboard.handleKey(e, canvas);
+ /* globals document */
+ $(document.body).on('keydown', function(e) {
+ var cursor = canvas.getCursor();
+ if(cursor.isSelecting() || Object.keys(cursor.getPosition()).length) {
+ keyboard.handleKey(e, canvas);
+ }
});
this.rootWrapper.on('mouseup', function() {
caretTo = 'start';
}
- if(cursor.isSelecting() && !cursor.isSelectingWithinElement()) {
+ if(cursor.isSelecting()) {
event.preventDefault();
var start = cursor.getSelectionStart(),
end = cursor.getSelectionEnd();