diff --git a/Userland/Applications/TerminalSettings/TerminalSettingsWidget.cpp b/Userland/Applications/TerminalSettings/TerminalSettingsWidget.cpp index 5ef088abf1..1c83970bc1 100644 --- a/Userland/Applications/TerminalSettings/TerminalSettingsWidget.cpp +++ b/Userland/Applications/TerminalSettings/TerminalSettingsWidget.cpp @@ -29,9 +29,16 @@ #include #include -TerminalSettingsMainWidget::TerminalSettingsMainWidget() +ErrorOr> TerminalSettingsMainWidget::try_create() { - load_from_gml(terminal_settings_main_gml).release_value_but_fixme_should_propagate_errors(); + auto widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) TerminalSettingsMainWidget())); + TRY(widget->setup()); + return widget; +} + +ErrorOr TerminalSettingsMainWidget::setup() +{ + TRY(load_from_gml(terminal_settings_main_gml)); auto& beep_bell_radio = *find_descendant_of_type_named("beep_bell_radio"); auto& visual_bell_radio = *find_descendant_of_type_named("visual_bell_radio"); @@ -77,11 +84,19 @@ TerminalSettingsMainWidget::TerminalSettingsMainWidget() set_modified(true); }; confirm_close_checkbox.set_checked(m_confirm_close, GUI::AllowCallback::No); + return {}; } -TerminalSettingsViewWidget::TerminalSettingsViewWidget() +ErrorOr> TerminalSettingsViewWidget::try_create() { - load_from_gml(terminal_settings_view_gml).release_value_but_fixme_should_propagate_errors(); + auto widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) TerminalSettingsViewWidget())); + TRY(widget->setup()); + return widget; +} + +ErrorOr TerminalSettingsViewWidget::setup() +{ + TRY(load_from_gml(terminal_settings_view_gml)); auto& slider = *find_descendant_of_type_named("background_opacity_slider"); m_opacity = Config::read_i32("Terminal"sv, "Window"sv, "Opacity"sv); @@ -101,7 +116,7 @@ TerminalSettingsViewWidget::TerminalSettingsViewWidget() else m_font = Gfx::FontDatabase::the().get_by_name(font_name); m_original_font = m_font; - font_text.set_text(String::from_deprecated_string(m_font->human_readable_name()).release_value_but_fixme_should_propagate_errors()); + font_text.set_text(TRY(String::from_deprecated_string(m_font->human_readable_name()))); font_text.set_font(m_font); font_button.on_click = [&](auto) { auto picker = GUI::FontPicker::construct(window(), m_font.ptr(), true); @@ -207,6 +222,7 @@ TerminalSettingsViewWidget::TerminalSettingsViewWidget() set_modified(true); }; show_scrollbar_checkbox.set_checked(m_show_scrollbar, GUI::AllowCallback::No); + return {}; } VT::TerminalWidget::BellMode TerminalSettingsMainWidget::parse_bell(StringView bell_string) diff --git a/Userland/Applications/TerminalSettings/TerminalSettingsWidget.h b/Userland/Applications/TerminalSettings/TerminalSettingsWidget.h index 03cba593a6..e752f72bf0 100644 --- a/Userland/Applications/TerminalSettings/TerminalSettingsWidget.h +++ b/Userland/Applications/TerminalSettings/TerminalSettingsWidget.h @@ -14,13 +14,16 @@ #include class TerminalSettingsMainWidget final : public GUI::SettingsWindow::Tab { - C_OBJECT(TerminalSettingsMainWidget) + C_OBJECT_ABSTRACT(TerminalSettingsMainWidget) public: + static ErrorOr> try_create(); + virtual void apply_settings() override; virtual void cancel_settings() override; private: - TerminalSettingsMainWidget(); + TerminalSettingsMainWidget() = default; + ErrorOr setup(); void write_back_settings() const; static VT::TerminalWidget::BellMode parse_bell(StringView bell_string); @@ -34,13 +37,16 @@ private: }; class TerminalSettingsViewWidget final : public GUI::SettingsWindow::Tab { - C_OBJECT(TerminalSettingsViewWidget) + C_OBJECT_ABSTRACT(TerminalSettingsViewWidget) public: + static ErrorOr> try_create(); + virtual void apply_settings() override; virtual void cancel_settings() override; private: - TerminalSettingsViewWidget(); + TerminalSettingsViewWidget() = default; + ErrorOr setup(); void write_back_settings() const; RefPtr m_font;