From 4752f6dc6fa70cccdc62672a4b41828d17e15933 Mon Sep 17 00:00:00 2001 From: Simone Rubino Date: Thu, 18 Oct 2018 10:41:39 +0200 Subject: [PATCH] [FIX] web_widget_char_switchcase: keep caret position --- web_widget_char_switchcase/__manifest__.py | 2 +- .../static/src/js/web_widget_char_switchcase.js | 9 +++++++++ .../static/test/web_widget_char_switchcase.js | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/web_widget_char_switchcase/__manifest__.py b/web_widget_char_switchcase/__manifest__.py index f1c20908..4b8d32b1 100644 --- a/web_widget_char_switchcase/__manifest__.py +++ b/web_widget_char_switchcase/__manifest__.py @@ -3,7 +3,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { "name": "Web Char Switchcase Widget", - "version": "10.0.1.0.1", + "version": "10.0.1.0.2", "author": "Agile Business Group, " "Odoo Community Association (OCA)", "license": "AGPL-3", diff --git a/web_widget_char_switchcase/static/src/js/web_widget_char_switchcase.js b/web_widget_char_switchcase/static/src/js/web_widget_char_switchcase.js index c26f9989..60320c64 100644 --- a/web_widget_char_switchcase/static/src/js/web_widget_char_switchcase.js +++ b/web_widget_char_switchcase/static/src/js/web_widget_char_switchcase.js @@ -21,9 +21,18 @@ odoo.define('web_widget_char_switchcase', function (require) { console.error(this.current_transformation + ' case unknown'); }, _onKeyUp: function (event) { + // save caret position + var input = this.$input[0]; + var start = input.selectionStart; + var end = input.selectionEnd; + + // transform the value var old_val = this.$input.val(); var new_val = this.current_transformation_handler(old_val); this.$input.val(new_val); + + // restore caret position + input.setSelectionRange(start, end); }, parse_value: function (val, def) { return this._super(this.current_transformation_handler(val), def); diff --git a/web_widget_char_switchcase/static/test/web_widget_char_switchcase.js b/web_widget_char_switchcase/static/test/web_widget_char_switchcase.js index 019bf077..7918f4dd 100644 --- a/web_widget_char_switchcase/static/test/web_widget_char_switchcase.js +++ b/web_widget_char_switchcase/static/test/web_widget_char_switchcase.js @@ -4,6 +4,7 @@ odoo.define_section('web_widget_char_switchcase', ['web.form_common', 'web.core' function createField(form_common, web_form_widgets, node) { var field_manager = new form_common.DefaultFieldManager(null, {}); var fieldWidget = new web_form_widgets.FieldChar(field_manager, node); + fieldWidget.setElement($('')); fieldWidget.initialize_content(); return fieldWidget; }