From 13ba51a9ad1870616fd2f96eb4dd46471cbca685 Mon Sep 17 00:00:00 2001 From: PatTheMav Date: Thu, 9 Oct 2025 17:23:11 +0200 Subject: [PATCH] frontend: Use Qt parent-child ownership in OAuth dialog By explicitly setting the OAuth dialog as the parent of the CEF widget, it will automatically by cleaned up as soon as the dialog is closed itself. This also detaches the destruction of the widget from the browser cleanup code. --- frontend/dialogs/OAuthLogin.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/frontend/dialogs/OAuthLogin.cpp b/frontend/dialogs/OAuthLogin.cpp index 64af6869b..dd7d50bbc 100644 --- a/frontend/dialogs/OAuthLogin.cpp +++ b/frontend/dialogs/OAuthLogin.cpp @@ -31,7 +31,7 @@ OAuthLogin::OAuthLogin(QWidget *parent, const std::string &url, bool token) : QD OBSBasic::InitBrowserPanelSafeBlock(); - cefWidget = cef->create_widget(nullptr, url, panel_cookies); + cefWidget = cef->create_widget(this, url, panel_cookies); if (!cefWidget) { fail = true; return; @@ -71,7 +71,9 @@ int OAuthLogin::exec() void OAuthLogin::reject() { #ifdef BROWSER_AVAILABLE - delete cefWidget; + if (cefWidget) { + cefWidget->closeBrowser(); + } #endif QDialog::reject(); } @@ -79,7 +81,9 @@ void OAuthLogin::reject() void OAuthLogin::accept() { #ifdef BROWSER_AVAILABLE - delete cefWidget; + if (cefWidget) { + cefWidget->closeBrowser(); + } #endif QDialog::accept(); }