mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-24 13:35:12 +00:00
Spreadsheet: Drop all references to example windows when closing them
Fixes #4716.
This commit is contained in:
parent
e080a4f74a
commit
4bc33ee3ae
Notes:
sideshowbarker
2024-07-19 00:11:54 +09:00
Author: https://github.com/alimpfard Commit: https://github.com/SerenityOS/serenity/commit/4bc33ee3aed Pull-request: https://github.com/SerenityOS/serenity/pull/4744 Issue: https://github.com/SerenityOS/serenity/issues/4716 Reviewed-by: https://github.com/awesomekling
4 changed files with 13 additions and 10 deletions
|
@ -124,11 +124,13 @@ HelpWindow::HelpWindow(GUI::Window* parent)
|
|||
return;
|
||||
}
|
||||
|
||||
auto dialog = GUI::Window::construct(this);
|
||||
dialog->resize(size());
|
||||
dialog->set_icon(icon());
|
||||
dialog->set_title(String::formatted("Spreadsheet Help - Example {} for {}", name, entry));
|
||||
auto& widget = dialog->set_main_widget<SpreadsheetWidget>(NonnullRefPtrVector<Sheet> {}, false);
|
||||
auto window = GUI::Window::construct(this);
|
||||
window->resize(size());
|
||||
window->set_icon(icon());
|
||||
window->set_title(String::formatted("Spreadsheet Help - Example {} for {}", name, entry));
|
||||
window->on_close = [window = window.ptr()] { window->remove_from_parent(); };
|
||||
|
||||
auto& widget = window->set_main_widget<SpreadsheetWidget>(NonnullRefPtrVector<Sheet> {}, false);
|
||||
auto sheet = Sheet::from_json(value.as_object(), widget.workbook());
|
||||
if (!sheet) {
|
||||
GUI::MessageBox::show_error(this, String::formatted("Corrupted example '{}' in '{}'", name, url.path()));
|
||||
|
@ -136,7 +138,7 @@ HelpWindow::HelpWindow(GUI::Window* parent)
|
|||
}
|
||||
|
||||
widget.add_sheet(sheet.release_nonnull());
|
||||
dialog->show();
|
||||
window->show();
|
||||
} else if (url.host() == "doc") {
|
||||
auto entry = LexicalPath(url.path()).basename();
|
||||
m_webview->load(URL::create_with_data("text/html", render(entry)));
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/JsonObject.h>
|
||||
#include <LibGUI/Dialog.h>
|
||||
#include <LibGUI/Widget.h>
|
||||
#include <LibGUI/Window.h>
|
||||
#include <LibWeb/OutOfProcessWebView.h>
|
||||
|
@ -37,12 +38,12 @@ class HelpWindow : public GUI::Window {
|
|||
C_OBJECT(HelpWindow);
|
||||
|
||||
public:
|
||||
static NonnullRefPtr<HelpWindow> the()
|
||||
static NonnullRefPtr<HelpWindow> the(GUI::Window* window)
|
||||
{
|
||||
if (s_the)
|
||||
return *s_the;
|
||||
|
||||
return *(s_the = adopt(*new HelpWindow));
|
||||
return *(s_the = adopt(*new HelpWindow(window)));
|
||||
}
|
||||
|
||||
virtual ~HelpWindow() override;
|
||||
|
|
|
@ -60,7 +60,7 @@ SpreadsheetWidget::SpreadsheetWidget(NonnullRefPtrVector<Sheet>&& sheets, bool s
|
|||
help_button.set_fixed_size(20, 20);
|
||||
help_button.on_click = [&](auto) {
|
||||
auto docs = m_selected_view->sheet().gather_documentation();
|
||||
auto help_window = HelpWindow::the();
|
||||
auto help_window = HelpWindow::the(window());
|
||||
help_window->set_docs(move(docs));
|
||||
help_window->show();
|
||||
};
|
||||
|
|
|
@ -236,7 +236,7 @@ int main(int argc, char* argv[])
|
|||
help_menu.add_action(GUI::Action::create(
|
||||
"Functions Help", [&](auto&) {
|
||||
auto docs = spreadsheet_widget.current_worksheet().gather_documentation();
|
||||
auto help_window = Spreadsheet::HelpWindow::the();
|
||||
auto help_window = Spreadsheet::HelpWindow::the(window);
|
||||
help_window->set_docs(move(docs));
|
||||
help_window->show();
|
||||
},
|
||||
|
|
Loading…
Add table
Reference in a new issue