From ba8320f5610e9ac4dc1e4fd46c732cd5087fcc72 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Fri, 1 Feb 2019 14:31:26 -0800 Subject: [PATCH] fix 2d overlay deletion --- interface/src/ui/overlays/Overlays.cpp | 15 ++++++++++++++- interface/src/ui/overlays/Overlays.h | 1 + scripts/system/libraries/entitySelectionTool.js | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index a6d3d4fedb..498ff78234 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -156,6 +156,19 @@ void Overlays::enable() { _enabled = true; } +Overlay::Pointer Overlays::take2DOverlay(const QUuid& id) { + if (_shuttingDown) { + return nullptr; + } + + QMutexLocker locker(&_mutex); + auto overlayIter = _overlays.find(id); + if (overlayIter != _overlays.end()) { + return _overlays.take(id); + } + return nullptr; +} + Overlay::Pointer Overlays::get2DOverlay(const QUuid& id) const { if (_shuttingDown) { return nullptr; @@ -808,7 +821,7 @@ void Overlays::deleteOverlay(const QUuid& id) { return; } - Overlay::Pointer overlay = get2DOverlay(id); + Overlay::Pointer overlay = take2DOverlay(id); if (overlay) { _overlaysToDelete.push_back(overlay); emit overlayDeleted(id); diff --git a/interface/src/ui/overlays/Overlays.h b/interface/src/ui/overlays/Overlays.h index 992431f3ed..6f4bf210f1 100644 --- a/interface/src/ui/overlays/Overlays.h +++ b/interface/src/ui/overlays/Overlays.h @@ -94,6 +94,7 @@ public: void disable(); void enable(); + Overlay::Pointer take2DOverlay(const QUuid& id); Overlay::Pointer get2DOverlay(const QUuid& id) const; /// adds an overlay that's already been created diff --git a/scripts/system/libraries/entitySelectionTool.js b/scripts/system/libraries/entitySelectionTool.js index 9b53cf85f3..2b12a03c00 100644 --- a/scripts/system/libraries/entitySelectionTool.js +++ b/scripts/system/libraries/entitySelectionTool.js @@ -926,7 +926,7 @@ SelectionDisplay = (function() { zRailOverlay ]; - const nonLayeredOverlays = [selectionBox, iconSelectionBox]; + var nonLayeredOverlays = [selectionBox, iconSelectionBox]; var maximumHandleInAllOverlays = handleDuplicator;