diff options
-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 2520d662c5..687d3eb3d1 100644 --- a/editor/editor_settings_dialog.cpp +++ b/editor/editor_settings_dialog.cpp @@ -327,13 +327,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; |