diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2021-06-09 11:28:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-09 11:28:19 +0200 |
commit | f178e7abd7d0af21d326f2e818bcd07a487b19fe (patch) | |
tree | 7e5030fc790e089a3b3e62610cc3d82a2da1ae30 | |
parent | 27cf525713ab013260fc7444185ecf0e8948b0eb (diff) | |
parent | 45fc6c4706a7f3081bf483e80d9d30a735596bbd (diff) |
Merge pull request #48834 from daniel-mcclintock/fix-distraction-free-state-loss
Fix out of sync ScriptEditor distraction mode when `Separate Distraction Mode` is Enabled
-rw-r--r-- | editor/editor_node.cpp | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 1c2fd50f0b..22d04add18 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -2161,9 +2161,14 @@ void EditorNode::_edit_current() { if (!inspector_only) { EditorPlugin *main_plugin = editor_data.get_editor(current_obj); - for (int i = 0; i < editor_table.size(); i++) { - if (editor_table[i] == main_plugin && !main_editor_buttons[i]->is_visible()) { - main_plugin = nullptr; //if button is not visible, then no plugin active + int plugin_index = 0; + for (; plugin_index < editor_table.size(); plugin_index++) { + if (editor_table[plugin_index] == main_plugin) { + if (!main_editor_buttons[plugin_index]->is_visible()) { + main_plugin = nullptr; //if button is not visible, then no plugin active + } + + break; } } @@ -2177,26 +2182,8 @@ void EditorNode::_edit_current() { else if (main_plugin != editor_plugin_screen && (!ScriptEditor::get_singleton() || !ScriptEditor::get_singleton()->is_visible_in_tree() || ScriptEditor::get_singleton()->can_take_away_focus())) { // update screen main_plugin - - if (!changing_scene) { - if (editor_plugin_screen) { - editor_plugin_screen->make_visible(false); - } - editor_plugin_screen = main_plugin; - editor_plugin_screen->edit(current_obj); - - editor_plugin_screen->make_visible(true); - - int plugin_count = editor_data.get_editor_plugin_count(); - for (int i = 0; i < plugin_count; i++) { - editor_data.get_editor_plugin(i)->notify_main_screen_changed(editor_plugin_screen->get_name()); - } - - for (int i = 0; i < editor_table.size(); i++) { - main_editor_buttons[i]->set_pressed(editor_table[i] == main_plugin); - } - } - + _editor_select(plugin_index); + main_plugin->edit(current_obj); } else { editor_plugin_screen->edit(current_obj); } |