Merge pull request #79576 from YuriSizov/4.1-cherrypicks
Cherry-picks for the 4.1 branch (future 4.1.1) - 2nd batch
This commit is contained in:
commit
bd6af8e0ea
|
@ -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/).
|
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.
|
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
|
#### Animation
|
||||||
|
|
||||||
- Fix infinite loop state check in `AnimationStateMachine` ([GH-79141](https://github.com/godotengine/godot/pull/79141)).
|
- 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
|
#### 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)).
|
- 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)).
|
- 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)).
|
- 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
|
#### Export
|
||||||
|
|
||||||
|
@ -319,6 +322,7 @@ See the [release announcement](https://godotengine.org/article/godot-4-1-is-here
|
||||||
|
|
||||||
#### Core
|
#### 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)).
|
- 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)).
|
- 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)).
|
- Optimize `Node::add_child` validation ([GH-75760](https://github.com/godotengine/godot/pull/75760)).
|
||||||
|
|
|
@ -35,6 +35,12 @@
|
||||||
<param index="0" name="path" type="String" />
|
<param index="0" name="path" type="String" />
|
||||||
<description>
|
<description>
|
||||||
Returns the dependencies for the resource at the given [param path].
|
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>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="get_recognized_extensions_for_type">
|
<method name="get_recognized_extensions_for_type">
|
||||||
|
|
|
@ -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)) {
|
if (k.is_valid() && k->is_action_pressed(SNAME("ui_cancel"), false, true)) {
|
||||||
Control *focus_owner = get_viewport()->gui_get_focus_owner();
|
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();
|
_hide_bar();
|
||||||
accept_event();
|
accept_event();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"));
|
show_accept(vformat(TTR("Scene file '%s' appears to be invalid/corrupt."), p_file.get_file()), TTR("OK"));
|
||||||
} break;
|
} break;
|
||||||
case ERR_FILE_NOT_FOUND: {
|
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;
|
} break;
|
||||||
default: {
|
default: {
|
||||||
show_accept(vformat(TTR("Error while loading file '%s'."), p_file.get_file()), TTR("OK"));
|
show_accept(vformat(TTR("Error while loading file '%s'."), p_file.get_file()), TTR("OK"));
|
||||||
|
|
|
@ -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_name == prev_action.action_name && pending_action.action_name == pre_prev_action.action_name) {
|
||||||
pending_action = Action();
|
pending_action = Action();
|
||||||
is_committing = false;
|
is_committing = false;
|
||||||
|
emit_signal(SNAME("history_changed"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} break;
|
} 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) {
|
if (pending_action.merge_mode == prev_action.merge_mode && pending_action.action_name == prev_action.action_name) {
|
||||||
pending_action = Action();
|
pending_action = Action();
|
||||||
is_committing = false;
|
is_committing = false;
|
||||||
|
emit_signal(SNAME("history_changed"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
|
@ -1208,8 +1208,11 @@ Variant SceneTreeEditor::get_drag_data_fw(const Point2 &p_point, Control *p_from
|
||||||
if (i < list_max) {
|
if (i < list_max) {
|
||||||
HBoxContainer *hb = memnew(HBoxContainer);
|
HBoxContainer *hb = memnew(HBoxContainer);
|
||||||
TextureRect *tf = memnew(TextureRect);
|
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_texture(icons[i]);
|
||||||
tf->set_stretch_mode(TextureRect::STRETCH_KEEP_CENTERED);
|
|
||||||
hb->add_child(tf);
|
hb->add_child(tf);
|
||||||
Label *label = memnew(Label(selected_nodes[i]->get_name()));
|
Label *label = memnew(Label(selected_nodes[i]->get_name()));
|
||||||
hb->add_child(label);
|
hb->add_child(label);
|
||||||
|
|
|
@ -5508,6 +5508,9 @@ Variant Animation::add_variant(const Variant &a, const Variant &b) {
|
||||||
const ::AABB ab = b.operator ::AABB();
|
const ::AABB ab = b.operator ::AABB();
|
||||||
return ::AABB(aa.position + ab.position, aa.size + ab.size);
|
return ::AABB(aa.position + ab.position, aa.size + ab.size);
|
||||||
}
|
}
|
||||||
|
case Variant::BASIS: {
|
||||||
|
return (a.operator Basis()) * (b.operator Basis());
|
||||||
|
}
|
||||||
case Variant::QUATERNION: {
|
case Variant::QUATERNION: {
|
||||||
return (a.operator Quaternion()) * (b.operator 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();
|
const ::AABB ab = b.operator ::AABB();
|
||||||
return ::AABB(aa.position - ab.position, aa.size - ab.size);
|
return ::AABB(aa.position - ab.position, aa.size - ab.size);
|
||||||
}
|
}
|
||||||
|
case Variant::BASIS: {
|
||||||
|
return (b.operator Basis()).inverse() * (a.operator Basis());
|
||||||
|
}
|
||||||
case Variant::QUATERNION: {
|
case Variant::QUATERNION: {
|
||||||
return (b.operator Quaternion()).inverse() * (a.operator Quaternion());
|
return (b.operator Quaternion()).inverse() * (a.operator Quaternion());
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ name = "Godot Engine"
|
||||||
major = 4
|
major = 4
|
||||||
minor = 1
|
minor = 1
|
||||||
patch = 1
|
patch = 1
|
||||||
status = "rc"
|
status = "stable"
|
||||||
module_config = ""
|
module_config = ""
|
||||||
year = 2023
|
year = 2023
|
||||||
website = "https://godotengine.org"
|
website = "https://godotengine.org"
|
||||||
|
|
Loading…
Reference in New Issue