[MERGE] forward port of branch 7.0 up to revid 4162 launchpad_translations_on_behalf_...
[odoo/odoo.git] / addons / web / static / src / js / view_list.js
index 89f69c3..0ab727c 100644 (file)
@@ -408,6 +408,9 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
         if (total) {
             var range_start = this.page * limit + 1;
             var range_stop = range_start - 1 + limit;
+            if (this.records.length) {
+                range_stop = range_start - 1 + this.records.length;
+            }
             if (range_stop > total) {
                 range_stop = total;
             }
@@ -602,7 +605,17 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
             _(ids).each(function (id) {
                 self.records.remove(self.records.get(id));
             });
-            self.configure_pager(self.dataset);
+            if (self.records.length === 0 && self.dataset.size() > 0) {
+                //Trigger previous manually to navigate to previous page, 
+                //If all records are deleted on current page.
+                self.$pager.find('ul li:first a').trigger('click');
+            } else if (self.dataset.size() == self.limit()) {
+                //Reload listview to update current page with next page records 
+                //because pager going to be hidden if dataset.size == limit
+                self.reload();
+            } else {
+                self.configure_pager(self.dataset);
+            }
             self.compute_aggregates();
         });
     },
@@ -1658,9 +1671,12 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
 function synchronized(fn) {
     var fn_mutex = new $.Mutex();
     return function () {
+        var obj = this;
         var args = _.toArray(arguments);
-        args.unshift(this);
-        return fn_mutex.exec(fn.bind.apply(fn, args));
+        return fn_mutex.exec(function () {
+            if (obj.isDestroyed()) { return $.when(); }
+            return fn.apply(obj, args)
+        });
     };
 }
 var DataGroup =  instance.web.Class.extend({