pendingApplyLayout: auch skippen wenn marker matched

Log nach E zeigte ZWEI Apply-Auslöser hintereinander:
1. Cold-Start in _on_ready (setzt marker) → 4 Panels remountet
2. pendingApplyLayout vom Launcher (~Sekunden später) → applied erneut
   weil pending-Pfad keinen marker-Vergleich machte → 8 Panels remountet

→ doppelte Re-Mount-Welle, riesiger versteckter Cost.

Fix: gleicher marker-Vergleich wie im _on_ready-Pfad. Wenn der gewuenschte
Layout-Name bereits persistent angewendet wurde, skippen + pending-Flag
trotzdem aus settings.json poppen.

Force-Apply-Use-Case (User klickt "Jetzt anwenden" im Launcher): Launcher
kann den marker vorher leeren (windowLayoutLastApplied="") um Re-Apply zu
erzwingen — bisher nicht im Launcher implementiert, kommt bei Bedarf.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-19 04:43:35 +02:00
parent ce81d42916
commit 0caa0f9813
+9
View File
@@ -1175,6 +1175,15 @@ class OberleisteBridge(panel_base.BaseBridge):
pend_layout = cfg.get("pendingApplyLayout") pend_layout = cfg.get("pendingApplyLayout")
if isinstance(pend_layout, str) and pend_layout: if isinstance(pend_layout, str) and pend_layout:
# Wenn das Layout bereits persistent angewendet wurde (z.B.
# vom Cold-Start-Apply paar Sekunden vorher), skippen wir den
# Re-Apply. Sonst triggert es eine zweite Re-Mount-Welle (ALLE
# Panels nochmal). Force-Apply (vom User-Klick im Launcher)
# kann marker vorher leeren um zu erzwingen.
if cfg.get("windowLayoutLastApplied") == pend_layout:
print("[OBERLEISTE] pendingApplyLayout '{}' bereits "
"persistent angewendet — skip Re-Apply".format(pend_layout))
else:
print("[OBERLEISTE] pendingApplyLayout:", pend_layout) print("[OBERLEISTE] pendingApplyLayout:", pend_layout)
if _apply_window_layout(pend_layout): if _apply_window_layout(pend_layout):
cfg["windowLayoutLastApplied"] = pend_layout cfg["windowLayoutLastApplied"] = pend_layout