From 54b7aa73a3a09d79af52a5ebf395649f02b7f0e1 Mon Sep 17 00:00:00 2001 From: Yousef Khadadeh Date: Tue, 19 May 2026 19:45:16 +0300 Subject: [PATCH] Color picker updates on data change --- src/GUIStuff/Elements/ColorPicker.decl.hpp | 1 + src/GUIStuff/Elements/ColorPicker.impl.hpp | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/GUIStuff/Elements/ColorPicker.decl.hpp b/src/GUIStuff/Elements/ColorPicker.decl.hpp index 1f5c0ef..b8eb41a 100644 --- a/src/GUIStuff/Elements/ColorPicker.decl.hpp +++ b/src/GUIStuff/Elements/ColorPicker.decl.hpp @@ -84,6 +84,7 @@ struct ColorPickerData { template class ColorPicker : public Element { public: ColorPicker(GUIManager& gui); + virtual void update() override; void layout(const Clay_ElementId& id, T* data, bool selectAlpha, const ColorPickerData& conf = {}); private: void set_rgb_from_hsv(const Vector3f& hsv); diff --git a/src/GUIStuff/Elements/ColorPicker.impl.hpp b/src/GUIStuff/Elements/ColorPicker.impl.hpp index 8b138ae..70ee4bf 100644 --- a/src/GUIStuff/Elements/ColorPicker.impl.hpp +++ b/src/GUIStuff/Elements/ColorPicker.impl.hpp @@ -128,6 +128,13 @@ template void ColorPicker::layout(const Clay_ElementId& id, T* d } } +template void ColorPicker::update() { + if(!oldData.has_value() || oldData.value() != *data) { + savedHsv = rgb_to_hsv(*data); + oldData = *data; + } +} + template void ColorPicker::set_rgb_from_hsv(const Vector3f& hsv) { Vector3f a = hsv_to_rgb(hsv); (*data)[0] = a.x();