From 3df61453615649a70cf6720c00461b2c703835e5 Mon Sep 17 00:00:00 2001 From: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com> Date: Sat, 20 Jan 2024 16:42:28 +0100 Subject: [PATCH] Redraw `TreeItem` on more changes * Custom font changes * Custom draw changes * Custom as button (cherry picked from commit 552594ffdcca599bf5d44a8b61f9a940ccab38e5) --- scene/gui/tree.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index 6ec8724a775..cf431282cf7 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -580,6 +580,8 @@ void TreeItem::set_custom_draw(int p_column, Object *p_object, const StringName cells.write[p_column].custom_draw_obj = p_object->get_instance_id(); cells.write[p_column].custom_draw_callback = p_callback; + + _changed_notify(p_column); } void TreeItem::set_collapsed(bool p_collapsed) { @@ -1290,8 +1292,14 @@ void TreeItem::clear_custom_color(int p_column) { void TreeItem::set_custom_font(int p_column, const Ref &p_font) { ERR_FAIL_INDEX(p_column, cells.size()); + if (cells[p_column].custom_font == p_font) { + return; + } + cells.write[p_column].custom_font = p_font; cells.write[p_column].cached_minimum_size_dirty = true; + + _changed_notify(p_column); } Ref TreeItem::get_custom_font(int p_column) const { @@ -1302,8 +1310,14 @@ Ref TreeItem::get_custom_font(int p_column) const { void TreeItem::set_custom_font_size(int p_column, int p_font_size) { ERR_FAIL_INDEX(p_column, cells.size()); + if (cells[p_column].custom_font_size == p_font_size) { + return; + } + cells.write[p_column].custom_font_size = p_font_size; cells.write[p_column].cached_minimum_size_dirty = true; + + _changed_notify(p_column); } int TreeItem::get_custom_font_size(int p_column) const { @@ -1352,8 +1366,14 @@ Color TreeItem::get_custom_bg_color(int p_column) const { void TreeItem::set_custom_as_button(int p_column, bool p_button) { ERR_FAIL_INDEX(p_column, cells.size()); + if (cells[p_column].custom_button == p_button) { + return; + } + cells.write[p_column].custom_button = p_button; cells.write[p_column].cached_minimum_size_dirty = true; + + _changed_notify(p_column); } bool TreeItem::is_custom_set_as_button(int p_column) const {