1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-08 12:40:44 +00:00

Make EditorSpinSlider label color a theme property

This commit is contained in:
FireForge
2022-03-03 18:19:00 -06:00
parent 3f69ea4f3b
commit 6a4d3859cf
6 changed files with 31 additions and 39 deletions

View File

@@ -691,15 +691,11 @@ void EditorProperty::unhandled_key_input(const Ref<InputEvent> &p_event) {
} }
const Color *EditorProperty::_get_property_colors() { const Color *EditorProperty::_get_property_colors() {
const Color base = get_theme_color(SNAME("accent_color"), SNAME("Editor"));
const float saturation = base.get_s() * 0.75;
const float value = base.get_v();
static Color c[4]; static Color c[4];
c[0].set_hsv(0.0 / 3.0 + 0.05, saturation, value); c[0] = get_theme_color(SNAME("property_color_x"), SNAME("Editor"));
c[1].set_hsv(1.0 / 3.0 + 0.05, saturation, value); c[1] = get_theme_color(SNAME("property_color_y"), SNAME("Editor"));
c[2].set_hsv(2.0 / 3.0 + 0.05, saturation, value); c[2] = get_theme_color(SNAME("property_color_z"), SNAME("Editor"));
c[3].set_hsv(1.5 / 3.0 + 0.05, saturation, value); c[3] = get_theme_color(SNAME("property_color_w"), SNAME("Editor"));
return c; return c;
} }

View File

@@ -1626,7 +1626,7 @@ void EditorPropertyVector2::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: { case NOTIFICATION_THEME_CHANGED: {
const Color *colors = _get_property_colors(); const Color *colors = _get_property_colors();
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
spin[i]->set_custom_label_color(true, colors[i]); spin[i]->add_theme_color_override("label_color", colors[i]);
} }
} break; } break;
} }
@@ -1720,7 +1720,7 @@ void EditorPropertyRect2::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: { case NOTIFICATION_THEME_CHANGED: {
const Color *colors = _get_property_colors(); const Color *colors = _get_property_colors();
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
spin[i]->set_custom_label_color(true, colors[i % 2]); spin[i]->add_theme_color_override("label_color", colors[i % 2]);
} }
} break; } break;
} }
@@ -1849,7 +1849,7 @@ void EditorPropertyVector3::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: { case NOTIFICATION_THEME_CHANGED: {
const Color *colors = _get_property_colors(); const Color *colors = _get_property_colors();
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
spin[i]->set_custom_label_color(true, colors[i]); spin[i]->add_theme_color_override("label_color", colors[i]);
} }
} break; } break;
} }
@@ -1939,7 +1939,7 @@ void EditorPropertyVector2i::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: { case NOTIFICATION_THEME_CHANGED: {
const Color *colors = _get_property_colors(); const Color *colors = _get_property_colors();
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
spin[i]->set_custom_label_color(true, colors[i]); spin[i]->add_theme_color_override("label_color", colors[i]);
} }
} break; } break;
} }
@@ -2033,7 +2033,7 @@ void EditorPropertyRect2i::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: { case NOTIFICATION_THEME_CHANGED: {
const Color *colors = _get_property_colors(); const Color *colors = _get_property_colors();
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
spin[i]->set_custom_label_color(true, colors[i % 2]); spin[i]->add_theme_color_override("label_color", colors[i % 2]);
} }
} break; } break;
} }
@@ -2135,7 +2135,7 @@ void EditorPropertyVector3i::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: { case NOTIFICATION_THEME_CHANGED: {
const Color *colors = _get_property_colors(); const Color *colors = _get_property_colors();
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
spin[i]->set_custom_label_color(true, colors[i]); spin[i]->add_theme_color_override("label_color", colors[i]);
} }
} break; } break;
} }
@@ -2228,7 +2228,7 @@ void EditorPropertyPlane::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: { case NOTIFICATION_THEME_CHANGED: {
const Color *colors = _get_property_colors(); const Color *colors = _get_property_colors();
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
spin[i]->set_custom_label_color(true, colors[i]); spin[i]->add_theme_color_override("label_color", colors[i]);
} }
} break; } break;
} }
@@ -2322,7 +2322,7 @@ void EditorPropertyQuaternion::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: { case NOTIFICATION_THEME_CHANGED: {
const Color *colors = _get_property_colors(); const Color *colors = _get_property_colors();
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
spin[i]->set_custom_label_color(true, colors[i]); spin[i]->add_theme_color_override("label_color", colors[i]);
} }
} break; } break;
} }
@@ -2419,7 +2419,7 @@ void EditorPropertyAABB::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: { case NOTIFICATION_THEME_CHANGED: {
const Color *colors = _get_property_colors(); const Color *colors = _get_property_colors();
for (int i = 0; i < 6; i++) { for (int i = 0; i < 6; i++) {
spin[i]->set_custom_label_color(true, colors[i % 3]); spin[i]->add_theme_color_override("label_color", colors[i % 3]);
} }
} break; } break;
} }
@@ -2505,9 +2505,9 @@ void EditorPropertyTransform2D::_notification(int p_what) {
for (int i = 0; i < 6; i++) { for (int i = 0; i < 6; i++) {
// For Transform2D, use the 4th color (cyan) for the origin vector. // For Transform2D, use the 4th color (cyan) for the origin vector.
if (i % 3 == 2) { if (i % 3 == 2) {
spin[i]->set_custom_label_color(true, colors[3]); spin[i]->add_theme_color_override("label_color", colors[3]);
} else { } else {
spin[i]->set_custom_label_color(true, colors[i % 3]); spin[i]->add_theme_color_override("label_color", colors[i % 3]);
} }
} }
} break; } break;
@@ -2599,7 +2599,7 @@ void EditorPropertyBasis::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: { case NOTIFICATION_THEME_CHANGED: {
const Color *colors = _get_property_colors(); const Color *colors = _get_property_colors();
for (int i = 0; i < 9; i++) { for (int i = 0; i < 9; i++) {
spin[i]->set_custom_label_color(true, colors[i % 3]); spin[i]->add_theme_color_override("label_color", colors[i % 3]);
} }
} break; } break;
} }
@@ -2696,7 +2696,7 @@ void EditorPropertyTransform3D::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: { case NOTIFICATION_THEME_CHANGED: {
const Color *colors = _get_property_colors(); const Color *colors = _get_property_colors();
for (int i = 0; i < 12; i++) { for (int i = 0; i < 12; i++) {
spin[i]->set_custom_label_color(true, colors[i % 4]); spin[i]->add_theme_color_override("label_color", colors[i % 4]);
} }
} break; } break;
} }

