Skip to content

Commit d30214a

Browse files
committed
Merge pull request godotengine#109938 from KoBeWi/fokoos_rekto
Remove meta usage in Tree
2 parents ddbb898 + a981863 commit d30214a

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

scene/gui/tree.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2402,11 +2402,11 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
24022402
}
24032403
}
24042404

2405-
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")) {
2405+
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()) {
24062406
Rect2i r = cell_rect;
24072407

24082408
if (select_mode != SELECT_ROW) {
2409-
p_item->set_meta("__focus_rect", Rect2(r.position, r.size));
2409+
p_item->focus_rect = Rect2(r.position, r.size);
24102410
r = convert_rtl_rect(r);
24112411
if (p_item->cells[i].selected) {
24122412
if (is_cell_hovered) {
@@ -2424,7 +2424,7 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
24242424
}
24252425
}
24262426
} else {
2427-
p_item->set_meta("__focus_col_" + itos(i), Rect2(r.position, r.size));
2427+
p_item->cells.write[i].focus_rect = Rect2(r.position, r.size);
24282428
}
24292429
}
24302430

@@ -4483,9 +4483,9 @@ bool Tree::edit_selected(bool p_force_edit) {
44834483
Rect2 Tree::_get_item_focus_rect(const TreeItem *p_item) const {
44844484
Rect2 rect;
44854485
if (select_mode == SELECT_ROW) {
4486-
rect = p_item->get_meta("__focus_col_" + itos(selected_col));
4486+
rect = p_item->cells[selected_col].focus_rect;
44874487
} else {
4488-
rect = p_item->get_meta("__focus_rect");
4488+
rect = p_item->focus_rect;
44894489
}
44904490
return rect;
44914491
}
@@ -4691,9 +4691,9 @@ void Tree::_accessibility_action_edit_custom(const Variant &p_data, TreeItem *p_
46914691
float popup_scale = popup_editor->is_embedded() ? 1.0 : popup_editor->get_parent_visible_window()->get_content_scale_factor();
46924692
Rect2 rect;
46934693
if (select_mode == SELECT_ROW) {
4694-
rect = p_item->get_meta("__focus_col_" + itos(p_col));
4694+
rect = p_item->cells[p_col].focus_rect;
46954695
} else {
4696-
rect = p_item->get_meta("__focus_rect");
4696+
rect = p_item->focus_rect;
46974697
}
46984698
rect.position *= popup_scale;
46994699

scene/gui/tree.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ class TreeItem : public Object {
100100
Color icon_color = Color(1, 1, 1);
101101
Ref<StyleBox> custom_stylebox;
102102

103+
Rect2 focus_rect;
103104
Size2i cached_minimum_size;
104105
bool cached_minimum_size_dirty = true;
105106

@@ -139,6 +140,7 @@ class TreeItem : public Object {
139140

140141
Vector<Cell> cells;
141142

143+
Rect2 focus_rect;
142144
bool collapsed = false; // Won't show children.
143145
bool visible = true;
144146
bool parent_visible_in_tree = true;

0 commit comments

Comments
 (0)