diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js index f3a364e37d7..a87b6deebda 100644 --- a/addons/web/static/src/js/data.js +++ b/addons/web/static/src/js/data.js @@ -689,7 +689,7 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({ this.set_ids(_.without.apply(_, [this.ids].concat(ids))); this.on_change(); var to_return = $.Deferred().then(callback); - setTimeout(function () {to_return.resolve({result: true});}, 0); + $.async_when().then(function () {to_return.resolve({result: true});}); return to_return.promise(); }, reset_ids: function(ids) { @@ -788,7 +788,7 @@ openerp.web.ProxyDataSet = openerp.web.DataSetSearch.extend({ } else { console.warn("trying to create a record using default proxy dataset behavior"); var to_return = $.Deferred().then(callback); - setTimeout(function () {to_return.resolve({"result": undefined});}, 0); + $.async_when().then(function () {to_return.resolve({"result": undefined});}); return to_return.promise(); } }, @@ -800,7 +800,7 @@ openerp.web.ProxyDataSet = openerp.web.DataSetSearch.extend({ } else { console.warn("trying to write a record using default proxy dataset behavior"); var to_return = $.Deferred().then(callback); - setTimeout(function () {to_return.resolve({"result": true});}, 0); + $.async_when().then(function () {to_return.resolve({"result": true});}); return to_return.promise(); } }, @@ -809,7 +809,7 @@ openerp.web.ProxyDataSet = openerp.web.DataSetSearch.extend({ this.on_unlink(ids); console.warn("trying to unlink a record using default proxy dataset behavior"); var to_return = $.Deferred().then(callback); - setTimeout(function () {to_return.resolve({"result": true});}, 0); + $.async_when().then(function () {to_return.resolve({"result": true});}); return to_return.promise(); }, on_unlink: function(ids) {} diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 2bc6f13a741..e27ffce588d 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -60,7 +60,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# if (this.embedded_view) { var def = $.Deferred().then(this.on_loaded); var self = this; - setTimeout(function() {def.resolve(self.embedded_view);}, 0); + $.async_when().then(function() {def.resolve(self.embedded_view);}); return def.promise(); } else { var context = new openerp.web.CompoundContext(this.dataset.get_context()); @@ -1734,7 +1734,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ return true; }, menuStyle: {width: "200px"} }); - setTimeout(function() {self.$menu_btn.trigger(e);}, 0); + $.async_when().then(function() {self.$menu_btn.trigger(e);}); }); }); var ctx_callback = function(e) {init_context_menu_def.resolve(e); e.preventDefault()}; @@ -1918,7 +1918,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ real_set_value(data[0]); }).fail(function() {self.tmp_value = undefined;}); } else { - setTimeout(function() {real_set_value(value);}, 0); + $.async_when().then(function() {real_set_value(value);}); } }, get_value: function() { @@ -2110,13 +2110,13 @@ openerp.web.form.FieldOne2Many = openerp.web.form.Field.extend({ this.viewmanager.on_mode_switch.add_first(function(n_mode, b, c, d, e) { $.when(self.save_any_view()).then(function() { if(n_mode === "list") - setTimeout(function() {self.reload_current_view();}, 0); + $.async_when().then(function() {self.reload_current_view();}); }); }); this.is_setted.then(function() { - setTimeout(function () { + $.async_when().then(function () { self.viewmanager.appendTo(self.$element); - }, 0); + }); }); return def; }, @@ -2402,9 +2402,9 @@ openerp.web.form.FieldMany2Many = openerp.web.form.Field.extend({ self.initial_is_loaded.resolve(); loaded.resolve(); }); - setTimeout(function () { + $.async_when().then(function () { self.list_view.appendTo($("#" + self.list_id)); - }, 0); + }); return loaded; }, reload_content: function() { diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index 16987e597d2..472001390e8 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -1276,7 +1276,7 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L var fields = _.pluck(_.select(this.columns, function(x) {return x.tag == "field"}), 'name'); var options = { offset: page * limit, limit: limit }; //TODO xmo: investigate why we need to put the setTimeout - setTimeout(function() {dataset.read_slice(fields, options , function (records) { + $.async_when().then(function() {dataset.read_slice(fields, options , function (records) { // FIXME: ignominious hacks, parents (aka form view) should not send two ListView#reload_content concurrently if (self.records.length) { self.records.reset(null, {silent: true}); @@ -1299,7 +1299,7 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L self.records.add(records, {silent: true}); list.render(); d.resolve(list); - });}, 0); + });}); return d.promise(); }, setup_resequence_rows: function (list, dataset) { @@ -1341,9 +1341,9 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L // Accounting > Taxes > Taxes, child tax accounts) // when synchronous (without setTimeout) (function (dataset, id, seq) { - setTimeout(function () { + $.async_when().then(function () { dataset.write(id, {sequence: seq}); - }, 0); + }); }(dataset, record.get('id'), seq)); record.set('sequence', seq); } diff --git a/addons/web/static/src/js/view_page.js b/addons/web/static/src/js/view_page.js index 428776e3c49..6ac5bc9f72b 100644 --- a/addons/web/static/src/js/view_page.js +++ b/addons/web/static/src/js/view_page.js @@ -55,9 +55,9 @@ openerp.web.page = function (openerp) { def.resolve(); }); } else { - setTimeout(function () { + $.async_when().then(function () { def.reject(); - }, 0) + }) } }); return def.promise(); @@ -171,7 +171,7 @@ openerp.web.page = function (openerp) { real_set_value(data[0]); }); } else { - setTimeout(function() {real_set_value(value);}, 0); + $.async_when().then(function() {real_set_value(value);}); } }, get_value: function() {