diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1441ae9001..b1808c9323 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3111,7 +3111,10 @@ void Application::mousePressEvent(QMouseEvent* event) { if (!_aboutToQuit) { getOverlays().mousePressEvent(&mappedEvent); - getEntities()->mousePressEvent(&mappedEvent); + + if (!_controllerScriptingInterface->areEntityClicksCaptured()) { + getEntities()->mousePressEvent(&mappedEvent); + } } _controllerScriptingInterface->emitMousePressEvent(&mappedEvent); // send events to any registered scripts diff --git a/interface/src/scripting/ControllerScriptingInterface.cpp b/interface/src/scripting/ControllerScriptingInterface.cpp index d28c209a52..0d0c2ef668 100644 --- a/interface/src/scripting/ControllerScriptingInterface.cpp +++ b/interface/src/scripting/ControllerScriptingInterface.cpp @@ -60,6 +60,18 @@ void ControllerScriptingInterface::releaseKeyEvents(const KeyEvent& event) { } } +bool ControllerScriptingInterface::areEntityClicksCaptured() const { + return _captureEntityClicks; +} + +void ControllerScriptingInterface::captureEntityClickEvents() { + _captureEntityClicks = true; +} + +void ControllerScriptingInterface::releaseEntityClickEvents() { + _captureEntityClicks = false; +} + bool ControllerScriptingInterface::isJoystickCaptured(int joystickIndex) const { return _capturedJoysticks.contains(joystickIndex); } diff --git a/interface/src/scripting/ControllerScriptingInterface.h b/interface/src/scripting/ControllerScriptingInterface.h index 50539e7a05..996ccabb20 100644 --- a/interface/src/scripting/ControllerScriptingInterface.h +++ b/interface/src/scripting/ControllerScriptingInterface.h @@ -84,6 +84,7 @@ public: bool isKeyCaptured(QKeyEvent* event) const; bool isKeyCaptured(const KeyEvent& event) const; bool isJoystickCaptured(int joystickIndex) const; + bool areEntityClicksCaptured() const; void updateInputControllers(); @@ -95,6 +96,9 @@ public slots: virtual void captureJoystick(int joystickIndex); virtual void releaseJoystick(int joystickIndex); + virtual void captureEntityClickEvents(); + virtual void releaseEntityClickEvents(); + virtual glm::vec2 getViewportDimensions() const; virtual QVariant getRecommendedOverlayRect() const; @@ -128,6 +132,7 @@ private: QMultiMap _capturedKeys; QSet _capturedJoysticks; + bool _captureEntityClicks; using InputKey = controller::InputController::Key; using InputControllerMap = std::map; diff --git a/scripts/system/controllers/grab.js b/scripts/system/controllers/grab.js index e495ccc67b..74a3c3d25b 100644 --- a/scripts/system/controllers/grab.js +++ b/scripts/system/controllers/grab.js @@ -404,7 +404,7 @@ Grabber.prototype.pressEvent = function(event) { }; Grabber.prototype.releaseEvent = function(event) { - if (event.isLeftButton!==true ||event.isRightButton===true || event.isMiddleButton===true) { + if (event.isLeftButton!==true ||event.isRightButton===true || event.isMiddleButton===true) { return; } diff --git a/scripts/system/edit.js b/scripts/system/edit.js index f8cce6a544..1716ddd456 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -462,6 +462,11 @@ var toolBar = (function () { that.setActive = function (active) { Settings.setValue(EDIT_SETTING, active); + if (active) { + Controller.captureEntityClickEvents(); + } else { + Controller.releaseEntityClickEvents(); + } if (active === isActive) { return; } @@ -965,6 +970,7 @@ function cleanupModelMenus() { } Script.scriptEnding.connect(function () { + toolBar.setActive(false); Settings.setValue(SETTING_AUTO_FOCUS_ON_SELECT, Menu.isOptionChecked(MENU_AUTO_FOCUS_ON_SELECT)); Settings.setValue(SETTING_EASE_ON_FOCUS, Menu.isOptionChecked(MENU_EASE_ON_FOCUS)); Settings.setValue(SETTING_SHOW_LIGHTS_IN_EDIT_MODE, Menu.isOptionChecked(MENU_SHOW_LIGHTS_IN_EDIT_MODE)); diff --git a/scripts/system/libraries/utils.js b/scripts/system/libraries/utils.js index 2e490e5c30..a5e97d8949 100644 --- a/scripts/system/libraries/utils.js +++ b/scripts/system/libraries/utils.js @@ -9,7 +9,7 @@ // note: this constant is currently duplicated in edit.js EDIT_SETTING = "io.highfidelity.isEditting"; isInEditMode = function isInEditMode() { - return Settings.getValue(EDIT_SETTING) === "false" ? false : !!Settings.getValue(EDIT_SETTING); + return Settings.getValue(EDIT_SETTING); }; if (!Function.prototype.bind) {