diff --git a/Userland/DevTools/GMLPlayground/main.cpp b/Userland/DevTools/GMLPlayground/main.cpp index 0ac67fe984..ee79af0b3a 100644 --- a/Userland/DevTools/GMLPlayground/main.cpp +++ b/Userland/DevTools/GMLPlayground/main.cpp @@ -121,8 +121,8 @@ ErrorOr serenity_main(Main::Arguments arguments) editor->on_change = [&] { preview->remove_all_children(); - preview->load_from_gml(editor->text(), [](const DeprecatedString& class_name) -> RefPtr { - return UnregisteredWidget::construct(class_name); + preview->load_from_gml(editor->text(), [](DeprecatedString const& class_name) -> ErrorOr> { + return UnregisteredWidget::try_create(class_name); }); }; diff --git a/Userland/DevTools/HackStudio/GMLPreviewWidget.cpp b/Userland/DevTools/HackStudio/GMLPreviewWidget.cpp index 692b858e36..30f8aa8921 100644 --- a/Userland/DevTools/HackStudio/GMLPreviewWidget.cpp +++ b/Userland/DevTools/HackStudio/GMLPreviewWidget.cpp @@ -27,8 +27,8 @@ void GMLPreviewWidget::load_gml(DeprecatedString const& gml) return; } - load_from_gml(gml, [](DeprecatedString const& name) -> RefPtr { - return GUI::Label::construct(DeprecatedString::formatted("{} is not registered as a GML element!", name)); + load_from_gml(gml, [](DeprecatedString const& name) -> ErrorOr> { + return GUI::Label::try_create(DeprecatedString::formatted("{} is not registered as a GML element!", name)); }); if (children().is_empty()) { diff --git a/Userland/Libraries/LibGUI/ScrollableContainerWidget.cpp b/Userland/Libraries/LibGUI/ScrollableContainerWidget.cpp index 321ff681a3..51962a44a4 100644 --- a/Userland/Libraries/LibGUI/ScrollableContainerWidget.cpp +++ b/Userland/Libraries/LibGUI/ScrollableContainerWidget.cpp @@ -102,7 +102,7 @@ void ScrollableContainerWidget::set_widget(GUI::Widget* widget) update_widget_position(); } -ErrorOr ScrollableContainerWidget::load_from_gml_ast(NonnullRefPtr ast, RefPtr (*unregistered_child_handler)(DeprecatedString const&)) +ErrorOr ScrollableContainerWidget::load_from_gml_ast(NonnullRefPtr ast, ErrorOr> (*unregistered_child_handler)(DeprecatedString const&)) { if (is(ast.ptr())) return load_from_gml_ast(static_ptr_cast(ast)->main_class(), unregistered_child_handler); @@ -133,7 +133,7 @@ ErrorOr ScrollableContainerWidget::load_from_gml_ast(NonnullRefPtrconstruct()); } else { - child = unregistered_child_handler(class_name); + child = TRY(unregistered_child_handler(class_name)); } if (!child) return Error::from_string_literal("Unable to construct a Widget class for ScrollableContainerWidget content_widget property"); diff --git a/Userland/Libraries/LibGUI/ScrollableContainerWidget.h b/Userland/Libraries/LibGUI/ScrollableContainerWidget.h index c57da3f62a..b87c4053ec 100644 --- a/Userland/Libraries/LibGUI/ScrollableContainerWidget.h +++ b/Userland/Libraries/LibGUI/ScrollableContainerWidget.h @@ -30,7 +30,7 @@ private: void update_widget_size(); void update_widget_position(); void update_widget_min_size(); - virtual ErrorOr load_from_gml_ast(NonnullRefPtr ast, RefPtr (*unregistered_child_handler)(DeprecatedString const&)) override; + virtual ErrorOr load_from_gml_ast(NonnullRefPtr ast, ErrorOr> (*unregistered_child_handler)(DeprecatedString const&)) override; ScrollableContainerWidget(); diff --git a/Userland/Libraries/LibGUI/Widget.cpp b/Userland/Libraries/LibGUI/Widget.cpp index 434b40bbeb..c160d9c069 100644 --- a/Userland/Libraries/LibGUI/Widget.cpp +++ b/Userland/Libraries/LibGUI/Widget.cpp @@ -1147,13 +1147,13 @@ void Widget::set_override_cursor(AK::Variant Widget::try_load_from_gml(StringView gml_string) { - return try_load_from_gml(gml_string, [](DeprecatedString const& class_name) -> RefPtr { + return try_load_from_gml(gml_string, [](DeprecatedString const& class_name) -> ErrorOr> { dbgln("Class '{}' not registered", class_name); - return nullptr; + return Error::from_string_literal("Class not registered"); }); } -ErrorOr Widget::try_load_from_gml(StringView gml_string, RefPtr (*unregistered_child_handler)(DeprecatedString const&)) +ErrorOr Widget::try_load_from_gml(StringView gml_string, ErrorOr> (*unregistered_child_handler)(DeprecatedString const&)) { auto value = TRY(GML::parse_gml(gml_string)); return load_from_gml_ast(value, unregistered_child_handler); @@ -1164,12 +1164,12 @@ bool Widget::load_from_gml(StringView gml_string) return !try_load_from_gml(gml_string).is_error(); } -bool Widget::load_from_gml(StringView gml_string, RefPtr (*unregistered_child_handler)(DeprecatedString const&)) +bool Widget::load_from_gml(StringView gml_string, ErrorOr> (*unregistered_child_handler)(DeprecatedString const&)) { return !try_load_from_gml(gml_string, unregistered_child_handler).is_error(); } -ErrorOr Widget::load_from_gml_ast(NonnullRefPtr ast, RefPtr (*unregistered_child_handler)(DeprecatedString const&)) +ErrorOr Widget::load_from_gml_ast(NonnullRefPtr ast, ErrorOr> (*unregistered_child_handler)(DeprecatedString const&)) { if (is(ast.ptr())) return load_from_gml_ast(static_ptr_cast(ast)->main_class(), unregistered_child_handler); @@ -1226,7 +1226,7 @@ ErrorOr Widget::load_from_gml_ast(NonnullRefPtr ast, RefPt return Error::from_string_literal("Invalid widget class"); } } else { - child = unregistered_child_handler(class_name); + child = TRY(unregistered_child_handler(class_name)); } if (!child) return Error::from_string_literal("Unable to construct a Widget class for child"); diff --git a/Userland/Libraries/LibGUI/Widget.h b/Userland/Libraries/LibGUI/Widget.h index e23eac2ab9..f43e55b92f 100644 --- a/Userland/Libraries/LibGUI/Widget.h +++ b/Userland/Libraries/LibGUI/Widget.h @@ -354,11 +354,11 @@ public: void set_override_cursor(AK::Variant>); ErrorOr try_load_from_gml(StringView); - ErrorOr try_load_from_gml(StringView, RefPtr (*unregistered_child_handler)(DeprecatedString const&)); + ErrorOr try_load_from_gml(StringView, ErrorOr> (*unregistered_child_handler)(DeprecatedString const&)); // FIXME: Replace all uses of load_from_gml() with try_load_from_gml() bool load_from_gml(StringView gml_string); - bool load_from_gml(StringView, RefPtr (*unregistered_child_handler)(DeprecatedString const&)); + bool load_from_gml(StringView, ErrorOr> (*unregistered_child_handler)(DeprecatedString const&)); // FIXME: remove this when all uses of shrink_to_fit are eliminated void set_shrink_to_fit(bool); @@ -367,7 +367,7 @@ public: bool has_pending_drop() const; // In order for others to be able to call this, it needs to be public. - virtual ErrorOr load_from_gml_ast(NonnullRefPtr ast, RefPtr (*unregistered_child_handler)(DeprecatedString const&)); + virtual ErrorOr load_from_gml_ast(NonnullRefPtr ast, ErrorOr> (*unregistered_child_handler)(DeprecatedString const&)); protected: Widget();