summaryrefslogtreecommitdiff
path: root/addons/website/static/lib/summernote/src/js
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2014-12-12 13:36:09 +0100
committerChristophe Matthieu <chm@odoo.com>2015-01-05 10:59:43 +0100
commit5b07a0dc617c02141da800ee0225ef672c9433ff (patch)
treea82f5a7f8a575f9fc727e80aab636970b56a5303 /addons/website/static/lib/summernote/src/js
parent6bd7084476f62abd4776802f1d21fed8936e9f66 (diff)
[FIX] summernote lib: some browsers raise when select a range to target a node like an image or a br; createFromNode can't select a node withe more or less of one item. For eg: <div>text <span>one</span></div> the range selected is only 'text '
https://github.com/summernote/summernote/pull/799
Diffstat (limited to 'addons/website/static/lib/summernote/src/js')
-rw-r--r--addons/website/static/lib/summernote/src/js/core/dom.js2
-rw-r--r--addons/website/static/lib/summernote/src/js/core/range.js20
2 files changed, 21 insertions, 1 deletions
diff --git a/addons/website/static/lib/summernote/src/js/core/dom.js b/addons/website/static/lib/summernote/src/js/core/dom.js
index fbd751ec24b..b07751a0f92 100644
--- a/addons/website/static/lib/summernote/src/js/core/dom.js
+++ b/addons/website/static/lib/summernote/src/js/core/dom.js
@@ -799,6 +799,7 @@ define([
isControlSizing: isControlSizing,
buildLayoutInfo: buildLayoutInfo,
isText: isText,
+ isVoid: isVoid,
isPara: isPara,
isPurePara: isPurePara,
isInline: isInline,
@@ -813,6 +814,7 @@ define([
isAnchor: isAnchor,
isDiv: makePredByNodeName('DIV'),
isLi: isLi,
+ isBR: makePredByNodeName('BR'),
isSpan: makePredByNodeName('SPAN'),
isB: makePredByNodeName('B'),
isU: makePredByNodeName('U'),
diff --git a/addons/website/static/lib/summernote/src/js/core/range.js b/addons/website/static/lib/summernote/src/js/core/range.js
index 85a659bbd1b..1cbb4569a04 100644
--- a/addons/website/static/lib/summernote/src/js/core/range.js
+++ b/addons/website/static/lib/summernote/src/js/core/range.js
@@ -618,7 +618,25 @@ define([
* @return {WrappedRange}
*/
createFromNode: function (node) {
- return this.create(node, 0, node, 1);
+ var sc = node;
+ var so = 0;
+ var ec = node;
+ var eo = dom.nodeLength(ec);
+
+ // browsers can't target a picture or void node
+ if (dom.isVoid(sc) || dom.isImg(sc)) {
+ so = dom.listPrev(sc).length-1;
+ sc = sc.parentNode;
+ }
+ if (dom.isBR(ec)) {
+ eo = dom.listPrev(ec).length-1;
+ ec = ec.parentNode;
+ } else if (dom.isVoid(ec) || dom.isImg(sc)) {
+ eo = dom.listPrev(ec).length;
+ ec = ec.parentNode;
+ }
+
+ return this.create(sc, so, ec, eo);
},
/**