View File

@@ -300,12 +300,7 @@ void EditorSpinSlider::_draw_spin_slider() {
int vofs = (size.height - font->get_height(font_size)) / 2 + font->get_ascent(font_size); int vofs = (size.height - font->get_height(font_size)) / 2 + font->get_ascent(font_size);
Color fc = get_theme_color(is_read_only() ? SNAME("font_uneditable_color") : SNAME("font_color"), SNAME("LineEdit")); Color fc = get_theme_color(is_read_only() ? SNAME("font_uneditable_color") : SNAME("font_color"), SNAME("LineEdit"));
Color lc; Color lc = get_theme_color(is_read_only() ? SNAME("read_only_label_color") : SNAME("label_color"));
if (use_custom_label_color) {
lc = custom_label_color;
} else {
lc = fc;
}
if (flat && !label.is_empty()) { if (flat && !label.is_empty()) {
Color label_bg_color = get_theme_color(SNAME("dark_color_3"), SNAME("Editor")); Color label_bg_color = get_theme_color(SNAME("dark_color_3"), SNAME("Editor"));
@@ -605,11 +600,6 @@ bool EditorSpinSlider::is_flat() const {
return flat; return flat;
} }
void EditorSpinSlider::set_custom_label_color(bool p_use_custom_label_color, Color p_custom_label_color) {
use_custom_label_color = p_use_custom_label_color;
custom_label_color = p_custom_label_color;
}
void EditorSpinSlider::_focus_entered() { void EditorSpinSlider::_focus_entered() {
_ensure_input_popup(); _ensure_input_popup();
Rect2 gr = get_screen_rect(); Rect2 gr = get_screen_rect();
@@ -689,5 +679,4 @@ EditorSpinSlider::EditorSpinSlider() {
value_input_just_closed = false; value_input_just_closed = false;
hide_slider = false; hide_slider = false;
read_only = false; read_only = false;
use_custom_label_color = false;
} }

View File

@@ -76,9 +76,6 @@ class EditorSpinSlider : public Range {
bool hide_slider; bool hide_slider;
bool flat; bool flat;
bool use_custom_label_color;
Color custom_label_color;
void _evaluate_input_text(); void _evaluate_input_text();
void _update_value_input_stylebox(); void _update_value_input_stylebox();
@@ -112,8 +109,6 @@ public:
void set_flat(bool p_enable); void set_flat(bool p_enable);
bool is_flat() const; bool is_flat() const;
void set_custom_label_color(bool p_use_custom_label_color, Color p_custom_label_color);
void setup_and_show() { _focus_entered(); } void setup_and_show() { _focus_entered(); }
LineEdit *get_line_edit(); LineEdit *get_line_edit();

View File

@@ -464,6 +464,14 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_color("axis_y_color", "Editor", Color(0.53, 0.84, 0.01)); theme->set_color("axis_y_color", "Editor", Color(0.53, 0.84, 0.01));
theme->set_color("axis_z_color", "Editor", Color(0.16, 0.55, 0.96)); theme->set_color("axis_z_color", "Editor", Color(0.16, 0.55, 0.96));
const float prop_color_saturation = accent_color.get_s() * 0.75;
const float prop_color_value = accent_color.get_v();
theme->set_color("property_color_x", "Editor", Color().from_hsv(0.0 / 3.0 + 0.05, prop_color_saturation, prop_color_value));
theme->set_color("property_color_y", "Editor", Color().from_hsv(1.0 / 3.0 + 0.05, prop_color_saturation, prop_color_value));
theme->set_color("property_color_z", "Editor", Color().from_hsv(2.0 / 3.0 + 0.05, prop_color_saturation, prop_color_value));
theme->set_color("property_color_w", "Editor", Color().from_hsv(1.5 / 3.0 + 0.05, prop_color_saturation, prop_color_value));
theme->set_color("font_color", "Editor", font_color); theme->set_color("font_color", "Editor", font_color);
theme->set_color("highlighted_font_color", "Editor", font_hover_color); theme->set_color("highlighted_font_color", "Editor", font_hover_color);
theme->set_color("disabled_font_color", "Editor", font_disabled_color); theme->set_color("disabled_font_color", "Editor", font_disabled_color);
@@ -864,6 +872,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_color("sub_inspector_property_color", "Editor", dark_theme ? Color(1, 1, 1, 1) : Color(0, 0, 0, 1)); theme->set_color("sub_inspector_property_color", "Editor", dark_theme ? Color(1, 1, 1, 1) : Color(0, 0, 0, 1));
theme->set_constant("sub_inspector_font_offset", "Editor", 4 * EDSCALE); theme->set_constant("sub_inspector_font_offset", "Editor", 4 * EDSCALE);
// EditorSpinSlider.
theme->set_color("label_color", "EditorSpinSlider", font_color);
theme->set_color("read_only_label_color", "EditorSpinSlider", font_readonly_color);
Ref<StyleBoxFlat> style_property_bg = style_default->duplicate(); Ref<StyleBoxFlat> style_property_bg = style_default->duplicate();
style_property_bg->set_bg_color(highlight_color); style_property_bg->set_bg_color(highlight_color);
style_property_bg->set_border_width_all(0); style_property_bg->set_border_width_all(0);

View File

@@ -53,7 +53,7 @@ void OpenTypeFeaturesEditor::_notification(int p_what) {
button->set_icon(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons"))); button->set_icon(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")));
button->set_size(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons"))->get_size()); button->set_size(get_theme_icon(SNAME("Remove"), SNAME("EditorIcons"))->get_size());
spin->set_custom_label_color(true, base); spin->add_theme_color_override("label_color", base);
} break; } break;
} }
} }