Merge pull request #15227 from thoys/fix/create/dontIgnoreAllUpdatesWhenFocussed

Case 21816: don't ignore updates that originate from entityPropertiesTool itself [master]
This commit is contained in:
Thijs Wenker 2019-03-20 19:43:37 +01:00 committed by GitHub
commit 20c3a36308
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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));
}