summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/views/list_view.js10
-rw-r--r--addons/web/static/src/js/views/list_view_editable.js11
2 files changed, 19 insertions, 2 deletions
diff --git a/addons/web/static/src/js/views/list_view.js b/addons/web/static/src/js/views/list_view.js
index 98462e68493..f742c9fb435 100644
--- a/addons/web/static/src/js/views/list_view.js
+++ b/addons/web/static/src/js/views/list_view.js
@@ -352,7 +352,7 @@ var ListView = View.extend( /** @lends instance.web.ListView# */ {
} else if (self.page > max_page_index) {
self.page = 0;
}
- self.reload_content();
+ self.reload_content_when_ready();
}).find('.oe_list_pager_state')
.click(function (e) {
e.stopPropagation();
@@ -370,7 +370,7 @@ var ListView = View.extend( /** @lends instance.web.ListView# */ {
var val = parseInt($select.val(), 10);
self._limit = (isNaN(val) ? null : val);
self.page = 0;
- self.reload_content();
+ self.reload_content_when_ready();
}).blur(function() {
$(this).trigger('change');
})
@@ -542,6 +542,12 @@ var ListView = View.extend( /** @lends instance.web.ListView# */ {
});
return reloaded.promise();
}),
+ /**
+ * Proxy allowing override when reload_content can't be called directly
+ */
+ reload_content_when_ready: function() {
+ return this.reload_content.apply(this, arguments);
+ },
reload: function () {
return this.reload_content();
},
diff --git a/addons/web/static/src/js/views/list_view_editable.js b/addons/web/static/src/js/views/list_view_editable.js
index b522e1e37a0..d7f15bd89f2 100644
--- a/addons/web/static/src/js/views/list_view_editable.js
+++ b/addons/web/static/src/js/views/list_view_editable.js
@@ -402,6 +402,17 @@ ListView.include(/** @lends instance.web.ListView# */{
return cells;
},
/**
+ * Prevent reloading content while an ongoing save
+ */
+ reload_content_when_ready: function() {
+ var self = this;
+ var self_super = this._super;
+ var original_arguments = arguments;
+ return this.saving_mutex.exec(function() {
+ return self_super.apply(self, original_arguments);
+ });
+ },
+ /**
* If currently editing a row, resizes all registered form fields based
* on the corresponding row cell
*/