diff --git a/scene/gui/color_mode.cpp b/scene/gui/color_mode.cpp index 5f58a16d50f..ccf2d03caa3 100644 --- a/scene/gui/color_mode.cpp +++ b/scene/gui/color_mode.cpp @@ -43,12 +43,6 @@ String ColorModeRGB::get_slider_label(int idx) const { return labels[idx]; } -float ColorModeRGB::get_slider_max(int idx) const { - ERR_FAIL_INDEX_V_MSG(idx, 4, 0, "Couldn't get slider max value."); - Color color = color_picker->get_pick_color(); - return next_power_of_2(MAX(255, color.components[idx] * 255.0)) - 1; -} - float ColorModeRGB::get_slider_value(int idx) const { ERR_FAIL_INDEX_V_MSG(idx, 4, 0, "Couldn't get slider value."); return color_picker->get_pick_color().components[idx] * 255; diff --git a/scene/gui/color_mode.h b/scene/gui/color_mode.h index c035fe6f65a..4c73967e15f 100644 --- a/scene/gui/color_mode.h +++ b/scene/gui/color_mode.h @@ -46,6 +46,7 @@ public: virtual float get_spinbox_arrow_step() const { return get_slider_step(); } virtual String get_slider_label(int idx) const = 0; virtual float get_slider_max(int idx) const = 0; + virtual bool get_allow_greater() const { return false; } virtual float get_slider_value(int idx) const = 0; virtual Color get_color() const = 0; @@ -92,7 +93,8 @@ public: virtual float get_slider_step() const override { return 1; } virtual String get_slider_label(int idx) const override; - virtual float get_slider_max(int idx) const override; + virtual float get_slider_max(int idx) const override { return 255; } + virtual bool get_allow_greater() const override { return true; } virtual float get_slider_value(int idx) const override; virtual Color get_color() const override; @@ -114,6 +116,7 @@ public: virtual float get_spinbox_arrow_step() const override { return 0.01; } virtual String get_slider_label(int idx) const override; virtual float get_slider_max(int idx) const override; + virtual bool get_allow_greater() const override { return true; } virtual float get_slider_value(int idx) const override; virtual Color get_color() const override; diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp index 27539c90645..9f5d1a6dfbf 100644 --- a/scene/gui/color_picker.cpp +++ b/scene/gui/color_picker.cpp @@ -675,8 +675,9 @@ void ColorPicker::_update_color(bool p_update_sliders) { for (int i = 0; i < current_slider_count; i++) { sliders[i]->set_max(modes[current_mode]->get_slider_max(i)); sliders[i]->set_step(step); - values[i]->set_custom_arrow_step(spinbox_arrow_step); sliders[i]->set_value(modes[current_mode]->get_slider_value(i)); + values[i]->set_custom_arrow_step(spinbox_arrow_step); + values[i]->set_allow_greater(modes[current_mode]->get_allow_greater()); } alpha_slider->set_max(modes[current_mode]->get_slider_max(current_slider_count)); alpha_slider->set_step(step);