From 9cc2f4fb2553e7c327cbe97e49ab693813500c4b Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 25 Jul 2012 11:19:16 +0200 Subject: [PATCH] [IMP] extract 'set element as new widget root and replace old one in DOM' in its own method also fix OldWidget to use it, as it had not been fixed when #replaceWith was extracted out of setElement bzr revid: xmo@openerp.com-20120725091916-g9t5qmaeeqcceuk1 --- addons/web/static/src/js/corelib.js | 15 +++++++++++++-- addons/web/static/src/js/coresetup.js | 3 +-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/addons/web/static/src/js/corelib.js b/addons/web/static/src/js/corelib.js index 6c7fd539b38..42e549b5ca1 100644 --- a/addons/web/static/src/js/corelib.js +++ b/addons/web/static/src/js/corelib.js @@ -706,13 +706,24 @@ instance.web.Widget = instance.web.Class.extend(instance.web.WidgetMixin, { if (this.className) { attrs['class'] = this.className; } $el = $(this.make(this.tagName, attrs)); } + this.replaceElement($el); + }, + + /** + * Re-sets the widget's root element and replaces the old root element + * (if any) by the new one in the DOM. + * + * @param {HTMLElement | jQuery} $el + * @returns {*} this + */ + replaceElement: function ($el) { var $oldel = this.$el; this.setElement($el); if ($oldel && !$oldel.is(this.$el)) { $oldel.replaceWith(this.$el); } + return this; }, - /** * Re-sets the widget's root element (el/$el/$element). * @@ -723,7 +734,7 @@ instance.web.Widget = instance.web.Class.extend(instance.web.WidgetMixin, { * element in the DOM * * @param {HTMLElement | jQuery} element new root element for the widget - * @return {*} + * @return {*} this */ setElement: function (element) { if (this.$el) { diff --git a/addons/web/static/src/js/coresetup.js b/addons/web/static/src/js/coresetup.js index c9015220ba7..b86b0534e3b 100644 --- a/addons/web/static/src/js/coresetup.js +++ b/addons/web/static/src/js/coresetup.js @@ -26,8 +26,7 @@ instance.web.OldWidget = instance.web.Widget.extend({ renderElement: function() { var rendered = this.render(); if (rendered) { - var $el = $(rendered); - this.setElement($el); + this.replaceElement($(rendered)); } return this; },