1
0
mirror of https://github.com/godotengine/godot.git synced 2025-12-02 16:48:55 +00:00

Merge pull request #109938 from KoBeWi/fokoos_rekto

Remove meta usage in Tree
This commit is contained in:
Thaddeus Crews
2025-11-10 17:47:04 -06:00
2 changed files with 9 additions and 7 deletions

View File

@@ -2402,11 +2402,11 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
} }
} }
if ((select_mode == SELECT_ROW && selected_item == p_item) || (select_mode == SELECT_MULTI && selected_item == p_item && selected_col == i) || p_item->cells[i].selected || !p_item->has_meta("__focus_rect")) { if ((select_mode == SELECT_ROW && selected_item == p_item) || (select_mode == SELECT_MULTI && selected_item == p_item && selected_col == i) || p_item->cells[i].selected || !p_item->focus_rect.has_area()) {
Rect2i r = cell_rect; Rect2i r = cell_rect;
if (select_mode != SELECT_ROW) { if (select_mode != SELECT_ROW) {
p_item->set_meta("__focus_rect", Rect2(r.position, r.size)); p_item->focus_rect = Rect2(r.position, r.size);
r = convert_rtl_rect(r); r = convert_rtl_rect(r);
if (p_item->cells[i].selected) { if (p_item->cells[i].selected) {
if (is_cell_hovered) { if (is_cell_hovered) {
@@ -2424,7 +2424,7 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
} }
} }
} else { } else {
p_item->set_meta("__focus_col_" + itos(i), Rect2(r.position, r.size)); p_item->cells.write[i].focus_rect = Rect2(r.position, r.size);
} }
} }
@@ -4483,9 +4483,9 @@ bool Tree::edit_selected(bool p_force_edit) {
Rect2 Tree::_get_item_focus_rect(const TreeItem *p_item) const { Rect2 Tree::_get_item_focus_rect(const TreeItem *p_item) const {
Rect2 rect; Rect2 rect;
if (select_mode == SELECT_ROW) { if (select_mode == SELECT_ROW) {
rect = p_item->get_meta("__focus_col_" + itos(selected_col)); rect = p_item->cells[selected_col].focus_rect;
} else { } else {
rect = p_item->get_meta("__focus_rect"); rect = p_item->focus_rect;
} }
return rect; return rect;
} }
@@ -4691,9 +4691,9 @@ void Tree::_accessibility_action_edit_custom(const Variant &p_data, TreeItem *p_
float popup_scale = popup_editor->is_embedded() ? 1.0 : popup_editor->get_parent_visible_window()->get_content_scale_factor(); float popup_scale = popup_editor->is_embedded() ? 1.0 : popup_editor->get_parent_visible_window()->get_content_scale_factor();
Rect2 rect; Rect2 rect;
if (select_mode == SELECT_ROW) { if (select_mode == SELECT_ROW) {
rect = p_item->get_meta("__focus_col_" + itos(p_col)); rect = p_item->cells[p_col].focus_rect;
} else { } else {
rect = p_item->get_meta("__focus_rect"); rect = p_item->focus_rect;
} }
rect.position *= popup_scale; rect.position *= popup_scale;

View File

@@ -100,6 +100,7 @@ private:
Color icon_color = Color(1, 1, 1); Color icon_color = Color(1, 1, 1);
Ref<StyleBox> custom_stylebox; Ref<StyleBox> custom_stylebox;
Rect2 focus_rect;
Size2i cached_minimum_size; Size2i cached_minimum_size;
bool cached_minimum_size_dirty = true; bool cached_minimum_size_dirty = true;
@@ -139,6 +140,7 @@ private:
Vector<Cell> cells; Vector<Cell> cells;
Rect2 focus_rect;
bool collapsed = false; // Won't show children. bool collapsed = false; // Won't show children.
bool visible = true; bool visible = true;
bool parent_visible_in_tree = true; bool parent_visible_in_tree = true;