Prevented AutoSizeLabel from using container dimensions directly, which previously caused distorted, non‑uniform scaling and failed when the reference text size was zero
This commit is contained in:
@@ -1,12 +1,10 @@
|
||||
@tool
|
||||
extends Container
|
||||
|
||||
|
||||
@export_multiline var ref_size_text: String = ""
|
||||
var ref_size: Vector2
|
||||
@onready var label: Label = $Label
|
||||
|
||||
|
||||
func _notification(what: int) -> void:
|
||||
if what == NOTIFICATION_SORT_CHILDREN:
|
||||
_rescale()
|
||||
@@ -16,10 +14,12 @@ func _ready() -> void:
|
||||
var font: Font = label.get_theme_font("font")
|
||||
var font_size: int = label.get_theme_font_size("font_size")
|
||||
ref_size = font.get_multiline_string_size(ref_size_text, HORIZONTAL_ALIGNMENT_CENTER, -1, font_size)
|
||||
|
||||
|
||||
|
||||
func _rescale() -> void:
|
||||
label.pivot_offset = label.size / 2
|
||||
var min_size: float = minf(ref_size.x, ref_size.y)
|
||||
label.scale = size / min_size
|
||||
label.position = size / 2 - label.pivot_offset
|
||||
if ref_size.x == 0 or ref_size.y == 0:
|
||||
return
|
||||
var scale_factor: float = minf(size.x / ref_size.x, size.y / ref_size.y)
|
||||
label.scale = Vector2.ONE * scale_factor
|
||||
label.position = size / 2 - label.pivot_offset * label.scale
|
||||
|
||||
Reference in New Issue
Block a user