diff --git a/Libraries/LibGUI/ColorInput.cpp b/Libraries/LibGUI/ColorInput.cpp index fc2d69cda1..291203f1a5 100644 --- a/Libraries/LibGUI/ColorInput.cpp +++ b/Libraries/LibGUI/ColorInput.cpp @@ -70,6 +70,19 @@ void ColorInput::set_color(Color color) set_text(color.to_string()); }; +void ColorInput::set_color_has_alpha_channel(bool has_alpha) +{ + if (m_color_has_alpha_channel == has_alpha) + return; + + m_color_has_alpha_channel = has_alpha; + m_color.set_alpha(0xff); + if (!has_alpha) + set_text(m_color.to_string_without_alpha()); + else + set_text(m_color.to_string()); +} + void ColorInput::mousedown_event(MouseEvent& event) { if (event.button() == MouseButton::Left) { diff --git a/Libraries/LibGUI/ColorInput.h b/Libraries/LibGUI/ColorInput.h index 5efbfa98af..c1170c292c 100644 --- a/Libraries/LibGUI/ColorInput.h +++ b/Libraries/LibGUI/ColorInput.h @@ -35,9 +35,11 @@ class ColorInput final : public TextEditor { C_OBJECT(ColorInput); public: - ColorInput(); virtual ~ColorInput() override; + bool has_alpha_channel() const { return m_color_has_alpha_channel; } + void set_color_has_alpha_channel(bool); + void set_color(Color); Color color() { return m_color; } @@ -52,11 +54,14 @@ protected: virtual void paint_event(PaintEvent&) override; private: + ColorInput(); + Gfx::Rect color_rect() const; void set_color_without_changing_text(Color); Color m_color; String m_color_picker_title { "Select color" }; + bool m_color_has_alpha_channel { true }; }; }