[FIX] web: correctly update this.widgets

Old subwidgets of a widget inhereriting from BasicRender were not
correctly destroyed. This was the cause of various problems when
cycling over this.widgets.
This commit is contained in:
Mathieu Duckerts-Antoine
2019-04-01 14:38:44 +00:00
parent a742279ad2
commit 863de16a91
2 changed files with 3 additions and 3 deletions
@@ -510,12 +510,15 @@ var BasicRenderer = AbstractRenderer.extend({
var oldAllFieldWidgets = this.allFieldWidgets;
this.allFieldWidgets = {}; // TODO maybe merging allFieldWidgets and allModifiersData into "nodesData" in some way could be great
this.allModifiersData = [];
var oldWidgets = this.widgets;
this.widgets = [];
return this._renderView().then(function () {
_.each(oldAllFieldWidgets, function (recordWidgets) {
_.each(recordWidgets, function (widget) {
widget.destroy();
});
});
_.invoke(oldWidgets, 'destroy');
});
},
/**
@@ -396,8 +396,6 @@ var KanbanRenderer = BasicRenderer.extend({
*/
_renderView: function () {
var self = this;
var oldWidgets = this.widgets;
this.widgets = [];
// render the kanban view
var isGrouped = !!this.state.groupedBy.length;
@@ -418,7 +416,6 @@ var KanbanRenderer = BasicRenderer.extend({
self.$el.toggleClass('o_kanban_ungrouped', !isGrouped);
self.$el.append(fragment);
self._toggleNoContentHelper();
_.invoke(oldWidgets, 'destroy');
if (self._isInDom) {
_.invoke(self.widgets, 'on_attach_callback');
}