Skip to content

Commit eb491cb

Browse files
committed
Merge pull request #122254 from bruvzg/scroll_ed_crash
[Editor] Fix crash on closing all scenes.
2 parents 01ebfdc + 7d7210b commit eb491cb

2 files changed

Lines changed: 6 additions & 6 deletions

File tree

editor/scene/scene_tree_editor.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,7 +1097,7 @@ bool SceneTreeEditor::_update_filter(TreeItem *p_parent, bool p_scroll_to_select
10971097
if (p_scroll_to_selected && last_selected) {
10981098
// Scrolling to the first selected in the _update_filter call above followed by the last
10991099
// selected here is enough to frame all selected items as well as possible.
1100-
callable_mp(tree, &Tree::scroll_to_item).call_deferred(last_selected, false);
1100+
callable_mp(this, &SceneTreeEditor::_tree_scroll_to_item).call_deferred(last_selected->get_instance_id(), false);
11011101
}
11021102
return result;
11031103
}
@@ -1233,7 +1233,7 @@ bool SceneTreeEditor::_update_filter_helper(TreeItem *p_parent, bool p_scroll_to
12331233
if (n && editor_selection->is_selected(n)) {
12341234
if (p_scroll_to_selected) {
12351235
// Needs to be deferred to account for possible root visibility change.
1236-
callable_mp(tree, &Tree::scroll_to_item).call_deferred(Variant(p_parent), false);
1236+
callable_mp(this, &SceneTreeEditor::_tree_scroll_to_item).call_deferred(p_parent->get_instance_id(), false);
12371237
} else {
12381238
r_last_selected = p_parent;
12391239
}
@@ -1459,11 +1459,11 @@ void SceneTreeEditor::_process_selection_update() {
14591459
emit_signal(SNAME("node_changed"));
14601460
}
14611461

1462-
void SceneTreeEditor::_tree_scroll_to_item(ObjectID p_item_id) {
1462+
void SceneTreeEditor::_tree_scroll_to_item(ObjectID p_item_id, bool p_center_on_item) {
14631463
ERR_FAIL_NULL(tree);
14641464
TreeItem *item = ObjectDB::get_instance<TreeItem>(p_item_id);
14651465
if (item) {
1466-
tree->scroll_to_item(item, true);
1466+
tree->scroll_to_item(item, p_center_on_item);
14671467
}
14681468
}
14691469

@@ -1530,7 +1530,7 @@ void SceneTreeEditor::_notification(int p_what) {
15301530
if (update_when_invisible) {
15311531
if (has_item) {
15321532
ObjectID item_id = item->get_instance_id();
1533-
callable_mp(this, &SceneTreeEditor::_tree_scroll_to_item).call_deferred(item_id);
1533+
callable_mp(this, &SceneTreeEditor::_tree_scroll_to_item).call_deferred(item_id, true);
15341534
}
15351535
} else {
15361536
callable_mp(this, &SceneTreeEditor::_update_tree).call_deferred(has_item);

editor/scene/scene_tree_editor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ class SceneTreeEditor : public Control {
208208
void _set_item_custom_color(TreeItem *p_item, Color p_color);
209209
void _update_node_tooltip(Node *p_node, TreeItem *p_item);
210210
void _queue_update_node_tooltip(Node *p_node, TreeItem *p_item);
211-
void _tree_scroll_to_item(ObjectID p_item_id);
211+
void _tree_scroll_to_item(ObjectID p_item_id, bool p_center_on_item);
212212
void _reset_visibility_drag();
213213

214214
void _selection_changed();

0 commit comments

Comments
 (0)