mirror of
https://github.com/Redot-Engine/redot-engine.git
synced 2025-12-06 15:21:56 -05:00
Fix crash with AspectRatioContainer and TextureRect
This commit is contained in:
@@ -10,8 +10,9 @@
|
|||||||
<link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
|
<link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
<members>
|
<members>
|
||||||
<member name="expand_mode" type="int" setter="set_expand_mode" getter="get_expand_mode" enum="TextureRect.ExpandMode" default="0">
|
<member name="expand_mode" type="int" setter="set_expand_mode" getter="get_expand_mode" enum="TextureRect.ExpandMode" default="0" is_experimental="true">
|
||||||
Defines how minimum size is determined based on the texture's size. See [enum ExpandMode] for options.
|
Defines how minimum size is determined based on the texture's size. See [enum ExpandMode] for options.
|
||||||
|
[b]Note:[/b] Using [constant EXPAND_FIT_WIDTH], [constant EXPAND_FIT_WIDTH_PROPORTIONAL], [constant EXPAND_FIT_HEIGHT] or [constant EXPAND_FIT_HEIGHT_PROPORTIONAL] may result in unstable behavior in some containers. This functionality is being re-evaluated and will change in the future.
|
||||||
</member>
|
</member>
|
||||||
<member name="flip_h" type="bool" setter="set_flip_h" getter="is_flipped_h" default="false">
|
<member name="flip_h" type="bool" setter="set_flip_h" getter="is_flipped_h" default="false">
|
||||||
If [code]true[/code], texture is flipped horizontally.
|
If [code]true[/code], texture is flipped horizontally.
|
||||||
|
|||||||
@@ -30,6 +30,8 @@
|
|||||||
|
|
||||||
#include "aspect_ratio_container.h"
|
#include "aspect_ratio_container.h"
|
||||||
|
|
||||||
|
#include "scene/gui/texture_rect.h"
|
||||||
|
|
||||||
Size2 AspectRatioContainer::get_minimum_size() const {
|
Size2 AspectRatioContainer::get_minimum_size() const {
|
||||||
Size2 ms;
|
Size2 ms;
|
||||||
for (int i = 0; i < get_child_count(); i++) {
|
for (int i = 0; i < get_child_count(); i++) {
|
||||||
@@ -113,6 +115,16 @@ void AspectRatioContainer::_notification(int p_what) {
|
|||||||
if (c->is_set_as_top_level()) {
|
if (c->is_set_as_top_level()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Temporary fix for editor crash.
|
||||||
|
TextureRect *trect = Object::cast_to<TextureRect>(c);
|
||||||
|
if (trect) {
|
||||||
|
if (trect->get_expand_mode() == TextureRect::EXPAND_FIT_WIDTH_PROPORTIONAL || trect->get_expand_mode() == TextureRect::EXPAND_FIT_HEIGHT_PROPORTIONAL) {
|
||||||
|
WARN_PRINT_ONCE("Proportional TextureRect is currently not supported inside AspectRatioContainer");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Size2 child_minsize = c->get_combined_minimum_size();
|
Size2 child_minsize = c->get_combined_minimum_size();
|
||||||
Size2 child_size = Size2(ratio, 1.0);
|
Size2 child_size = Size2(ratio, 1.0);
|
||||||
float scale_factor = 1.0;
|
float scale_factor = 1.0;
|
||||||
|
|||||||
Reference in New Issue
Block a user