diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 467842c712..6da3592999 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -452,6 +452,25 @@ var toolBar = (function () { } } + // Handles any edit mode updates required when domains have switched + function checkEditPermissionsAndUpdate() { + if ((createButton === null) || (createButton === undefined)) { + //--EARLY EXIT--( nothing to safely update ) + return; + } + + var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); + createButton.editProperties({ + icon: (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON), + captionColor: (hasRezPermissions ? "#ffffff" : "#888888"), + }); + + if (!hasRezPermissions && isActive) { + that.setActive(false); + tablet.gotoHomeScreen(); + } + } + function initialize() { Script.scriptEnding.connect(cleanup); Window.domainChanged.connect(function () { @@ -460,14 +479,21 @@ var toolBar = (function () { } that.setActive(false); that.clearEntityList(); + checkEditPermissionsAndUpdate(); }); Entities.canAdjustLocksChanged.connect(function (canAdjustLocks) { if (isActive && !canAdjustLocks) { that.setActive(false); } + checkEditPermissionsAndUpdate(); }); + Entities.canRezChanged.connect(checkEditPermissionsAndUpdate); + Entities.canRezTmpChanged.connect(checkEditPermissionsAndUpdate); + Entities.canRezCertifiedChanged.connect(checkEditPermissionsAndUpdate); + Entities.canRezTmpCertifiedChanged.connect(checkEditPermissionsAndUpdate); + var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); var createButtonIconRsrc = (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON); tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); @@ -853,37 +879,18 @@ function handleOverlaySelectionToolUpdates(channel, message, sender) { } } -// Handles any edit mode updates required when domains have switched -function handleDomainChange() { - if ( (createButton === null) || (createButton === undefined) ){ - //--EARLY EXIT--( nothing to safely update ) - return; - } - - var hasRezPermissions = (Entities.canRez() || Entities.canRezTmp() || Entities.canRezCertified() || Entities.canRezTmpCertified()); - createButton.editProperties({ - icon: (hasRezPermissions ? CREATE_ENABLED_ICON : CREATE_DISABLED_ICON), - captionColor: (hasRezPermissions ? "#ffffff" : "#888888"), - }); -} - function handleMessagesReceived(channel, message, sender) { switch( channel ){ case 'entityToolUpdates': { handleOverlaySelectionToolUpdates( channel, message, sender ); break; } - case 'Toolbar-DomainChanged': { - handleDomainChange(); - break; - } default: { return; } } } -Messages.subscribe('Toolbar-DomainChanged'); Messages.subscribe("entityToolUpdates"); Messages.messageReceived.connect(handleMessagesReceived); @@ -1317,8 +1324,6 @@ Script.scriptEnding.connect(function () { Messages.messageReceived.disconnect(handleMessagesReceived); Messages.unsubscribe("entityToolUpdates"); - // Messages.unsubscribe("Toolbar-DomainChanged"); // Do not unsubscribe because the shapes.js app also subscribes and - // Messages.subscribe works script engine-wide which would mess things up if they're both run in the same engine. createButton = null; }); @@ -2334,6 +2339,11 @@ var PopupMenu = function () { Controller.mousePressEvent.disconnect(self.mousePressEvent); Controller.mouseMoveEvent.disconnect(self.mouseMoveEvent); Controller.mouseReleaseEvent.disconnect(self.mouseReleaseEvent); + + Entities.canRezChanged.disconnect(checkEditPermissionsAndUpdate); + Entities.canRezTmpChanged.disconnect(checkEditPermissionsAndUpdate); + Entities.canRezCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); + Entities.canRezTmpCertifiedChanged.disconnect(checkEditPermissionsAndUpdate); } Controller.mousePressEvent.connect(self.mousePressEvent);