From d51f33e1b4005fc8c494f42361e0f61b0135b8b8 Mon Sep 17 00:00:00 2001 From: Konrad Gadzina Date: Sun, 16 Mar 2025 10:36:01 +0100 Subject: [PATCH] Fix game crashes when adding color preset after clearing presets in another control --- scene/gui/color_picker.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp index 426e0092d71..655988b3d16 100644 --- a/scene/gui/color_picker.cpp +++ b/scene/gui/color_picker.cpp @@ -1138,16 +1138,21 @@ void ColorPicker::add_preset(const Color &p_color) { List::Element *e = presets.find(p_color); if (e) { presets.move_to_back(e); - preset_cache.move_to_back(preset_cache.find(p_color)); preset_container->move_child(preset_group->get_pressed_button(), preset_container->get_child_count() - 1); } else { presets.push_back(p_color); - preset_cache.push_back(p_color); _add_preset_button(_get_preset_size(), p_color); } + List::Element *cache_e = preset_cache.find(p_color); + if (cache_e) { + preset_cache.move_to_back(cache_e); + } else { + preset_cache.push_back(p_color); + } + if (!palette_name->get_text().is_empty()) { palette_name->set_text(vformat("%s*", palette_name->get_text().trim_suffix("*"))); palette_name->set_tooltip_text(ETR("The changes to this palette have not been saved to a file."));