diff --git a/src/webui/www/private/scripts/client.js b/src/webui/www/private/scripts/client.js index edd0db80a..f0807b51e 100644 --- a/src/webui/www/private/scripts/client.js +++ b/src/webui/www/private/scripts/client.js @@ -289,9 +289,11 @@ window.addEvent('load', function () { onSuccess : function (response) { $('error_div').set('html', ''); if (response) { + var torrentsTableSelectedRows; var update_categories = false; var full_update = (response['full_update'] === true); if (full_update) { + torrentsTableSelectedRows = torrentsTable.selectedRowsIds(); torrentsTable.clear(); category_list = {}; } @@ -348,6 +350,10 @@ window.addEvent('load', function () { updateCategoryList(); torrentsTableContextMenu.updateCategoriesSubMenu(category_list); } + + if (full_update) + // re-select previously selected rows + torrentsTable.reselectRows(torrentsTableSelectedRows); } clearTimeout(syncMainDataTimer); syncMainDataTimer = syncMainData.delay(syncMainDataTimerPeriod); diff --git a/src/webui/www/private/scripts/dynamicTable.js b/src/webui/www/private/scripts/dynamicTable.js index b7e1e79a4..7798c00b9 100644 --- a/src/webui/www/private/scripts/dynamicTable.js +++ b/src/webui/www/private/scripts/dynamicTable.js @@ -500,6 +500,15 @@ var DynamicTable = new Class({ this.onSelectedRowChanged(); }, + reselectRows : function(rowIds) { + this.deselectAll(); + this.selectedRows = rowIds.slice(); + this.tableBody.getElements('tr').each(function(tr) { + if (rowIds.indexOf(tr.rowId) > -1) + tr.addClass('selected'); + }); + }, + onSelectedRowChanged : function () {}, updateRowData : function (data) {