From 5f079e2ef90dfc76887814e10b6ed16aa8fe88d9 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Wed, 6 Mar 2019 12:10:36 -0300 Subject: [PATCH] -Make tileset and meshlibrary edit in a separate inspector, fixes #26671 -Made relationship lines appear based on theme settings, not previous hack -Fix drawing of relationship lines (was broken) -Fix double initialization of theme settings --- editor/create_dialog.cpp | 12 ------------ editor/editor_node.cpp | 2 +- editor/editor_properties.cpp | 3 +-- editor/editor_settings.cpp | 7 +++++++ editor/editor_themes.cpp | 28 ++++++++++++++++------------ editor/scene_tree_editor.cpp | 11 ----------- editor/script_editor_debugger.cpp | 11 ----------- scene/gui/tree.cpp | 6 +++++- 8 files changed, 30 insertions(+), 50 deletions(-) diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp index fbc23aa8e219..f42154bd3942 100644 --- a/editor/create_dialog.cpp +++ b/editor/create_dialog.cpp @@ -113,18 +113,6 @@ void CreateDialog::popup_create(bool p_dont_clear, bool p_replace_mode) { _update_search(); - bool enable_rl = EditorSettings::get_singleton()->get("docks/scene_tree/draw_relationship_lines"); - Color rl_color = EditorSettings::get_singleton()->get("docks/scene_tree/relationship_line_color"); - - if (enable_rl) { - search_options->add_constant_override("draw_relationship_lines", 1); - search_options->add_color_override("relationship_line_color", rl_color); - search_options->add_constant_override("draw_guides", 0); - } else { - search_options->add_constant_override("draw_relationship_lines", 0); - search_options->add_constant_override("draw_guides", 1); - } - is_replace_mode = p_replace_mode; if (p_replace_mode) { diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index a29b50185cef..d940a9612357 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -5073,7 +5073,7 @@ EditorNode::EditorNode() { EDITOR_DEF("interface/inspector/horizontal_vector2_editing", false); EDITOR_DEF("interface/inspector/horizontal_vector_types_editing", true); EDITOR_DEF("interface/inspector/open_resources_in_current_inspector", true); - EDITOR_DEF("interface/inspector/resources_types_to_open_in_new_inspector", "SpatialMaterial,Script"); + EDITOR_DEF("interface/inspector/resources_to_open_in_new_inspector", "SpatialMaterial,Script,MeshLibrary,TileSet"); EDITOR_DEF("run/auto_save/save_before_running", true); theme_base = memnew(Control); diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index 2b8d5bf6c913..4f32fc7ac40c 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -3211,12 +3211,11 @@ bool EditorInspectorDefaultPlugin::parse_property(Object *p_object, Variant::Typ editor->setup(p_hint == PROPERTY_HINT_RESOURCE_TYPE ? p_hint_text : "Resource"); if (p_hint == PROPERTY_HINT_RESOURCE_TYPE) { - String open_in_new = EDITOR_GET("interface/inspector/resources_types_to_open_in_new_inspector"); + String open_in_new = EDITOR_GET("interface/inspector/resources_to_open_in_new_inspector"); for (int i = 0; i < open_in_new.get_slice_count(","); i++) { String type = open_in_new.get_slicec(',', i).strip_edges(); for (int j = 0; j < p_hint_text.get_slice_count(","); j++) { String inherits = p_hint_text.get_slicec(',', j); - if (ClassDB::is_parent_class(inherits, type)) { editor->set_use_sub_inspector(false); diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index c0e1e29df249..aa2b52617dce 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -190,6 +190,11 @@ void EditorSettings::_get_property_list(List *p_list) const { vc.order = v->order; vc.type = v->variant.get_type(); vc.save = v->save; + /*if (vc.save) { this should be implemented, but lets do after 3.1 is out. + if (v->initial.get_type() != Variant::NIL && v->initial == v->variant) { + vc.save = false; + } + }*/ vc.restart_if_changed = v->restart_if_changed; vclist.insert(vc); @@ -336,6 +341,8 @@ void EditorSettings::_load_defaults(Ref p_extra_config) { hints["interface/theme/base_color"] = PropertyInfo(Variant::COLOR, "interface/theme/base_color", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT); _initial_set("interface/theme/contrast", 0.25); hints["interface/theme/contrast"] = PropertyInfo(Variant::REAL, "interface/theme/contrast", PROPERTY_HINT_RANGE, "0.01, 1, 0.01"); + _initial_set("interface/theme/relationship_line_opacity", 0.1); + hints["interface/theme/relationship_line_opacity"] = PropertyInfo(Variant::REAL, "interface/theme/relationship_line_opacity", PROPERTY_HINT_RANGE, "0.00, 1, 0.01"); _initial_set("interface/theme/highlight_tabs", false); _initial_set("interface/theme/border_size", 1); _initial_set("interface/theme/use_graph_node_headers", false); diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index bc42a3f23bc0..c05db2571be2 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -238,16 +238,17 @@ Ref create_editor_theme(const Ref p_theme) { const float default_contrast = 0.25; //Theme settings - Color accent_color = EDITOR_DEF("interface/theme/accent_color", Color::html("#699ce8")); - Color base_color = EDITOR_DEF("interface/theme/base_color", Color::html("#323b4f")); - float contrast = EDITOR_DEF("interface/theme/contrast", default_contrast); + Color accent_color = EDITOR_GET("interface/theme/accent_color"); + Color base_color = EDITOR_GET("interface/theme/base_color"); + float contrast = EDITOR_GET("interface/theme/contrast"); + float relationship_line_opacity = EDITOR_GET("interface/theme/relationship_line_opacity"); - String preset = EDITOR_DEF("interface/theme/preset", "Default"); + String preset = EDITOR_GET("interface/theme/preset"); - bool highlight_tabs = EDITOR_DEF("interface/theme/highlight_tabs", false); - int border_size = EDITOR_DEF("interface/theme/border_size", 1); + bool highlight_tabs = EDITOR_GET("interface/theme/highlight_tabs"); + int border_size = EDITOR_GET("interface/theme/border_size"); - bool use_gn_headers = EDITOR_DEF("interface/theme/use_graph_node_headers", false); + bool use_gn_headers = EDITOR_GET("interface/theme/use_graph_node_headers"); Color preset_accent_color; Color preset_base_color; @@ -260,9 +261,9 @@ Ref create_editor_theme(const Ref p_theme) { preset_base_color = Color::html("#323b4f"); preset_contrast = default_contrast; } else if (preset == "Custom") { - accent_color = EDITOR_DEF("interface/theme/accent_color", Color::html("#699ce8")); - base_color = EDITOR_DEF("interface/theme/base_color", Color::html("#323b4f")); - contrast = EDITOR_DEF("interface/theme/contrast", default_contrast); + accent_color = EDITOR_GET("interface/theme/accent_color"); + base_color = EDITOR_GET("interface/theme/base_color"); + contrast = EDITOR_GET("interface/theme/contrast"); } else if (preset == "Alien") { preset_accent_color = Color::html("#1bfe99"); preset_base_color = Color::html("#2f373f"); @@ -368,7 +369,7 @@ Ref create_editor_theme(const Ref p_theme) { theme->set_color("error_color", "Editor", error_color); theme->set_color("property_color", "Editor", property_color); - const int thumb_size = EDITOR_DEF("filesystem/file_dialog/thumbnail_size", 64); + const int thumb_size = EDITOR_GET("filesystem/file_dialog/thumbnail_size"); theme->set_constant("scale", "Editor", EDSCALE); theme->set_constant("thumb_size", "Editor", thumb_size); theme->set_constant("dark_theme", "Editor", dark_theme); @@ -660,6 +661,7 @@ Ref create_editor_theme(const Ref p_theme) { theme->set_stylebox("bg", "Tree", style_tree_bg); const Color guide_color = Color(mono_color.r, mono_color.g, mono_color.b, 0.05); + Color relationship_line_color = Color(mono_color.r, mono_color.g, mono_color.b, relationship_line_opacity); // Tree theme->set_icon("checked", "Tree", theme->get_icon("GuiChecked", "EditorIcons")); theme->set_icon("unchecked", "Tree", theme->get_icon("GuiUnchecked", "EditorIcons")); @@ -678,13 +680,15 @@ Ref create_editor_theme(const Ref p_theme) { theme->set_color("font_color_selected", "Tree", mono_color); theme->set_color("title_button_color", "Tree", font_color); theme->set_color("guide_color", "Tree", guide_color); + theme->set_color("relationship_line_color", "Tree", relationship_line_color); theme->set_color("drop_position_color", "Tree", accent_color); theme->set_constant("vseparation", "Tree", (extra_spacing + default_margin_size) * EDSCALE); theme->set_constant("hseparation", "Tree", (extra_spacing + default_margin_size) * EDSCALE); theme->set_constant("guide_width", "Tree", border_width); theme->set_constant("item_margin", "Tree", 3 * default_margin_size * EDSCALE); theme->set_constant("button_margin", "Tree", default_margin_size * EDSCALE); - theme->set_constant("draw_relationship_lines", "Tree", 0); + theme->set_constant("draw_relationship_lines", "Tree", relationship_line_opacity >= 0.01); + theme->set_constant("draw_guides", "Tree", relationship_line_opacity < 0.01); theme->set_constant("scroll_border", "Tree", default_margin_size * EDSCALE); theme->set_constant("scroll_speed", "Tree", 12); diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp index 6602d2974fbe..4c23ae437ba3 100644 --- a/editor/scene_tree_editor.cpp +++ b/editor/scene_tree_editor.cpp @@ -979,17 +979,6 @@ void SceneTreeEditor::_warning_changed(Node *p_for_node) { } void SceneTreeEditor::_editor_settings_changed() { - bool enable_rl = EditorSettings::get_singleton()->get("docks/scene_tree/draw_relationship_lines"); - Color rl_color = EditorSettings::get_singleton()->get("docks/scene_tree/relationship_line_color"); - - if (enable_rl) { - tree->add_constant_override("draw_relationship_lines", 1); - tree->add_color_override("relationship_line_color", rl_color); - tree->add_constant_override("draw_guides", 0); - } else { - tree->add_constant_override("draw_relationship_lines", 0); - tree->add_constant_override("draw_guides", 1); - } } void SceneTreeEditor::_bind_methods() { diff --git a/editor/script_editor_debugger.cpp b/editor/script_editor_debugger.cpp index 6b7c4781dd56..ddb7f065aa27 100644 --- a/editor/script_editor_debugger.cpp +++ b/editor/script_editor_debugger.cpp @@ -1040,17 +1040,6 @@ void ScriptEditorDebugger::_notification(int p_what) { reason->add_color_override("font_color", get_color("error_color", "Editor")); - bool enable_rl = EditorSettings::get_singleton()->get("docks/scene_tree/draw_relationship_lines"); - Color rl_color = EditorSettings::get_singleton()->get("docks/scene_tree/relationship_line_color"); - - if (enable_rl) { - inspect_scene_tree->add_constant_override("draw_relationship_lines", 1); - inspect_scene_tree->add_color_override("relationship_line_color", rl_color); - inspect_scene_tree->add_constant_override("draw_guides", 0); - } else { - inspect_scene_tree->add_constant_override("draw_relationship_lines", 0); - inspect_scene_tree->add_constant_override("draw_guides", 1); - } } break; case NOTIFICATION_PROCESS: { diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index 236c4dbe63b7..49cad6fccfdd 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -1416,12 +1416,15 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2 TreeItem *c = p_item->children; + int prev_ofs = children_pos.y - cache.offset.y + p_draw_ofs.y; + while (c) { if (cache.draw_relationship_lines > 0 && (!hide_root || c->parent != root)) { int root_ofs = children_pos.x + ((p_item->disable_folding || hide_folding) ? cache.hseparation : cache.item_margin); int parent_ofs = p_pos.x + ((p_item->disable_folding || hide_folding) ? cache.hseparation : cache.item_margin); Point2i root_pos = Point2i(root_ofs, children_pos.y + label_h / 2) - cache.offset + p_draw_ofs; + if (c->get_children() != NULL) root_pos -= Point2i(cache.arrow->get_width(), 0); @@ -1434,12 +1437,13 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2 if (root_pos.y + line_width >= 0) { VisualServer::get_singleton()->canvas_item_add_line(ci, root_pos, Point2i(parent_pos.x - Math::floor(line_width / 2), root_pos.y), cache.relationship_line_color, line_width); - VisualServer::get_singleton()->canvas_item_add_line(ci, Point2i(parent_pos.x, root_pos.y), parent_pos, cache.relationship_line_color, line_width); + VisualServer::get_singleton()->canvas_item_add_line(ci, Point2i(parent_pos.x, root_pos.y), Point2i(parent_pos.x, prev_ofs), cache.relationship_line_color, line_width); } if (htotal < 0) { return -1; } + prev_ofs = root_pos.y; } if (htotal >= 0) {