diff options
| author | Christophe Matthieu <chm@odoo.com> | 2015-10-16 22:34:33 +0200 |
|---|---|---|
| committer | Christophe Matthieu <chm@odoo.com> | 2015-10-26 11:43:37 +0100 |
| commit | 971437e8b0029e23670b32f0b68b5b4e3e113932 (patch) | |
| tree | c1a76cf504703ced7cc974925f555f04a94bb711 /addons/web_editor/static/src | |
| parent | 5451cf518f1e4de11509b1db1d5cf8a2631615e2 (diff) | |
[FIX] web_editor: remove td content on keydown delete with multi td selected
Diffstat (limited to 'addons/web_editor/static/src')
| -rw-r--r-- | addons/web_editor/static/src/js/summernote.js | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/addons/web_editor/static/src/js/summernote.js b/addons/web_editor/static/src/js/summernote.js index 39a2b12db1d..693b8eee134 100644 --- a/addons/web_editor/static/src/js/summernote.js +++ b/addons/web_editor/static/src/js/summernote.js @@ -1197,12 +1197,28 @@ function summernote_keydown_clean (field) { function remove_table_content(r) { var ancestor = r.commonAncestor(); - var end = dom.splitTree(ancestor, dom.prevPoint({'node': r.ec, 'offset': r.eo})); - var start = dom.splitTree(ancestor, dom.prevPoint({'node': r.sc, 'offset': r.so})); - var nodes = dom.listBetween(start, r.ec); - $(nodes).remove(); - if (!dom.isVisibleText(end)) { - $(end).remove(); + var nodes = dom.listBetween(r.sc, r.ec); + if (dom.isText(r.sc)) { + r.sc.textContent = r.sc.textContent.slice(0, r.so); + } + if (dom.isText(r.ec)) { + r.ec.textContent = r.ec.textContent.slice(r.eo); + } + for (var i in nodes) { + var node = nodes[i]; + if (node === r.sc || node === r.ec || $.contains(node, r.sc) || $.contains(node, r.ec)) { + continue; + } else if (dom.isCell(node)) { + $(node).html("<br/>"); + } else if(node.parentNode) { + do { + var parent = node.parentNode; + parent.removeChild(node); + node = parent; + } while(!dom.isVisibleText(node) && !dom.firstElementChild(node) && + !dom.isCell(node) && + node.parentNode && !$(node.parentNode).hasClass('o_editable')); + } } event.preventDefault(); return false; @@ -1220,7 +1236,8 @@ $.summernote.pluginEvents.delete = function (event, editor, layoutInfo) { } if (!r.isCollapsed()) { if (dom.isCell(dom.node(r.sc)) || dom.isCell(dom.node(r.ec))) { - return remove_table_content(r); + remove_table_content(r); + return range.create(r.ec, 0).select(); } r = r.deleteContents(); r.select(); @@ -1355,7 +1372,8 @@ $.summernote.pluginEvents.backspace = function (event, editor, layoutInfo) { } if (!r.isCollapsed()) { if (dom.isCell(dom.node(r.sc)) || dom.isCell(dom.node(r.ec))) { - return remove_table_content(r); + remove_table_content(r); + return range.create(r.sc, dom.nodeLength(r.sc)).select(); } r = r.deleteContents(); r.select(); |
