diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 01e4a071e1..3eae6ebe7c 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -476,9 +476,7 @@ var toolBar = (function () { function checkDeletedEntityAndUpdate(entityID) { // Allow for multiple entity deletes before updating the entities selected. - if (selectionManager.selections.indexOf(entityID) !== -1) { - entitiesToDelete.push(entityID); - } + entitiesToDelete.push(entityID); if (deletedEntityTimer !== null) { Script.clearTimeout(deletedEntityTimer); } @@ -486,8 +484,7 @@ var toolBar = (function () { if (entitiesToDelete.length > 0) { selectionManager.removeEntities(entitiesToDelete); } - entityListTool.clearEntityList(); - entityListTool.sendUpdate(); + entityListTool.removeEntities(entitiesToDelete, selectionManager.selections); entitiesToDelete = []; deletedEntityTimer = null; }, DELETE_ENTITY_TIMER_TIMEOUT); diff --git a/scripts/system/html/js/entityList.js b/scripts/system/html/js/entityList.js index 0b02dd6d4f..11a875dbb5 100644 --- a/scripts/system/html/js/entityList.js +++ b/scripts/system/html/js/entityList.js @@ -195,6 +195,18 @@ function loaded() { } } + function removeEntities(deletedIDs, selectedIDs) { + for (i = 0, length = deletedIDs.length; i < length; i++) { + delete entities[deletedIDs[i]]; + entityList.remove("id", deletedIDs[i]); + } + if (refreshEntityListTimer) { + clearTimeout(refreshEntityListTimer); + } + refreshEntityListTimer = setTimeout(refreshEntityListObject, 50); + updateSelectedEntities(selectedIDs); + } + function clearEntities() { entities = {}; entityList.clear(); @@ -346,7 +358,7 @@ function loaded() { if (notFound) { refreshEntities(); } - } else if (data.type == "update" && data.selectedIDs !== undefined) { + } else if (data.type === "update" && data.selectedIDs !== undefined) { var newEntities = data.entities; if (newEntities && newEntities.length == 0) { elNoEntitiesMessage.style.display = "block"; @@ -367,6 +379,8 @@ function loaded() { updateSelectedEntities(data.selectedIDs); resize(); } + } else if (data.type === "removeEntities" && data.deletedIDs !== undefined) { + removeEntities(data.deletedIDs, data.selectedIDs); } else if (data.type === "deleted") { for (i = 0, length = data.ids.length; i < length; i++) { delete entities[data.ids[i]]; diff --git a/scripts/system/libraries/entityList.js b/scripts/system/libraries/entityList.js index 611bd4d84c..3fda7588df 100644 --- a/scripts/system/libraries/entityList.js +++ b/scripts/system/libraries/entityList.js @@ -57,6 +57,15 @@ EntityListTool = function(opts) { webView.emitScriptEvent(JSON.stringify(data)); }; + that.removeEntities = function (deletedIDs, selectedIDs) { + var data = { + type: 'removeEntities', + deletedIDs: deletedIDs, + selectedIDs: selectedIDs + }; + webView.emitScriptEvent(JSON.stringify(data)); + }; + function valueIfDefined(value) { return value !== undefined ? value : ""; }