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;
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);
if (p_item->cells[i].selected) {
if (is_cell_hovered) {
@@ -2424,7 +2424,7 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
}
}
} 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 rect;
if (select_mode == SELECT_ROW) {
rect = p_item->get_meta("__focus_col_" + itos(selected_col));
rect = p_item->cells[selected_col].focus_rect;
} else {
rect = p_item->get_meta("__focus_rect");
rect = p_item->focus_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();
Rect2 rect;
if (select_mode == SELECT_ROW) {
rect = p_item->get_meta("__focus_col_" + itos(p_col));
rect = p_item->cells[p_col].focus_rect;
} else {
rect = p_item->get_meta("__focus_rect");
rect = p_item->focus_rect;
}
rect.position *= popup_scale;