Properly remember custom text color in scene tree
This commit is contained in:
parent
6da4ad1662
commit
b88007b6c5
@ -234,7 +234,7 @@ void SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) {
|
|||||||
item->add_button(0, get_theme_icon(SNAME("Script"), SNAME("EditorIcons")), BUTTON_SCRIPT);
|
item->add_button(0, get_theme_icon(SNAME("Script"), SNAME("EditorIcons")), BUTTON_SCRIPT);
|
||||||
} else {
|
} else {
|
||||||
//has no script (or script is a custom type)
|
//has no script (or script is a custom type)
|
||||||
item->set_custom_color(0, get_theme_color(SNAME("disabled_font_color"), SNAME("Editor")));
|
_set_item_custom_color(item, get_theme_color(SNAME("disabled_font_color"), SNAME("Editor")));
|
||||||
item->set_selectable(0, false);
|
item->set_selectable(0, false);
|
||||||
|
|
||||||
if (!scr.is_null()) { // make sure to mark the script if a custom type
|
if (!scr.is_null()) { // make sure to mark the script if a custom type
|
||||||
@ -251,11 +251,11 @@ void SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) {
|
|||||||
node_name += " " + TTR("(Connecting From)");
|
node_name += " " + TTR("(Connecting From)");
|
||||||
}
|
}
|
||||||
item->set_text(0, node_name);
|
item->set_text(0, node_name);
|
||||||
item->set_custom_color(0, accent);
|
_set_item_custom_color(item, accent);
|
||||||
}
|
}
|
||||||
} else if (part_of_subscene) {
|
} else if (part_of_subscene) {
|
||||||
if (valid_types.size() == 0) {
|
if (valid_types.size() == 0) {
|
||||||
item->set_custom_color(0, get_theme_color(SNAME("warning_color"), SNAME("Editor")));
|
_set_item_custom_color(item, get_theme_color(SNAME("warning_color"), SNAME("Editor")));
|
||||||
}
|
}
|
||||||
} else if (marked.has(p_node)) {
|
} else if (marked.has(p_node)) {
|
||||||
String node_name = p_node->get_name();
|
String node_name = p_node->get_name();
|
||||||
@ -264,15 +264,15 @@ void SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) {
|
|||||||
}
|
}
|
||||||
item->set_text(0, node_name);
|
item->set_text(0, node_name);
|
||||||
item->set_selectable(0, marked_selectable);
|
item->set_selectable(0, marked_selectable);
|
||||||
item->set_custom_color(0, get_theme_color(SNAME("accent_color"), SNAME("Editor")));
|
_set_item_custom_color(item, get_theme_color(SNAME("accent_color"), SNAME("Editor")));
|
||||||
} else if (!p_node->can_process()) {
|
} else if (!p_node->can_process()) {
|
||||||
item->set_custom_color(0, get_theme_color(SNAME("disabled_font_color"), SNAME("Editor")));
|
_set_item_custom_color(item, get_theme_color(SNAME("disabled_font_color"), SNAME("Editor")));
|
||||||
} else if (!marked_selectable && !marked_children_selectable) {
|
} else if (!marked_selectable && !marked_children_selectable) {
|
||||||
Node *node = p_node;
|
Node *node = p_node;
|
||||||
while (node) {
|
while (node) {
|
||||||
if (marked.has(node)) {
|
if (marked.has(node)) {
|
||||||
item->set_selectable(0, false);
|
item->set_selectable(0, false);
|
||||||
item->set_custom_color(0, get_theme_color(SNAME("error_color"), SNAME("Editor")));
|
_set_item_custom_color(item, get_theme_color(SNAME("error_color"), SNAME("Editor")));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
node = node->get_parent();
|
node = node->get_parent();
|
||||||
@ -500,7 +500,7 @@ void SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!valid) {
|
if (!valid) {
|
||||||
item->set_custom_color(0, get_theme_color(SNAME("disabled_font_color"), SNAME("Editor")));
|
_set_item_custom_color(item, get_theme_color(SNAME("disabled_font_color"), SNAME("Editor")));
|
||||||
item->set_selectable(0, false);
|
item->set_selectable(0, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -550,6 +550,11 @@ void SceneTreeEditor::_update_visibility_color(Node *p_node, TreeItem *p_item) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SceneTreeEditor::_set_item_custom_color(TreeItem *p_item, Color p_color) {
|
||||||
|
p_item->set_custom_color(0, p_color);
|
||||||
|
p_item->set_meta(SNAME("custom_color"), p_color);
|
||||||
|
}
|
||||||
|
|
||||||
void SceneTreeEditor::_node_script_changed(Node *p_node) {
|
void SceneTreeEditor::_node_script_changed(Node *p_node) {
|
||||||
if (tree_dirty) {
|
if (tree_dirty) {
|
||||||
return;
|
return;
|
||||||
@ -661,7 +666,12 @@ bool SceneTreeEditor::_update_filter(TreeItem *p_parent, bool p_scroll_to_select
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (selectable) {
|
if (selectable) {
|
||||||
|
Color custom_color = p_parent->get_meta(SNAME("custom_color"), Color(0, 0, 0, 0));
|
||||||
|
if (custom_color == Color(0, 0, 0, 0)) {
|
||||||
p_parent->clear_custom_color(0);
|
p_parent->clear_custom_color(0);
|
||||||
|
} else {
|
||||||
|
p_parent->set_custom_color(0, custom_color);
|
||||||
|
}
|
||||||
p_parent->set_selectable(0, true);
|
p_parent->set_selectable(0, true);
|
||||||
} else if (keep_for_children) {
|
} else if (keep_for_children) {
|
||||||
p_parent->set_custom_color(0, get_theme_color(SNAME("disabled_font_color"), SNAME("Editor")));
|
p_parent->set_custom_color(0, get_theme_color(SNAME("disabled_font_color"), SNAME("Editor")));
|
||||||
|
@ -117,6 +117,7 @@ class SceneTreeEditor : public Control {
|
|||||||
void _node_script_changed(Node *p_node);
|
void _node_script_changed(Node *p_node);
|
||||||
void _node_visibility_changed(Node *p_node);
|
void _node_visibility_changed(Node *p_node);
|
||||||
void _update_visibility_color(Node *p_node, TreeItem *p_item);
|
void _update_visibility_color(Node *p_node, TreeItem *p_item);
|
||||||
|
void _set_item_custom_color(TreeItem *p_item, Color p_color);
|
||||||
|
|
||||||
void _selection_changed();
|
void _selection_changed();
|
||||||
Node *get_scene_node();
|
Node *get_scene_node();
|
||||||
|
Loading…
Reference in New Issue
Block a user