From d5ab8a42416cc23702b9cf0d1de43d4183010e52 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 23 Jan 2013 10:29:46 +0100 Subject: [PATCH] [IMP] IE9 supports window.getSelection remove IE <9 usage of document.selection as we don't support these browsers anyway bzr revid: xmo@openerp.com-20130123092946-wgtvfz3493l7p7cw --- addons/web/static/src/js/search.js | 34 ++++++++---------------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index a7af2f4ded5..051059d4ef6 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -132,37 +132,21 @@ my.InputView = instance.web.Widget.extend({ }, getSelection: function () { // get Text node - var root = this.$el[0].childNodes[0]; + var root = this.el.childNodes[0]; if (!root || !root.textContent) { // if input does not have a child node, or the child node is an // empty string, then the selection can only be (0, 0) return {start: 0, end: 0}; } - if (window.getSelection) { - var domRange = window.getSelection().getRangeAt(0); - assert(domRange.startContainer === root, - "selection should be in the input view"); - assert(domRange.endContainer === root, - "selection should be in the input view"); - return { - start: domRange.startOffset, - end: domRange.endOffset - } - } else if (document.selection) { - var ieRange = document.selection.createRange(); - var rangeParent = ieRange.parentElement(); - assert(rangeParent === root, - "selection should be in the input view"); - var offsetRange = document.body.createTextRange(); - offsetRange = offsetRange.moveToElementText(rangeParent); - offsetRange.setEndPoint("EndToStart", ieRange); - var start = offsetRange.text.length; - return { - start: start, - end: start + ieRange.text.length - } + var range = window.getSelection().getRangeAt(0); + assert(range.startContainer === root, + "selection should be in the input view"); + assert(range.endContainer === root, + "selection should be in the input view"); + return { + start: range.startOffset, + end: range.endOffset } - throw new Error("Could not get caret position"); }, onKeydown: function (e) { var sel;