From f28248780647032af66713ede92ec697042a2558 Mon Sep 17 00:00:00 2001 From: Damien Churchill Date: Sun, 12 Dec 2010 00:02:41 +0000 Subject: [PATCH] fix bug #1355 --- deluge/ui/web/js/deluge-all/Deluge.js | 2 +- deluge/ui/web/js/deluge-all/TorrentGrid.js | 9 ++++++++- deluge/ui/web/js/deluge-all/UI.js | 9 ++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/deluge/ui/web/js/deluge-all/Deluge.js b/deluge/ui/web/js/deluge-all/Deluge.js index de82dd7af..382b611dd 100644 --- a/deluge/ui/web/js/deluge-all/Deluge.js +++ b/deluge/ui/web/js/deluge-all/Deluge.js @@ -46,7 +46,7 @@ Ext.apply(Ext, { return true; }, - isObjectsEqual: function(obj1, obj2) { + areObjectsEqual: function(obj1, obj2) { var equal = true; if (!obj1 || !obj2) return false; for (var i in obj1) { diff --git a/deluge/ui/web/js/deluge-all/TorrentGrid.js b/deluge/ui/web/js/deluge-all/TorrentGrid.js index 04a020432..0455113c5 100644 --- a/deluge/ui/web/js/deluge-all/TorrentGrid.js +++ b/deluge/ui/web/js/deluge-all/TorrentGrid.js @@ -284,8 +284,15 @@ return ids; }, - update: function(torrents) { + update: function(torrents, wipe) { var store = this.getStore(); + + // Need to perform a complete reload of the torrent grid. + if (wipe) { + store.removeAll(); + this.torrents = {}; + } + var newTorrents = []; // Update and add any new torrents. diff --git a/deluge/ui/web/js/deluge-all/UI.js b/deluge/ui/web/js/deluge-all/UI.js index e8e86a593..4a1b96278 100644 --- a/deluge/ui/web/js/deluge-all/UI.js +++ b/deluge/ui/web/js/deluge-all/UI.js @@ -114,6 +114,9 @@ deluge.ui = { update: function() { var filters = deluge.sidebar.getFilterStates(); + this.oldFilters = this.filters; + this.filters = filters; + deluge.client.web.update_ui(Deluge.Keys.Grid, filters, { success: this.onUpdate, failure: this.onUpdateError, @@ -170,7 +173,11 @@ deluge.ui = { ' (Down: ' + fspeed(data['stats'].download_rate, true) + ' Up: ' + fspeed(data['stats'].upload_rate, true) + ')'; } - deluge.torrents.update(data['torrents']); + if (Ext.areObjectsEqual(this.filters, this.oldFilters)) { + deluge.torrents.update(data['torrents']); + } else { + deluge.torrents.update(data['torrents'], true); + } deluge.statusbar.update(data['stats']); deluge.sidebar.update(data['filters']); this.errorCount = 0;