Remove interaction event filter in destructor

QT fakes a mouse move when destructing which is
caught by our filter
This commit is contained in:
John Bradley 2014-09-17 10:02:53 -05:00
parent c1da19e8c6
commit 688af46664
2 changed files with 12 additions and 1 deletions

View File

@ -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(

View File

@ -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();