diff options
Diffstat (limited to 'editor')
-rw-r--r-- | editor/editor_settings_dialog.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/editor/editor_settings_dialog.cpp b/editor/editor_settings_dialog.cpp index 8ecdcfff65..c0113e281e 100644 --- a/editor/editor_settings_dialog.cpp +++ b/editor/editor_settings_dialog.cpp @@ -338,13 +338,15 @@ void EditorSettingsDialog::_update_shortcuts() { // Try go down tree TreeItem *ti_next = ti->get_first_child(); - // Try go across tree + // Try go to the next node via in-order traversal if (!ti_next) { - ti_next = ti->get_next(); - } - // Try go up tree, to next node - if (!ti_next) { - ti_next = ti->get_parent()->get_next(); + ti_next = ti; + while (ti_next && !ti_next->get_next()) { + ti_next = ti_next->get_parent(); + } + if (ti_next) { + ti_next = ti_next->get_next(); + } } ti = ti_next; |