From 981c6c7af52e75ef8be94891a4a60dedf46af7a3 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Tue, 5 Jan 2016 16:08:25 -0800 Subject: [PATCH] Cleanup web entity connections --- .../src/RenderableWebEntityItem.cpp | 13 +++++++++---- .../entities-renderer/src/RenderableWebEntityItem.h | 5 +++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index 8aae853f5e..979ec32878 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -54,6 +54,11 @@ RenderableWebEntityItem::~RenderableWebEntityItem() { webSurface->deleteLater(); }); } + + QObject::disconnect(_mousePressConnection); + QObject::disconnect(_mouseReleaseConnection); + QObject::disconnect(_mouseMoveConnection); + QObject::disconnect(_hoverLeaveConnection); qDebug() << "Destroyed web entity " << getID(); } @@ -156,10 +161,10 @@ void RenderableWebEntityItem::render(RenderArgs* args) { }; EntityTreeRenderer* renderer = static_cast(args->_renderer); - QObject::connect(renderer, &EntityTreeRenderer::mousePressOnEntity, forwardMouseEvent); - QObject::connect(renderer, &EntityTreeRenderer::mouseReleaseOnEntity, forwardMouseEvent); - QObject::connect(renderer, &EntityTreeRenderer::mouseMoveOnEntity, forwardMouseEvent); - QObject::connect(renderer, &EntityTreeRenderer::hoverLeaveEntity, [=](const EntityItemID& entityItemID, const MouseEvent& event) { + _mousePressConnection = QObject::connect(renderer, &EntityTreeRenderer::mousePressOnEntity, forwardMouseEvent); + _mouseReleaseConnection = QObject::connect(renderer, &EntityTreeRenderer::mouseReleaseOnEntity, forwardMouseEvent); + _mouseMoveConnection = QObject::connect(renderer, &EntityTreeRenderer::mouseMoveOnEntity, forwardMouseEvent); + _hoverLeaveConnection = QObject::connect(renderer, &EntityTreeRenderer::hoverLeaveEntity, [=](const EntityItemID& entityItemID, const MouseEvent& event) { if (this->_pressed && this->getID() == entityItemID) { // If the user mouses off the entity while the button is down, simulate a mouse release QMouseEvent mappedEvent(QEvent::MouseButtonRelease, diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.h b/libraries/entities-renderer/src/RenderableWebEntityItem.h index 2266401b5d..799a414151 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.h +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.h @@ -40,6 +40,11 @@ private: ivec2 _lastPress{ INT_MIN }; bool _pressed{ false }; ivec2 _lastMove{ INT_MIN }; + + QMetaObject::Connection _mousePressConnection; + QMetaObject::Connection _mouseReleaseConnection; + QMetaObject::Connection _mouseMoveConnection; + QMetaObject::Connection _hoverLeaveConnection; };