diff --git a/docs/api/app.md b/docs/api/app.md index 1fd26f68398..cd6eb3aab99 100755 --- a/docs/api/app.md +++ b/docs/api/app.md @@ -1357,7 +1357,7 @@ This API must be called after the `ready` event is emitted. ### `app.showAboutPanel()` -Show the app's about panel options. These options can be overridden with `app.setAboutPanelOptions(options)`. +Show the app's about panel options. These options can be overridden with `app.setAboutPanelOptions(options)`. This function runs asynchronously. ### `app.setAboutPanelOptions(options)` diff --git a/shell/browser/browser_linux.cc b/shell/browser/browser_linux.cc index 1e70de2aa5f..7eb093e3dba 100644 --- a/shell/browser/browser_linux.cc +++ b/shell/browser/browser_linux.cc @@ -212,8 +212,11 @@ void Browser::ShowAboutPanel() { } } - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialogWidget); + // destroy the widget when it closes + g_signal_connect_swapped(dialogWidget, "response", + G_CALLBACK(gtk_widget_destroy), dialogWidget); + + gtk_widget_show_all(dialogWidget); } void Browser::SetAboutPanelOptions(base::Value::Dict options) { diff --git a/shell/browser/browser_win.cc b/shell/browser/browser_win.cc index a451cbdef1d..2a72e070f4f 100644 --- a/shell/browser/browser_win.cc +++ b/shell/browser/browser_win.cc @@ -2,6 +2,7 @@ // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. +#include "base/functional/bind.h" #include "shell/browser/browser.h" // must come before other includes. fixes bad #defines from . @@ -765,7 +766,8 @@ void Browser::ShowAboutPanel() { settings.message = aboutMessage; settings.icon = image; settings.type = electron::MessageBoxType::kInformation; - electron::ShowMessageBoxSync(settings); + electron::ShowMessageBox(settings, + base::BindOnce([](int, bool) { /* do nothing. */ })); } void Browser::SetAboutPanelOptions(base::Value::Dict options) { diff --git a/spec/api-app-spec.ts b/spec/api-app-spec.ts index fab10800bc5..38ecb1c26ff 100644 --- a/spec/api-app-spec.ts +++ b/spec/api-app-spec.ts @@ -1867,6 +1867,10 @@ describe('app module', () => { version: '1.2.3' }); }); + + it('app.showAboutPanel() does not crash & runs asynchronously', () => { + app.showAboutPanel(); + }); }); });