mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
Merge pull request #13397 from ctrlaltdavid/21893
Fix Create app selection updating when entities are deleted
This commit is contained in:
commit
a38859e4da
4 changed files with 40 additions and 18 deletions
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 : "";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue