diff options
-rw-r--r-- | core/variant/variant.h | 4 | ||||
-rw-r--r-- | scene/gui/color_picker.cpp | 16 |
2 files changed, 12 insertions, 8 deletions
diff --git a/core/variant/variant.h b/core/variant/variant.h index b2f31a6d57..f694e59051 100644 --- a/core/variant/variant.h +++ b/core/variant/variant.h @@ -346,6 +346,10 @@ public: bool is_one() const; bool is_null() const; + // Make sure Variant is not implicitly cast when accessing it with bracket notation (GH-49469). + Variant &operator[](const Variant &p_key) = delete; + const Variant &operator[](const Variant &p_key) const = delete; + operator bool() const; operator signed int() const; operator unsigned int() const; // this is the real one diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp index da29bc823f..0b0698188c 100644 --- a/scene/gui/color_picker.cpp +++ b/scene/gui/color_picker.cpp @@ -1197,11 +1197,11 @@ void ColorPicker::_uv_input(const Ref<InputEvent> &p_event, Control *c) { } if (!spinning) { - real_t x = CLAMP(bev->get_position().x, corner_x, c->get_size().x - corner_x); - real_t y = CLAMP(bev->get_position().y, corner_x, c->get_size().y - corner_y); + real_t x = CLAMP(bev->get_position().x - corner_x, 0, real_size.x); + real_t y = CLAMP(bev->get_position().y - corner_y, 0, real_size.y); - s = (x - c->get_position().x - corner_x) / real_size.x; - v = 1.0 - (y - c->get_position().y - corner_y) / real_size.y; + s = x / real_size.x; + v = 1.0 - y / real_size.y; } } @@ -1250,11 +1250,11 @@ void ColorPicker::_uv_input(const Ref<InputEvent> &p_event, Control *c) { real_t corner_y = (c == wheel_uv) ? center.y - Math_SQRT12 * c->get_size().height * 0.42 : 0; Size2 real_size(c->get_size().x - corner_x * 2, c->get_size().y - corner_y * 2); - real_t x = CLAMP(mev->get_position().x, corner_x, c->get_size().x - corner_x); - real_t y = CLAMP(mev->get_position().y, corner_x, c->get_size().y - corner_y); + real_t x = CLAMP(mev->get_position().x - corner_x, 0, real_size.x); + real_t y = CLAMP(mev->get_position().y - corner_y, 0, real_size.y); - s = (x - corner_x) / real_size.x; - v = 1.0 - (y - corner_y) / real_size.y; + s = x / real_size.x; + v = 1.0 - y / real_size.y; } } |