Merge pull request #13397 from ctrlaltdavid/21893

Fix Create app selection updating when entities are deleted
This commit is contained in:
John Conklin II 2018-06-26 17:06:43 -07:00 committed by GitHub
commit a38859e4da
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 40 additions and 18 deletions

View file

@ -475,15 +475,16 @@ var toolBar = (function () {
var DELETE_ENTITY_TIMER_TIMEOUT = 100; var DELETE_ENTITY_TIMER_TIMEOUT = 100;
function checkDeletedEntityAndUpdate(entityID) { function checkDeletedEntityAndUpdate(entityID) {
// Allow for multiple entity deletes before updating the entity list. // Allow for multiple entity deletes before updating the entities selected.
entitiesToDelete.push(entityID); entitiesToDelete.push(entityID);
if (deletedEntityTimer !== null) { if (deletedEntityTimer !== null) {
Script.clearTimeout(deletedEntityTimer); Script.clearTimeout(deletedEntityTimer);
} }
deletedEntityTimer = Script.setTimeout(function () { deletedEntityTimer = Script.setTimeout(function () {
selectionManager.removeEntities(entitiesToDelete); if (entitiesToDelete.length > 0) {
entityListTool.clearEntityList(); selectionManager.removeEntities(entitiesToDelete);
entityListTool.sendUpdate(); }
entityListTool.removeEntities(entitiesToDelete, selectionManager.selections);
entitiesToDelete = []; entitiesToDelete = [];
deletedEntityTimer = null; deletedEntityTimer = null;
}, DELETE_ENTITY_TIMER_TIMEOUT); }, DELETE_ENTITY_TIMER_TIMEOUT);

View file

@ -184,17 +184,27 @@ function loaded() {
currentElement.onclick = onRowClicked; currentElement.onclick = onRowClicked;
currentElement.ondblclick = onRowDoubleClicked; currentElement.ondblclick = onRowDoubleClicked;
}); });
if (refreshEntityListTimer) {
clearTimeout(refreshEntityListTimer);
}
refreshEntityListTimer = setTimeout(refreshEntityListObject, 50);
} else { } else {
var item = entities[id].item; var item = entities[id].item;
item.values({ name: name, url: filename, locked: locked, visible: visible }); item.values({ name: name, url: filename, locked: locked, visible: visible });
} }
} }
function removeEntities(deletedIDs) {
for (i = 0, length = deletedIDs.length; i < length; i++) {
delete entities[deletedIDs[i]];
entityList.remove("id", deletedIDs[i]);
}
}
function scheduleRefreshEntityList() {
var REFRESH_DELAY = 50;
if (refreshEntityListTimer) {
clearTimeout(refreshEntityListTimer);
}
refreshEntityListTimer = setTimeout(refreshEntityListObject, REFRESH_DELAY);
}
function clearEntities() { function clearEntities() {
entities = {}; entities = {};
entityList.clear(); entityList.clear();
@ -346,7 +356,7 @@ function loaded() {
if (notFound) { if (notFound) {
refreshEntities(); refreshEntities();
} }
} else if (data.type == "update") { } else if (data.type === "update" && data.selectedIDs !== undefined) {
var newEntities = data.entities; var newEntities = data.entities;
if (newEntities && newEntities.length == 0) { if (newEntities && newEntities.length == 0) {
elNoEntitiesMessage.style.display = "block"; elNoEntitiesMessage.style.display = "block";
@ -365,13 +375,15 @@ function loaded() {
newEntities[i].hasScript ? SCRIPT_GLYPH : null); newEntities[i].hasScript ? SCRIPT_GLYPH : null);
} }
updateSelectedEntities(data.selectedIDs); updateSelectedEntities(data.selectedIDs);
scheduleRefreshEntityList();
resize(); resize();
} }
} else if (data.type === "deleted") { } else if (data.type === "removeEntities" && data.deletedIDs !== undefined && data.selectedIDs !== undefined) {
for (i = 0, length = data.ids.length; i < length; i++) { removeEntities(data.deletedIDs);
delete entities[data.ids[i]]; updateSelectedEntities(data.selectedIDs);
entityList.remove("id", data.ids[i]); scheduleRefreshEntityList();
} } else if (data.type === "deleted" && data.ids) {
removeEntities(data.ids);
refreshFooter(); refreshFooter();
} }
}); });

View file

@ -893,9 +893,9 @@ function loaded() {
} else { } else {
elServerScriptStatus.innerText = "Not running"; elServerScriptStatus.innerText = "Not running";
} }
} else if (data.type === "update") { } else if (data.type === "update" && data.selections) {
if (!data.selections || data.selections.length === 0) { if (data.selections.length === 0) {
if (lastEntityID !== null) { if (lastEntityID !== null) {
if (editor !== null) { if (editor !== null) {
saveJSONUserData(true); saveJSONUserData(true);
@ -911,7 +911,7 @@ function loaded() {
elID.value = ""; elID.value = "";
elPropertiesList.className = ''; elPropertiesList.className = '';
disableProperties(); disableProperties();
} else if (data.selections && data.selections.length > 1) { } else if (data.selections.length > 1) {
deleteJSONEditor(); deleteJSONEditor();
deleteJSONMaterialEditor(); deleteJSONMaterialEditor();
var selections = data.selections; var selections = data.selections;

View file

@ -57,6 +57,15 @@ EntityListTool = function(opts) {
webView.emitScriptEvent(JSON.stringify(data)); 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) { function valueIfDefined(value) {
return value !== undefined ? value : ""; return value !== undefined ? value : "";
} }