TopLogic - the automated application engine
  • Releases
  • Dokumentation
  • Github
  • Discord
  1. Home
  2. Releases
  3. TL_8.0.0-alpha8
  4. #29427

8.0.0-alpha8
TopLogic Release

2026-09-01

enhancement

major
#29404
Declarative " <switch>" view element for input-dependent detail views
#29425
Nicht-binäre String-Spalten datenbankunabhängig case-insensitive (Collation)
#29430
Complete the headless agent / script interface of the React view layer
#29447
Nacharbeiten zu #29088: Modellbasierte Zugriffsrechte
#29448
React: Verbesserungen der Tabellen im React-Layout
#29449
QueryExecutor sichert das Ergebnis einer Skriptausführung ab
minor
#29434
PrettyPrint für Workflow-Exporte
#29445
Kommandogruppen in den Rollenprofilen stabil sortieren
#29458
Self-Service: Einmal gesendete Mail kann nicht noch einmal gesendet werden
#29464
Default-Spalten in der Instanzensicht im Modell-Editor
#29480
Login vor geplantem Wartungsmodus
#29484
Beschreibungen (Tooltips) für die Modellelemente der tl-engine

defect

critical
#29465
React form: <size-constraint> without an upper bound rejects every non-empty text
#29468
A form's editing buffer is not a TLFormObjectBase, so identity-based constraints reject every edit
major
#29446
React: Zustand einer Seite über einen Reload hinweg erhalten
#29460
IllegalStateException "Control has no id!" beim Öffnen eines Dialogs bei offenem Popup-Dialog
#29492
Spalte LAYOUT_KEY zu kurz in TEMPLATE_LAYOUTS und LAYOUT_CONFIGURATIONS
#29493
Unnötige Datenbankabfragen bei Löschung von Objekten für historische Referenzen.
minor
#29423
Umgang mit Nutzernamen
#29427
ReactSplitPanelControl propagiert attach/detach nicht an seine Panes
#29456
Option "Zeilenobjekte verwenden" liefert GridTreeTableNodes anstatt Fachobjekte in Tabellenkonfiguration
#29457
Einheitliche Namen für Applikations-Logos
#29461
CommandDispatcher soll Gültigkeit des Ziel-Modells des Kommandos prüfen

update

critical
#29454
Update dependency org.jsoup:jsoup to v1.23.1 [SECURITY]
#29470
Update dependency org.apache.httpcomponents.client5:httpclient5 to v5.6.3 [SECURITY]
defect

minor

#29427

ReactSplitPanelControl propagiert attach/detach nicht an seine Panes

FollowUpReactUI

ReactSplitPanelControl (com.top_logic.layout.react, src/main/java/com/top_logic/layout/react/control/layout/ReactSplitPanelControl.java) hält seine Panes in _children, überschreibt aber weder propagateAttach() noch propagateDetach(). Jeder andere Container mit Kindern tut das: ReactCompositeControl, ReactStackControl, ReactInsetControl, ReactPanelControl, ReactTabBarControl, ReactDeckPaneControl, ReactDialogControl, ReactWindowControl, ReactSidebarControl, ReactDrawerControl, ReactSwitchControl.

Folge

Alles unterhalb eines <split-panel> gilt dauerhaft als nicht angezeigt (ReactControl#isAttached() bleibt false), obwohl es sichtbar ist. Der Javadoc von isAttached() verspricht das Gegenteil:

A control is attached between calls to attach() and detach(). It is detached while it exists in
memory but is not currently displayed (e.g. the inactive child of a one-of-N container like a
sidebar, tab-bar or deck-pane).

Da die meisten Sichten ihren Inhalt in einem <split-panel> anordnen, ist der Attach-Lebenszyklus dort praktisch abgeschaltet:

  • addAttachListener(...) / addDetachListener(...) feuern nie — Logik, die daran hängt, läuft dort nicht.
  • ReactControl#onAttach() registriert RoutingParticipant`s beim `RouteManager. Unterhalb eines Split-Panels passiert das nicht, eine Tab-Leiste dort schreibt also kein Route-Segment, obwohl ihre Tabs Routen deklarieren.
  • ReactTabBarControl.selectTab(...) und ReactSwitchControl rufen content.attach() nur if (isAttached()) auf. Der Inhalt bleibt dort also unattached, und ein detach() beim Wegschalten ist ein No-op.

Wie gefunden

Bei #29404: Die Toolbar-Beiträge eines versteckten Tabs (<form withEditMode="true"> in zwei Tabs ⇒ zwei „Bearbeiten"-Buttons, von denen einer ein unsichtbares Formular bearbeitet) sollten an Attach/Detach gekoppelt werden — FormElement.contributeEditCommands(...) und contributeFormCommands(...) melden ihre Commands heute bei der Erzeugung an und erst bei der Entsorgung ab. Das war nicht möglich, weil im Showcase (switch-demo.view.xml) die Tab-Leiste in einem <split-panel> sitzt und dort nie ein Attach stattfindet. Umgangen wurde es mit einem weiterleitenden Command-Scope pro Tab (ForwardingCommandScope, TabBarElement, TabDefinition.withActivation(...), ReactTabBarControl).

Vorschlag

  1. propagateAttach() / propagateDetach() in ReactSplitPanelControl implementieren (an alle Panes weiterreichen).
  2. Danach die Toolbar-Beiträge in FormElement generell an Attach/Detach koppeln statt an Erzeugung/Entsorgung. Der Sonderweg über ForwardingCommandScope im TabBarElement kann dann entfallen, und das Problem ist für jeden „einer von N"-Container gelöst, nicht nur für Tabs.

Zu klären

  • Routing: Mit (1) registrieren sich `RoutingParticipant`s unterhalb von Split-Panels erstmals. Tab-Wechsel dort würden dann die URL mitschreiben. Das ist vermutlich das gewollte Verhalten, ändert aber bestehende URLs — vor der Umsetzung prüfen.
  • Kollabierte Panes: Entscheiden, ob ein kollabiertes Pane als angezeigt gilt oder detached sein soll.
  • Get Started
  • Github
  • Discord
  • Das Unternehmen hinter TopLogic
  • Softwareentwicklung heute
  • Kontakt

© Copyright – Business Operation Systems GmbH

  • top-logic.com
  • Nutzungsbedingungen
  • Impressum
  • Rechtlicher Hinweis
  • Datenschutz
  • DE
  • Login