Fix: Datei-Menü komplett tot — id_pressed landete als Argument VOR dem Methodennamen (Sly-Befund 20.10. „Kartengröße ändern tut nichts“).
popup.id_pressed.connect(main.call.bind("_on_menu_action")) rief effektiv
call(6, "_on_menu_action") → „Cannot convert argument 1 from int to
StringName“ (map-builder.log 20.10., 2 Treffer) — KEIN Menü-Eintrag tat
etwas (Neue Map/Öffnen/Speichern/Kartengröße/Updates). Alle anderen
.call.bind-Stellen hängen an arg-losen Signalen (pressed/timeout) und
waren unbeeinträchtigt. Fix: Lambda mit expliziter Reihenfolge
(Stil wie grid_btn/contours_btn). Regression: test_resize_dialog stellt
jetzt den echten Klick nach (id_pressed.emit(6) am Datei-Popup) — vorher
rief die Suite _open_resize_dialog() direkt auf und sah den Bruch nicht.
Suiten: test_resize_dialog 42 OK, test_theme 35 OK, test_gui_smoke 92 OK, test_ux 137 OK.
This commit is contained in:
parent
f6c754115a
commit
f4cfe17594
2 changed files with 27 additions and 2 deletions
|
|
@ -61,7 +61,14 @@ func build() -> void:
|
||||||
popup.add_separator()
|
popup.add_separator()
|
||||||
popup.add_item("🔄 Updates prüfen", 7)
|
popup.add_item("🔄 Updates prüfen", 7)
|
||||||
popup.add_item("Beenden", 4)
|
popup.add_item("Beenden", 4)
|
||||||
popup.id_pressed.connect(main.call.bind("_on_menu_action"))
|
# FIX 20.10. (Sly-Befund „Kartengröße ändern tut nichts“): id_pressed sendet
|
||||||
|
# die Menü-ID. main.call.bind("_on_menu_action") hängt die ID aber ALS
|
||||||
|
# ARGUMENT an call() → effektiv call(6, "_on_menu_action") →
|
||||||
|
# „Cannot convert argument 1 from int to StringName“ (map-builder.log
|
||||||
|
# 20.10.) — das GESAMTE Datei-Menü verpufft, kein Eintrag tut etwas.
|
||||||
|
# Lambda macht die Reihenfolge (Name zuerst, ID als Argument) explizit,
|
||||||
|
# Stil wie grid_btn/contours_btn oben.
|
||||||
|
popup.id_pressed.connect(func(id: int) -> void: main.call("_on_menu_action", id))
|
||||||
add_child(file_menu)
|
add_child(file_menu)
|
||||||
|
|
||||||
undo_btn = Button.new()
|
undo_btn = Button.new()
|
||||||
|
|
|
||||||
|
|
@ -251,4 +251,22 @@ func _test_main_wiring() -> void:
|
||||||
_check((main.doc["spawn_zones"]["0"]["points"] as Array).size() == before_count,
|
_check((main.doc["spawn_zones"]["0"]["points"] as Array).size() == before_count,
|
||||||
"Drop aus: draußen liegende Spawn-Punkte bleiben in der Map")
|
"Drop aus: draußen liegende Spawn-Punkte bleiben in der Map")
|
||||||
_check(not bool(SvmapIO.save_to_file("/tmp/r3_drop_aus.svmap", main.doc)["ok"]),
|
_check(not bool(SvmapIO.save_to_file("/tmp/r3_drop_aus.svmap", main.doc)["ok"]),
|
||||||
"Drop aus + Punkte draußen: Speichern blockiert (V9), wie im Dialog gewarnt")
|
"Drop aus + Punkte draußen: Speichern blockiert (V9), wie im Dialog gewarnt")
|
||||||
|
|
||||||
|
# REGRESSION 20.10. (Sly-Befund „Kartengröße ändern tut nichts“): der
|
||||||
|
# ECHTE UI-Pfad ist das id_pressed-SIGNAL des Datei-Popups. Vorher hing
|
||||||
|
# main.call.bind("_on_menu_action") daran — die Menü-ID landete als
|
||||||
|
# ARGUMENT VOR dem Methodennamen (call(6, "_on_menu_action")) →
|
||||||
|
# „Cannot convert argument 1 from int to StringName“, das GESAMTE
|
||||||
|
# Datei-Menü war tot. Diese Suite rief _open_resize_dialog() direkt auf
|
||||||
|
# und sah den Bruch nicht — jetzt wird der echte Klick nachgestellt.
|
||||||
|
var file_menu_btn: MenuButton = null
|
||||||
|
for n in main.find_children("*", "MenuButton", true, false):
|
||||||
|
if n is MenuButton and n.text == "Datei":
|
||||||
|
file_menu_btn = n
|
||||||
|
_check(file_menu_btn != null, "Datei-Menü (MenuButton) gefunden")
|
||||||
|
if file_menu_btn != null:
|
||||||
|
main.resize_dialog.hide()
|
||||||
|
(file_menu_btn.get_popup() as PopupMenu).id_pressed.emit(6)
|
||||||
|
_check(main.resize_dialog.visible,
|
||||||
|
"Echter Menü-Klick (id_pressed=6) öffnet den Resize-Dialog")
|
||||||
Loading…
Reference in a new issue