- canvas.wlxmlDocument.startTransaction();
-
- var direction = 'above',
- caretTo = 'end';
-
- if(event.which === KEYS.DELETE) {
- direction = 'below';
- caretTo = 'start';
- }
-
- if(willDeleteWholeText()) {
- event.preventDefault();
- node.setText('');
- }
- else if(element.isEmpty()) {
- event.preventDefault();
-
- var parent = element.parent(),
- grandParent = parent ? parent.parent() : null;
- if(parent.children().length === 1 && parent.children()[0].sameNode(element)) {
- if(grandParent && grandParent.children().length === 1) {
- goto = grandParent.data('wlxmlNode').append({text: ''});
+ canvas.wlxmlDocument.transaction(function() {
+ if(willDeleteWholeText()) {
+ event.preventDefault();
+ node.setText('');
+ }
+ else if(element.isEmpty()) {
+ event.preventDefault();
+ var parent = element.parent(),
+ grandParent = parent ? parent.parent() : null;
+ if(!grandParent && parent.children().length === 1) {
+ return;
+ }
+ if(parent.children().length === 1 && parent.children()[0].sameNode(element)) {
+ if(grandParent && grandParent.children().length === 1) {
+ goto = grandParent.data('wlxmlNode').append({text: ''});
+ } else {
+ goto = element.getNearestTextElement(direction);
+ }
+ parent.data('wlxmlNode').detach();