fix: Showing the about panel is async on all platforms (#37508)

fix: Showing the about panel is async on all platforms (#37440)

* fix: about panel is a base::Value::Dict

* nix this test for a diff PR

* what if the about dialog was not blocking

* add this test back in

* document synchronicity

* github editor is a fan of spaces

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Calvin <clavin@users.noreply.github.com>
This commit is contained in:
trop[bot]
2023-03-06 13:31:45 -08:00
committed by GitHub
parent 33a34af2fb
commit 6d117eea94
4 changed files with 13 additions and 4 deletions

View File

@@ -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)`

View File

@@ -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) {

View File

@@ -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 <shlwapi.h>.
@@ -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) {

View File

@@ -1871,6 +1871,10 @@ describe('app module', () => {
version: '1.2.3'
});
});
it('app.showAboutPanel() does not crash & runs asynchronously', () => {
app.showAboutPanel();
});
});
});