2
0
Эх сурвалжийг харах

Merge pull request #79576 from YuriSizov/4.1-cherrypicks

Cherry-picks for the 4.1 branch (future 4.1.1) - 2nd batch
Yuri Sizov 2 жил өмнө
parent
commit
bd6af8e0ea

+ 5 - 1
CHANGELOG.md

@@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
 
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 
-## [4.1.1] - TBD
+## [4.1.1] - 2023-07-17
 
 See the [release announcement](https://godotengine.org/article/maintenance-release-godot-4-1-1) for details.
 
@@ -81,6 +81,7 @@ See the [release announcement](https://godotengine.org/article/maintenance-relea
 #### Animation
 
 - Fix infinite loop state check in `AnimationStateMachine` ([GH-79141](https://github.com/godotengine/godot/pull/79141)).
+- Fix `tween_property` on `Basis` to properly update its value ([GH-79426](https://github.com/godotengine/godot/pull/79426)).
 
 #### Buildsystem
 
@@ -103,6 +104,8 @@ See the [release announcement](https://godotengine.org/article/maintenance-relea
 - Fix dropping files from `res://` to `res://` ([GH-78914](https://github.com/godotengine/godot/pull/78914)).
 - Do not change a node unique name to the same name ([GH-78925](https://github.com/godotengine/godot/pull/78925)).
 - Collapse bottom panel if there is no active tab ([GH-79078](https://github.com/godotengine/godot/pull/79078)).
+- Fix `ui_cancel` action not closing `FindReplaceBar` ([GH-79079](https://github.com/godotengine/godot/pull/79079)).
+- Emit `history_changed` on merged UndoRedo actions ([GH-79484](https://github.com/godotengine/godot/pull/79484)).
 
 #### Export
 
@@ -319,6 +322,7 @@ See the [release announcement](https://godotengine.org/article/godot-4-1-is-here
 
 #### Core
 
+- The strings returned by `ResourceLoader::get_dependencies()` now include paths in addition to UIDs ([GH-73131](https://github.com/godotengine/godot/pull/73131)).
 - Optimize Node children management ([GH-75627](https://github.com/godotengine/godot/pull/75627)).
 - Deprecate `NOTIFICATION_MOVED_IN_PARENT` for `NOTIFICATION_CHILD_ORDER_CHANGED` ([GH-75701](https://github.com/godotengine/godot/pull/75701)).
 - Optimize `Node::add_child` validation ([GH-75760](https://github.com/godotengine/godot/pull/75760)).

+ 6 - 0
doc/classes/ResourceLoader.xml

@@ -35,6 +35,12 @@
 			<param index="0" name="path" type="String" />
 			<description>
 				Returns the dependencies for the resource at the given [param path].
+				[b]Note:[/b] The dependencies are returned with slices separated by [code]::[/code]. You can use [method String.get_slice] to get their components.
+				[codeblock]
+				for dep in ResourceLoader.get_dependencies(path):
+				    print(dep.get_slice("::", 0)) # Prints UID.
+				    print(dep.get_slice("::", 2)) # Prints path.
+				[/codeblock]
 			</description>
 		</method>
 		<method name="get_recognized_extensions_for_type">

+ 1 - 1
editor/code_editor.cpp

@@ -126,7 +126,7 @@ void FindReplaceBar::unhandled_input(const Ref<InputEvent> &p_event) {
 	if (k.is_valid() && k->is_action_pressed(SNAME("ui_cancel"), false, true)) {
 		Control *focus_owner = get_viewport()->gui_get_focus_owner();
 
-		if (text_editor->has_focus() || (focus_owner && vbc_lineedit->is_ancestor_of(focus_owner))) {
+		if (text_editor->has_focus() || (focus_owner && is_ancestor_of(focus_owner))) {
 			_hide_bar();
 			accept_event();
 		}

+ 1 - 1
editor/editor_node.cpp

@@ -1411,7 +1411,7 @@ void EditorNode::_dialog_display_load_error(String p_file, Error p_error) {
 				show_accept(vformat(TTR("Scene file '%s' appears to be invalid/corrupt."), p_file.get_file()), TTR("OK"));
 			} break;
 			case ERR_FILE_NOT_FOUND: {
-				show_accept(vformat(TTR("Missing file '%s' or one its dependencies."), p_file.get_file()), TTR("OK"));
+				show_accept(vformat(TTR("Missing file '%s' or one of its dependencies."), p_file.get_file()), TTR("OK"));
 			} break;
 			default: {
 				show_accept(vformat(TTR("Error while loading file '%s'."), p_file.get_file()), TTR("OK"));

+ 2 - 0
editor/editor_undo_redo_manager.cpp

@@ -264,6 +264,7 @@ void EditorUndoRedoManager::commit_action(bool p_execute) {
 						pending_action.action_name == prev_action.action_name && pending_action.action_name == pre_prev_action.action_name) {
 					pending_action = Action();
 					is_committing = false;
+					emit_signal(SNAME("history_changed"));
 					return;
 				}
 			} break;
@@ -272,6 +273,7 @@ void EditorUndoRedoManager::commit_action(bool p_execute) {
 				if (pending_action.merge_mode == prev_action.merge_mode && pending_action.action_name == prev_action.action_name) {
 					pending_action = Action();
 					is_committing = false;
+					emit_signal(SNAME("history_changed"));
 					return;
 				}
 			} break;

+ 4 - 1
editor/gui/scene_tree_editor.cpp

@@ -1208,8 +1208,11 @@ Variant SceneTreeEditor::get_drag_data_fw(const Point2 &p_point, Control *p_from
 		if (i < list_max) {
 			HBoxContainer *hb = memnew(HBoxContainer);
 			TextureRect *tf = memnew(TextureRect);
+			int icon_size = get_theme_constant(SNAME("class_icon_size"), SNAME("Editor"));
+			tf->set_custom_minimum_size(Size2(icon_size, icon_size));
+			tf->set_stretch_mode(TextureRect::STRETCH_KEEP_ASPECT_CENTERED);
+			tf->set_expand_mode(TextureRect::EXPAND_IGNORE_SIZE);
 			tf->set_texture(icons[i]);
-			tf->set_stretch_mode(TextureRect::STRETCH_KEEP_CENTERED);
 			hb->add_child(tf);
 			Label *label = memnew(Label(selected_nodes[i]->get_name()));
 			hb->add_child(label);

+ 6 - 0
scene/resources/animation.cpp

@@ -5508,6 +5508,9 @@ Variant Animation::add_variant(const Variant &a, const Variant &b) {
 			const ::AABB ab = b.operator ::AABB();
 			return ::AABB(aa.position + ab.position, aa.size + ab.size);
 		}
+		case Variant::BASIS: {
+			return (a.operator Basis()) * (b.operator Basis());
+		}
 		case Variant::QUATERNION: {
 			return (a.operator Quaternion()) * (b.operator Quaternion());
 		}
@@ -5555,6 +5558,9 @@ Variant Animation::subtract_variant(const Variant &a, const Variant &b) {
 			const ::AABB ab = b.operator ::AABB();
 			return ::AABB(aa.position - ab.position, aa.size - ab.size);
 		}
+		case Variant::BASIS: {
+			return (b.operator Basis()).inverse() * (a.operator Basis());
+		}
 		case Variant::QUATERNION: {
 			return (b.operator Quaternion()).inverse() * (a.operator Quaternion());
 		}

+ 1 - 1
version.py

@@ -3,7 +3,7 @@ name = "Godot Engine"
 major = 4
 minor = 1
 patch = 1
-status = "rc"
+status = "stable"
 module_config = ""
 year = 2023
 website = "https://godotengine.org"