Преглед на файлове

Welcome: Use fallible try_create()

thankyouverycool преди 2 години
родител
ревизия
c216d71b6c
променени са 2 файла, в които са добавени 15 реда и са изтрити 3 реда
  1. 12 2
      Userland/Applications/Welcome/WelcomeWidget.cpp
  2. 3 1
      Userland/Applications/Welcome/WelcomeWidget.h

+ 12 - 2
Userland/Applications/Welcome/WelcomeWidget.cpp

@@ -20,9 +20,17 @@
 #include <LibGfx/Font/BitmapFont.h>
 #include <LibGfx/Font/BitmapFont.h>
 #include <LibGfx/Palette.h>
 #include <LibGfx/Palette.h>
 
 
-WelcomeWidget::WelcomeWidget()
+ErrorOr<NonnullRefPtr<WelcomeWidget>> WelcomeWidget::try_create()
 {
 {
-    load_from_gml(welcome_window_gml).release_value_but_fixme_should_propagate_errors();
+    auto welcome_widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) WelcomeWidget()));
+    TRY(welcome_widget->create_widgets());
+
+    return welcome_widget;
+}
+
+ErrorOr<void> WelcomeWidget::create_widgets()
+{
+    TRY(load_from_gml(welcome_window_gml));
 
 
     m_web_view = find_descendant_of_type_named<WebView::OutOfProcessWebView>("web_view");
     m_web_view = find_descendant_of_type_named<WebView::OutOfProcessWebView>("web_view");
     m_web_view->load(URL::create_with_file_scheme(DeprecatedString::formatted("{}/README.md", Core::StandardPaths::home_directory())));
     m_web_view->load(URL::create_with_file_scheme(DeprecatedString::formatted("{}/README.md", Core::StandardPaths::home_directory())));
@@ -75,6 +83,8 @@ WelcomeWidget::WelcomeWidget()
     }
     }
 
 
     set_random_tip();
     set_random_tip();
+
+    return {};
 }
 }
 
 
 ErrorOr<void> WelcomeWidget::open_and_parse_tips_file()
 ErrorOr<void> WelcomeWidget::open_and_parse_tips_file()

+ 3 - 1
Userland/Applications/Welcome/WelcomeWidget.h

@@ -13,10 +13,12 @@ class WelcomeWidget final : public GUI::Widget {
     C_OBJECT(WelcomeWidget);
     C_OBJECT(WelcomeWidget);
 
 
 public:
 public:
+    static ErrorOr<NonnullRefPtr<WelcomeWidget>> try_create();
     virtual ~WelcomeWidget() override = default;
     virtual ~WelcomeWidget() override = default;
 
 
 private:
 private:
-    WelcomeWidget();
+    WelcomeWidget() = default;
+    ErrorOr<void> create_widgets();
 
 
     virtual void paint_event(GUI::PaintEvent&) override;
     virtual void paint_event(GUI::PaintEvent&) override;