diff options
author | Fabian Stiewitz <fabian@stiewitz.pw> | 2019-08-11 15:54:55 +0200 |
---|---|---|
committer | Fabian Stiewitz <fabian@stiewitz.pw> | 2019-08-11 16:55:01 +0200 |
commit | dcf65433f1fa103b46b67f9ae655b5a591152b51 (patch) | |
tree | 1415a27323ac1e2d5663839e0097512961274ce4 /scene/gui/tree.cpp | |
parent | 3418f76a9eab9f496e5b26310bd3bc1125b8119b (diff) | |
download | redot-engine-dcf65433f1fa103b46b67f9ae655b5a591152b51.tar.gz |
fix(Tree): get_meta condition
If an item in a Tree has never been selected, its metadata "__focus_rect"
is not set. If an unselected item is then edited (Tree::edit_selected()),
an error is thrown in console.
Diffstat (limited to 'scene/gui/tree.cpp')
-rw-r--r-- | scene/gui/tree.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index 6c8aa35e3c..146f090041 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -1181,23 +1181,22 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2 } } - if (p_item->cells[i].selected && select_mode != SELECT_ROW) { - + if (select_mode != SELECT_ROW && (p_item->cells[i].selected || selected_item == p_item)) { Rect2i r(cell_rect.position, cell_rect.size); + if (p_item->cells[i].text.size() > 0) { float icon_width = p_item->cells[i].get_icon_size().width; r.position.x += icon_width; r.size.x -= icon_width; } p_item->set_meta("__focus_rect", Rect2(r.position, r.size)); - if (has_focus()) { - cache.selected_focus->draw(ci, r); - } else { - cache.selected->draw(ci, r); - } - if (text_editor->is_visible_in_tree()) { - Vector2 ofs2(0, (text_editor->get_size().height - r.size.height) / 2); - text_editor->set_position(get_global_position() + r.position - ofs2); + + if (p_item->cells[i].selected) { + if (has_focus()) { + cache.selected_focus->draw(ci, r); + } else { + cache.selected->draw(ci, r); + } } } |