From bacf83dbc9aa24a8d01879ea8e623a2db1586a56 Mon Sep 17 00:00:00 2001 From: Exeldro Date: Sat, 23 Jan 2021 15:53:16 +0100 Subject: [PATCH] UI: Close context menu on destroy of VolControl --- UI/volume-control.cpp | 5 ++++- UI/volume-control.hpp | 3 +++ UI/window-basic-main.cpp | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/UI/volume-control.cpp b/UI/volume-control.cpp index cfc64b6c8..d578094e2 100644 --- a/UI/volume-control.cpp +++ b/UI/volume-control.cpp @@ -125,7 +125,8 @@ VolControl::VolControl(OBSSource source_, bool showConfig, bool vertical) levelCount(0.0f), obs_fader(obs_fader_create(OBS_FADER_LOG)), obs_volmeter(obs_volmeter_create(OBS_FADER_LOG)), - vertical(vertical) + vertical(vertical), + contextMenu(nullptr) { nameLabel = new QLabel(); volLabel = new QLabel(); @@ -291,6 +292,8 @@ VolControl::~VolControl() obs_fader_destroy(obs_fader); obs_volmeter_destroy(obs_volmeter); + if (contextMenu) + contextMenu->close(); } QColor VolumeMeter::getBackgroundNominalColor() const diff --git a/UI/volume-control.hpp b/UI/volume-control.hpp index 82a2bcb50..778c5354b 100644 --- a/UI/volume-control.hpp +++ b/UI/volume-control.hpp @@ -7,6 +7,7 @@ #include #include #include +#include class QPushButton; class VolumeMeterTimer; @@ -219,6 +220,7 @@ private: obs_fader_t *obs_fader; obs_volmeter_t *obs_volmeter; bool vertical; + QMenu *contextMenu; static void OBSVolumeChanged(void *param, float db); static void OBSVolumeLevel(void *data, @@ -254,4 +256,5 @@ public: void setPeakMeterType(enum obs_peak_meter_type peakMeterType); void EnableSlider(bool enable); + inline void SetContextMenu(QMenu *cm) { contextMenu = cm; } }; diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 203c52465..ce67fff63 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -3301,6 +3301,7 @@ void OBSBasic::VolControlContextMenu() pasteFiltersAction.setEnabled(true); QMenu popup; + vol->SetContextMenu(&popup); popup.addAction(&lockAction); popup.addSeparator(); popup.addAction(&unhideAllAction); @@ -3316,6 +3317,7 @@ void OBSBasic::VolControlContextMenu() popup.addAction(&propertiesAction); popup.addAction(&advPropAction); popup.exec(QCursor::pos()); + vol->SetContextMenu(nullptr); } void OBSBasic::on_hMixerScrollArea_customContextMenuRequested()