From 472c94ce3e6cfe210f2687cadc19d64ad5f4c8f1 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Mon, 4 Mar 2019 16:44:39 -0300 Subject: [PATCH] Remove the "Open Editor" button, it will open automatically. --- editor/editor_node.cpp | 6 ++-- editor/editor_node.h | 2 +- editor/editor_properties.cpp | 48 ++++++++++++++++++++++++++++++++ editor/editor_properties.h | 3 ++ editor/editor_resource_preview.h | 18 ------------ 5 files changed, 55 insertions(+), 22 deletions(-) diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 83fb7ade403..a29b50185ce 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -1460,7 +1460,7 @@ void EditorNode::edit_item(Object *p_object) { _set_editing_top_editors(p_object); _display_top_editors(true); } else { - _hide_top_editors(); + hide_top_editors(); } } @@ -1498,7 +1498,7 @@ void EditorNode::_save_default_environment() { } } -void EditorNode::_hide_top_editors() { +void EditorNode::hide_top_editors() { _display_top_editors(false); @@ -1675,7 +1675,7 @@ void EditorNode::_edit_current() { } else if (!editor_plugins_over->get_plugins_list().empty()) { - _hide_top_editors(); + hide_top_editors(); } } diff --git a/editor/editor_node.h b/editor/editor_node.h index 192dc649e90..267c70c7737 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -452,7 +452,6 @@ private: void _instance_request(const Vector &p_files); - void _hide_top_editors(); void _display_top_editors(bool p_display); void _set_top_editors(Vector p_editor_plugins_over); void _set_editing_top_editors(Object *p_current_object); @@ -677,6 +676,7 @@ public: void edit_item(Object *p_object); void edit_item_resource(RES p_resource); bool item_has_editor(Object *p_object); + void hide_top_editors(); void open_request(const String &p_path); diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index a07cffb0787..7068ff3d766 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -2443,6 +2443,38 @@ void EditorPropertyResource::_open_editor_pressed() { } } +void EditorPropertyResource::_fold_other_editors(Object *p_self) { + + if (this == p_self) { + return; + } + + RES res = get_edited_object()->get(get_edited_property()); + + if (!res.is_valid()) + return; + bool use_editor = false; + for (int i = 0; i < EditorNode::get_singleton()->get_editor_data().get_editor_plugin_count(); i++) { + EditorPlugin *ep = EditorNode::get_singleton()->get_editor_data().get_editor_plugin(i); + if (ep->handles(res.ptr())) { + use_editor = true; + } + } + + if (!use_editor) + return; + bool unfolded = get_edited_object()->editor_is_section_unfolded(get_edited_property()); + + if (unfolded) { + //refold + assign->set_pressed(false); + get_edited_object()->editor_set_section_unfold(get_edited_property(), false); + update_property(); + } + + opened_editor = false; +} + void EditorPropertyResource::update_property() { RES res = get_edited_object()->get(get_edited_property()); @@ -2487,12 +2519,20 @@ void EditorPropertyResource::update_property() { } if (use_editor) { + //open editor directly and hide other open of these + _open_editor_pressed(); + if (is_inside_tree()) { + get_tree()->call_deferred("call_group", "_editor_resource_properties", "_fold_other_editors", this); + } + opened_editor = true; + /* Button *open_in_editor = memnew(Button); open_in_editor->set_text(TTR("Open Editor")); open_in_editor->set_icon(get_icon("Edit", "EditorIcons")); sub_inspector_vbox->add_child(open_in_editor); open_in_editor->connect("pressed", this, "_open_editor_pressed"); open_in_editor->set_h_size_flags(SIZE_SHRINK_CENTER); + */ } } @@ -2506,6 +2546,10 @@ void EditorPropertyResource::update_property() { memdelete(sub_inspector_vbox); sub_inspector = NULL; sub_inspector_vbox = NULL; + if (opened_editor) { + EditorNode::get_singleton()->hide_top_editors(); + opened_editor = false; + } } } #endif @@ -2726,10 +2770,12 @@ void EditorPropertyResource::_bind_methods() { ClassDB::bind_method(D_METHOD("_button_draw"), &EditorPropertyResource::_button_draw); ClassDB::bind_method(D_METHOD("_open_editor_pressed"), &EditorPropertyResource::_open_editor_pressed); ClassDB::bind_method(D_METHOD("_button_input"), &EditorPropertyResource::_button_input); + ClassDB::bind_method(D_METHOD("_fold_other_editors"), &EditorPropertyResource::_fold_other_editors); } EditorPropertyResource::EditorPropertyResource() { + opened_editor = true; sub_inspector = NULL; sub_inspector_vbox = NULL; use_sub_inspector = bool(EDITOR_GET("interface/inspector/open_resources_in_current_inspector")); @@ -2766,6 +2812,8 @@ EditorPropertyResource::EditorPropertyResource() { file = NULL; scene_tree = NULL; dropping = false; + + add_to_group("_editor_resource_properties"); } ////////////// DEFAULT PLUGIN ////////////////////// diff --git a/editor/editor_properties.h b/editor/editor_properties.h index df01ee83b53..574767890ca 100644 --- a/editor/editor_properties.h +++ b/editor/editor_properties.h @@ -581,6 +581,9 @@ class EditorPropertyResource : public EditorProperty { void _button_input(const Ref &p_event); void _open_editor_pressed(); + void _fold_other_editors(Object *p_self); + + bool opened_editor; protected: static void _bind_methods(); diff --git a/editor/editor_resource_preview.h b/editor/editor_resource_preview.h index 703ba34e43a..9b9223a818f 100644 --- a/editor/editor_resource_preview.h +++ b/editor/editor_resource_preview.h @@ -36,24 +36,6 @@ #include "scene/main/node.h" #include "scene/resources/texture.h" -/* make previews for: -*packdscene -*wav -*image -*mesh --font -*script -*material --shader --shader graph? --navigation mesh --collision? --occluder polygon --navigation polygon --tileset --curve and curve2D -*/ - class EditorResourcePreviewGenerator : public Reference { GDCLASS(EditorResourcePreviewGenerator, Reference);