From 688af4666419cd5b666676de0b48f3a072197102 Mon Sep 17 00:00:00 2001 From: John Bradley Date: Wed, 17 Sep 2014 10:02:53 -0500 Subject: [PATCH] Remove interaction event filter in destructor QT fakes a mouse move when destructing which is caught by our filter --- obs/window-basic-interaction.cpp | 11 ++++++++++- obs/window-basic-interaction.hpp | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/obs/window-basic-interaction.cpp b/obs/window-basic-interaction.cpp index 15460b0cc..9cf5499d2 100644 --- a/obs/window-basic-interaction.cpp +++ b/obs/window-basic-interaction.cpp @@ -45,7 +45,8 @@ OBSBasicInteraction::OBSBasicInteraction(QWidget *parent, OBSSource source_) ui->preview->setMouseTracking(true); ui->preview->setFocusPolicy(Qt::StrongFocus); - ui->preview->installEventFilter(BuildEventFilter()); + eventFilter = BuildEventFilter(); + ui->preview->installEventFilter(eventFilter); if (cx > 400 && cy > 400) resize(cx, cy); @@ -63,6 +64,14 @@ OBSBasicInteraction::OBSBasicInteraction(QWidget *parent, OBSSource source_) setWindowTitle(QTStr("Basic.InteractionWindow").arg(QT_UTF8(name))); } +OBSBasicInteraction::~OBSBasicInteraction() +{ + // since QT fakes a mouse movement while destructing a widget + // remove our event filter + ui->preview->removeEventFilter(eventFilter); + delete eventFilter; +} + OBSEventFilter *OBSBasicInteraction::BuildEventFilter() { return new OBSEventFilter( diff --git a/obs/window-basic-interaction.hpp b/obs/window-basic-interaction.hpp index e2633b49b..7f358e64b 100644 --- a/obs/window-basic-interaction.hpp +++ b/obs/window-basic-interaction.hpp @@ -42,6 +42,7 @@ private: OBSSource source; OBSDisplay display; OBSSignal removedSignal; + OBSEventFilter *eventFilter; static void SourceRemoved(void *data, calldata_t params); static void DrawPreview(void *data, uint32_t cx, uint32_t cy); @@ -61,6 +62,7 @@ private slots: public: OBSBasicInteraction(QWidget *parent, OBSSource source_); + ~OBSBasicInteraction(); void Init();