From 85bee00f3d35e5cc98b822d907915aa5e2078fcd Mon Sep 17 00:00:00 2001 From: scopedvr-operator Date: Tue, 20 Oct 2026 09:20:13 +0000 Subject: [PATCH] U1-Nachbesserung (Operator, Sly-Befund 'Damit kann man nicht mehr arbeiten'): Werkzeugleiste erbte EditorPanel (=VBoxContainer) und wurde selbst senkrecht -> jeder Knopf eine fensterbreite Zeile (~440px), 3D-Fenster auf einen Streifen gedrueckt. Fix: toolbar.gd extends HBoxContainer + size_flags SHRINK_BEGIN; neue Groessenprobe in test_ui_layout (Leiste <=80px, Mittelbereich >=120px). --- src/ui/panels/toolbar.gd | 24 +++++++++++++++++++++++- tests/test_ui_layout.gd | 23 +++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/ui/panels/toolbar.gd b/src/ui/panels/toolbar.gd index 602a2f5..7ad8bbc 100644 --- a/src/ui/panels/toolbar.gd +++ b/src/ui/panels/toolbar.gd @@ -1,8 +1,30 @@ -extends "res://src/ui/panels/editor_panel.gd" +extends HBoxContainer ## Toolbar (aus main.gd ausgezogen, Karte t_eaccbfed U1 — Logik unverändert): ## Menü Datei + Undo/Redo + Gitter/Höhenlinien + Symmetrie + Toolbar-Aktionen ## aus der Registry (Karte prüfen, ▶ Karte testen). Neue Aktionen melden sich ## künftig in registry.gd an (U2–U7, T1-F5 bleibt unverändert erreichbar). +## +## NACHBESSERUNG 20.10. (Operator, Sly-Befund „Damit kann man nicht mehr +## arbeiten"): Diese Leiste erbte von EditorPanel (= VBoxContainer) und wurde +## dadurch SELBST senkrecht — jeder Knopf bekam eine eigene, fensterbreite +## Zeile, die Leiste wuchs auf ~11×40 px und drückte das 3D-Fenster auf einen +## Briefmarken-Streifen. Eine Leiste braucht eine WAAGERECHTE Zeile: extends +## HBoxContainer. Die Helfer der Basis (main-Zeiger, Label-Bauer) braucht nur +## die senkrechte Spalte; hier genügt der main-Zeiger. + +var main # src/ui/main.gd (script-erweitert → untypisiert) + + +func setup(p_main) -> void: + main = p_main + # Eine Leiste darf NIE in die Höhe wachsen (sie würde dem 3D-Fenster die + # Fläche wegnehmen): genau eine Knopfzeile, oben ausgerichtet. + size_flags_vertical = Control.SIZE_SHRINK_BEGIN + size_flags_horizontal = Control.SIZE_EXPAND_FILL + + +func panel_title() -> String: + return "Werkzeuge" var undo_btn: Button var redo_btn: Button diff --git a/tests/test_ui_layout.gd b/tests/test_ui_layout.gd index ead3c30..471cfab 100644 --- a/tests/test_ui_layout.gd +++ b/tests/test_ui_layout.gd @@ -36,6 +36,29 @@ func _init() -> void: await process_frame await process_frame + # --- 1b. GRÖSSEN-GEGENPROBE (Operator-Nachbesserung 20.10.) ---------------- + # Sly-Befund „Was ist das? Damit kann man nicht mehr arbeiten!" — Ursache war + # reine FLÄCHE, nicht Aufbau: die Werkzeugleiste erbte von EditorPanel + # (VBoxContainer) und wurde dadurch selbst senkrecht → ~11 Knöpfe untereinander, + # das 3D-Fenster auf einen Briefmarken-Streifen gedrückt. Aufbau-Tests sagen + # dazu nichts — deshalb hier echte Größen. + # WICHTIG (Lektion 20.10.): im headless-Testlauf ist das Wurzelfenster nur + # 64 px hoch — Prozentwerte gegen main.size.y sind deshalb Unsinn. Geprüft + # wird ABSOLUT, und zwar die Größe, die den Fehler ausmachte. + # main ist als Control typisiert — Skript-Eigenschaften über get() lesen + # (sonst Parse-Fehler „Invalid access to property"). Namen mit probe_*, + # damit sie nicht mit Variablen der übrigen Suite kollidieren. + var probe_top: Control = main.get("ui_top_bar") + _check(probe_top != null, "Größenprobe: Top-Bar vorhanden") + if probe_top != null: + _check(probe_top.size.y <= 80.0, + "Leiste ist EINE Zeile (Höhe %.0f px, Grenze 80)" % probe_top.size.y) + var probe_center: Control = main.find_child("MainSplit", true, false) + _check(probe_center != null, "Größenprobe: Mittelbereich (MainSplit) vorhanden") + if probe_center != null: + _check(probe_center.size.y >= 120.0, + "Mittelbereich hat echte Höhe (%.0f px, min 120)" % probe_center.size.y) + # --- 1. Registry-Tabelle ist die Autorität -------------------------------- var registry_script: GDScript = load("res://src/ui/panels/registry.gd") var ids: Array = []