소스 검색

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.
PatTheMav 1 주 전
부모
커밋
77faf011a6
1개의 변경된 파일7개의 추가작업 그리고 3개의 파일을 삭제
  1. 7 3
      frontend/dialogs/OAuthLogin.cpp

+ 7 - 3
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();
 }