From 999a44969d661efe2d6eed170c759985c83db85f Mon Sep 17 00:00:00 2001 From: david072 Date: Sat, 11 Nov 2023 13:38:35 +0100 Subject: [PATCH] LibGUI/Widget: Add helpers to set the background color --- Userland/Libraries/LibGUI/Widget.cpp | 31 ++++++++++++++++++++-------- Userland/Libraries/LibGUI/Widget.h | 3 +++ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/Userland/Libraries/LibGUI/Widget.cpp b/Userland/Libraries/LibGUI/Widget.cpp index 60a144bd4e..bf79dd7753 100644 --- a/Userland/Libraries/LibGUI/Widget.cpp +++ b/Userland/Libraries/LibGUI/Widget.cpp @@ -152,15 +152,12 @@ Widget::Widget() register_property( "background_color", [this]() -> JsonValue { return palette().color(background_role()).to_deprecated_string(); }, - [this](auto& value) { - auto c = Color::from_string(value.to_deprecated_string()); - if (c.has_value()) { - auto _palette = palette(); - _palette.set_color(background_role(), c.value()); - set_palette(_palette); - return true; - } - return false; + [this](JsonValue const& value) { + auto color_str = String::from_deprecated_string(value.to_deprecated_string()); + if (color_str.is_error()) + return false; + + return set_background_color(color_str.release_value()); }); register_property( @@ -1085,6 +1082,22 @@ void Widget::set_foreground_role(ColorRole role) update(); } +bool Widget::set_background_color(String color_str) +{ + auto color = Color::from_string(color_str.to_deprecated_string()); + if (!color.has_value()) + return false; + set_background_color(color.release_value()); + return true; +} + +void Widget::set_background_color(Gfx::Color color) +{ + auto _palette = palette(); + _palette.set_color(background_role(), color); + set_palette(_palette); +} + Gfx::Palette Widget::palette() const { return Gfx::Palette(*m_palette); diff --git a/Userland/Libraries/LibGUI/Widget.h b/Userland/Libraries/LibGUI/Widget.h index 879dbb7b5d..e7311e7199 100644 --- a/Userland/Libraries/LibGUI/Widget.h +++ b/Userland/Libraries/LibGUI/Widget.h @@ -254,6 +254,9 @@ public: Gfx::ColorRole foreground_role() const { return m_foreground_role; } void set_foreground_role(Gfx::ColorRole); + bool set_background_color(String); + void set_background_color(Gfx::Color); + void set_autofill(bool b) { set_fill_with_background_color(b); } Window* window()