don't ignore updates that originate from entityPropertiesTool itself

This commit is contained in:
Thijs Wenker 2019-03-19 22:38:16 +01:00
parent 44f897fbd2
commit 19c51b25d1
3 changed files with 11 additions and 7 deletions

View file

@ -2286,14 +2286,15 @@ var PropertiesTool = function (opts) {
})
};
function updateSelections(selectionUpdated) {
function updateSelections(selectionUpdated, caller) {
if (blockPropertyUpdates) {
return;
}
var data = {
type: 'update',
spaceMode: selectionDisplay.getSpaceMode()
spaceMode: selectionDisplay.getSpaceMode(),
isPropertiesToolUpdate: caller === this,
};
if (selectionUpdated) {
@ -2339,7 +2340,7 @@ var PropertiesTool = function (opts) {
emitScriptEvent(data);
}
selectionManager.addEventListener(updateSelections);
selectionManager.addEventListener(updateSelections, this);
var onWebEventReceived = function(data) {

View file

@ -3326,7 +3326,7 @@ function loaded() {
let hasSelectedEntityChanged = lastEntityID !== '"' + selectedEntityProperties.id + '"';
if (!hasSelectedEntityChanged && document.hasFocus()) {
if (!data.isPropertiesToolUpdate && !hasSelectedEntityChanged && document.hasFocus()) {
// in case the selection has not changed and we still have focus on the properties page,
// we will ignore the event.
return;

View file

@ -128,8 +128,11 @@ SelectionManager = (function() {
}
};
that.addEventListener = function(func) {
listeners.push(func);
that.addEventListener = function(func, thisContext) {
listeners.push({
callback: func,
thisContext: thisContext
});
};
that.hasSelection = function() {
@ -572,7 +575,7 @@ SelectionManager = (function() {
for (var j = 0; j < listeners.length; j++) {
try {
listeners[j](selectionUpdated === true, caller);
listeners[j].callback.call(listeners[j].thisContext, selectionUpdated === true, caller);
} catch (e) {
print("ERROR: entitySelectionTool.update got exception: " + JSON.stringify(e));
}