diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index f3e8aee6c..0fddeddf6 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -474,6 +474,9 @@ OBSBasic::OBSBasic(QWidget *parent) connect(ui->broadcastButton, &QPushButton::clicked, this, &OBSBasic::BroadcastButtonClicked); + connect(App(), &OBSApp::StyleChanged, this, + &OBSBasic::ResetProxyStyleSliders); + UpdatePreviewSafeAreas(); UpdatePreviewSpacingHelpers(); } @@ -10233,3 +10236,19 @@ float OBSBasic::GetDevicePixelRatio() { return dpi; } + +void OBSBasic::ResetProxyStyleSliders() +{ + /* Since volume/media sliders are using QProxyStyle, they are not + * updated when themes are changed, so re-initialize them. */ + vector sources; + for (size_t i = 0; i != volumes.size(); i++) + sources.emplace_back(volumes[i]->GetSource()); + + ClearVolumeControls(); + + for (const auto &source : sources) + ActivateAudioSource(source); + + UpdateContextBar(true); +} diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 284b0b7c3..379db5387 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -806,6 +806,7 @@ private slots: void TBarReleased(); void LockVolumeControl(bool lock); + void ResetProxyStyleSliders(); private: /* OBS Callbacks */