From f139d0e4e65effc658a06c7957d34e93d4eb8b69 Mon Sep 17 00:00:00 2001 From: Zaven Muradyan Date: Tue, 12 Dec 2017 21:40:12 -0800 Subject: Account for folded code blocks when navigating via members list Previously, the editor would attempt to set the scroll position to the function's line number, but this would result in an invalid scroll whenever functions above the target were folded. This changes callback to use a combination of `goto_line` and `set_edit_state` to navigate to the target line and reset the cursor to column 0. Using `goto_line` also has the side effect of automatically unfolding the target function, which seems like useful behavior. Fixes #14572. --- editor/plugins/script_editor_plugin.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'editor/plugins/script_editor_plugin.cpp') diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index c02b3458e..b75d38244 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -1329,12 +1329,12 @@ void ScriptEditor::_members_overview_selected(int p_idx) { if (!se) { return; } - Dictionary state; - state["scroll_position"] = members_overview->get_item_metadata(p_idx); + // Go to the member's line and reset the cursor column. We can't just change scroll_position + // directly, since code might be folded. + se->goto_line(members_overview->get_item_metadata(p_idx)); + Dictionary state = se->get_edit_state(); state["column"] = 0; - state["row"] = members_overview->get_item_metadata(p_idx); se->set_edit_state(state); - se->ensure_focus(); } void ScriptEditor::_help_overview_selected(int p_idx) { -- cgit v1.2.3-70-g09d2