Browse Source

fix CollisionShape3D Shape Size handle will missing
when Script editor floating

jsjtxietian 2 years ago
parent
commit
fec0396cac

+ 1 - 1
editor/editor_node.cpp

@@ -2357,7 +2357,7 @@ void EditorNode::_edit_current(bool p_skip_foreign) {
 			SceneTreeDock::get_singleton()->set_selected(current_node);
 			SceneTreeDock::get_singleton()->set_selected(current_node);
 			InspectorDock::get_singleton()->update(current_node);
 			InspectorDock::get_singleton()->update(current_node);
 			if (!inspector_only && !skip_main_plugin) {
 			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 {
 		} else {
 			NodeDock::get_singleton()->set_node(nullptr);
 			NodeDock::get_singleton()->set_node(nullptr);

+ 5 - 0
editor/plugins/script_editor_plugin.cpp

@@ -1791,6 +1791,10 @@ void ScriptEditor::ensure_select_current() {
 	_update_selected_editor_menu();
 	_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) {
 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) {
 	if (p_current != p_base && p_current->get_owner() != p_base) {
 		return;
 		return;
@@ -3747,6 +3751,7 @@ void ScriptEditor::_on_find_in_files_modified_files(PackedStringArray paths) {
 
 
 void ScriptEditor::_window_changed(bool p_visible) {
 void ScriptEditor::_window_changed(bool p_visible) {
 	make_floating->set_visible(!p_visible);
 	make_floating->set_visible(!p_visible);
+	is_floating = p_visible;
 }
 }
 
 
 void ScriptEditor::_filter_scripts_text_changed(const String &p_newtext) {
 void ScriptEditor::_filter_scripts_text_changed(const String &p_newtext) {

+ 3 - 0
editor/plugins/script_editor_plugin.h

@@ -274,6 +274,7 @@ class ScriptEditor : public PanelContainer {
 	Button *help_search = nullptr;
 	Button *help_search = nullptr;
 	Button *site_search = nullptr;
 	Button *site_search = nullptr;
 	Button *make_floating = nullptr;
 	Button *make_floating = nullptr;
+	bool is_floating = false;
 	EditorHelpSearch *help_search_dialog = nullptr;
 	EditorHelpSearch *help_search_dialog = nullptr;
 
 
 	ItemList *script_list = nullptr;
 	ItemList *script_list = nullptr;
@@ -507,6 +508,8 @@ public:
 
 
 	void ensure_select_current();
 	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); }
 	_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);
 	bool edit(const Ref<Resource> &p_resource, int p_line, int p_col, bool p_grab_focus = true);