extends SceneTree ## Diagnose-Probe: Wie groß wird der „Kartengröße ändern“-Dialog wirklich, ## und welcher Node drückt die Mindesthöhe hoch? (Sly-Befund 20.10.: Dialog ## viel zu lang, OK/Abbrechen unterhalb des Bildschirms.) ## Ausführen (mit Bildschirm): xvfb-run -a godot4 --path . --rendering-driver opengl3 -s res://tests/probe_resize_size.gd func _initialize() -> void: _run.call_deferred() func _run() -> void: var scene: PackedScene = load("res://core/scenes/main.tscn") var main: Control = scene.instantiate() root.add_child(main) await process_frame await process_frame main._start_with_new_map() # Auflösung der Probe-Umgebung (xvfb) ausgeben. print("PROBE viewport: ", root.size, " screen? ", DisplayServer.screen_get_size(0) if DisplayServer.get_name() != "headless" else "headless") main._open_resize_dialog() await process_frame await process_frame var dlg: ConfirmationDialog = main.resize_dialog print("PROBE dialog.visible=", dlg.visible, " size=", dlg.size, " min_size=", dlg.min_size) print("PROBE content_min=", dlg.get_contents_minimum_size()) var vbox: VBoxContainer = null for n in dlg.find_children("*", "VBoxContainer", true, false): vbox = n print("PROBE vbox.size=", vbox.size, " min=", vbox.get_combined_minimum_size()) for c in vbox.get_children(): if c is Control: var txt := str(c.get("text")) print("PROBE child ", c.get_class(), " '", txt.substr(0, min(txt.length(), 40)), "' size=", c.size, " min=", c.get_combined_minimum_size()) # FIX 20.10.b: Fenster muss im sichtbaren Bereich bleiben (Buttons sichtbar). var area: Vector2 = main.size var ok_btn := dlg.get_ok_button() var dlg_bottom := float(dlg.position.y) + float(dlg.size.y) print("PROBE fit: area=", area, " dlg.pos=", dlg.position, " dlg.size=", dlg.size, " dlg_bottom=", dlg_bottom, " im-Bild=", bool(dlg_bottom <= area.y and dlg.position.y >= 0.0)) # Sly-Szenario: Preset 256 klicken → Vorschau wächst NACH dem Öffnen → # Fenster muss neu verankert werden (Höhe gedeckelt/positioniert). main.resize_dialog.size_x_edit.value = 256.0 main.resize_dialog.size_z_edit.value = 256.0 await process_frame await process_frame await process_frame print("PROBE nach-256: dlg.pos=", dlg.position, " size=", dlg.size, " bottom=", float(dlg.position.y) + float(dlg.size.y), " im-Bild=", bool(float(dlg.position.y) + float(dlg.size.y) <= area.y)) # Neue-Map-Dialog zum Vergleich. main.new_dialog.popup_centered() await process_frame print("PROBE newmap size=", main.new_dialog.size, " content_min=", main.new_dialog.get_contents_minimum_size()) quit(0)