diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-08-17 11:27:04 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-08-17 11:27:04 +0200 |
commit | c7356c795b3c8cec2453061299e85cb315a9a6a7 (patch) | |
tree | bf4cbf58ac83b438d4492b2ea444eb203937dfbc | |
parent | 04306777a7c75d49bfb47f484cda29ef939a92b7 (diff) | |
parent | fec0396cacc29907fdd6d8a1eb05dec1a177123d (diff) | |
download | redot-engine-c7356c795b3c8cec2453061299e85cb315a9a6a7.tar.gz |
Merge pull request #80647 from jsjtxietian/CollisionShape3D-Shape-Size-handles-missing-when-Script-editor-floating
Fix 2D/3D viewport context switching issues when script editor is floating
-rw-r--r-- | editor/editor_node.cpp | 2 | ||||
-rw-r--r-- | editor/plugins/script_editor_plugin.cpp | 5 | ||||
-rw-r--r-- | editor/plugins/script_editor_plugin.h | 3 |
3 files changed, 9 insertions, 1 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index d9e392e852..c6f5a6082b 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -2357,7 +2357,7 @@ void EditorNode::_edit_current(bool p_skip_foreign) { SceneTreeDock::get_singleton()->set_selected(current_node); InspectorDock::get_singleton()->update(current_node); if (!inspector_only && !skip_main_plugin) { - skip_main_plugin = stay_in_script_editor_on_node_selected && ScriptEditor::get_singleton()->is_visible_in_tree(); + skip_main_plugin = stay_in_script_editor_on_node_selected && !ScriptEditor::get_singleton()->is_editor_floating() && ScriptEditor::get_singleton()->is_visible_in_tree(); } } else { NodeDock::get_singleton()->set_node(nullptr); diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index 67df349e48..eb0e20a12e 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -1791,6 +1791,10 @@ void ScriptEditor::ensure_select_current() { _update_selected_editor_menu(); } +bool ScriptEditor::is_editor_floating() { + return is_floating; +} + void ScriptEditor::_find_scripts(Node *p_base, Node *p_current, HashSet<Ref<Script>> &used) { if (p_current != p_base && p_current->get_owner() != p_base) { return; @@ -3747,6 +3751,7 @@ void ScriptEditor::_on_find_in_files_modified_files(PackedStringArray paths) { void ScriptEditor::_window_changed(bool p_visible) { make_floating->set_visible(!p_visible); + is_floating = p_visible; } void ScriptEditor::_filter_scripts_text_changed(const String &p_newtext) { diff --git a/editor/plugins/script_editor_plugin.h b/editor/plugins/script_editor_plugin.h index 198aaa6c4e..a33c877d2d 100644 --- a/editor/plugins/script_editor_plugin.h +++ b/editor/plugins/script_editor_plugin.h @@ -274,6 +274,7 @@ class ScriptEditor : public PanelContainer { Button *help_search = nullptr; Button *site_search = nullptr; Button *make_floating = nullptr; + bool is_floating = false; EditorHelpSearch *help_search_dialog = nullptr; ItemList *script_list = nullptr; @@ -507,6 +508,8 @@ public: void ensure_select_current(); + bool is_editor_floating(); + _FORCE_INLINE_ bool edit(const Ref<Resource> &p_resource, bool p_grab_focus = true) { return edit(p_resource, -1, 0, p_grab_focus); } bool edit(const Ref<Resource> &p_resource, int p_line, int p_col, bool p_grab_focus = true); |