[FIX] web_editor: fix anchor click on submit button

Context:
1) Edit mode
2) Click on anchor edition button of website form submit button
3) Traceback occurs

The "focus" triggered on $editable element in editor's 'getLinkInfo()'
discards user's text selection on submit button, as a result,
'range.create()' method returns null since no selection is found.

Note: the bug only occurred in Chrome.

Note 2: [1] apparently tried to solve the same issue but the fix was not
        solving it correctly, at least not in all cases.

[1]: https://github.com/odoo/odoo/commit/da14e4449e5e318eb72e1b9f268fb797adb0c6a6

opw-2443441

closes odoo/odoo#66574

X-original-commit: adf3d039acbac60b7ea7e6ab0ea8fdd9f940c3b2
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
This commit is contained in:
xO-Tx
2021-02-19 18:45:16 +00:00
committed by qsm-odoo
parent 2aa2ab1fb2
commit 2d58bbece6
@@ -680,8 +680,27 @@ define([
* @return {String} [return.url=""]
*/
this.getLinkInfo = function ($editable) {
// ODOO MODIFICATION START
var selection;
var currentSelection = null;
if (document.getSelection) {
selection = document.getSelection();
if (selection.getRangeAt && selection.rangeCount) {
currentSelection = selection.getRangeAt(0);
}
}
// ODOO MODIFICATION END
this.focus($editable);
// ODOO MODIFICATION START
if (currentSelection && document.getSelection) {
selection = document.getSelection();
selection.removeAllRanges();
selection.addRange(currentSelection);
}
// ODOO MODIFICATION END
var rng = range.create().expand(dom.isAnchor);
// Get the first anchor on range(for edit).