Browse Source

-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

Juan Linietsky 6 years ago
parent
commit
5f079e2ef9

+ 0 - 12
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) {

+ 1 - 1
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);

+ 1 - 2
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);

+ 7 - 0
editor/editor_settings.cpp

@@ -190,6 +190,11 @@ void EditorSettings::_get_property_list(List<PropertyInfo> *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<ConfigFile> 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);

+ 16 - 12
editor/editor_themes.cpp

@@ -238,16 +238,17 @@ Ref<Theme> create_editor_theme(const Ref<Theme> 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<Theme> create_editor_theme(const Ref<Theme> 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<Theme> create_editor_theme(const Ref<Theme> 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<Theme> create_editor_theme(const Ref<Theme> 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<Theme> create_editor_theme(const Ref<Theme> 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);
 

+ 0 - 11
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() {

+ 0 - 11
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: {
 

+ 5 - 1
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) {