2.2 KiB
Journal-Eintrag: Fokus-Navigation & Keyboard-UX Korrektur (DeviceInitialization)
Datum: 18. April 2026 Status: Abgeschlossen Kontext: Desktop-Zentrale Onboarding
🔍 Problembeschreibung
Der User berichtete von anhaltenden Problemen bei der Tastatur-Navigation (Tabulator- und Enter-Taste) im DeviceInitialization-Screen. Trotz vorangegangener Optimierungen mit ImeAction.Next war der Fokus-Fluss in Compose Desktop unzuverlässig, insbesondere beim Wechsel zwischen MsSettingsField und Standard-OutlinedTextField sowie beim dynamischen Einblenden von Sektionen.
🛠️ Lösung & Implementierung
Um die Navigation absolut deterministisch zu machen, wurde von der automatischen Fokus-Suche auf eine explizite Focus-Requester-Kette umgestellt.
1. Explizite FocusRequester
In DeviceInitializationConfig.jvm.kt wurden FocusRequester für alle Hauptfelder definiert:
deviceNameFocussharedKeyFocusbackupPathFocus
2. Harte KeyboardActions
Anstatt sich auf focusManager.moveFocus(FocusDirection.Next) zu verlassen (was bei komplexen Hierarchien fehlschlagen kann), rufen die onNext-Handler nun explizit den requestFocus() des logisch nächsten Feldes auf.
Gerätename->sharedKeyFocus.requestFocus()Sync-Key->backupPathFocus.requestFocus()(falls Rolle = MASTER)
3. Dialog-Auto-Fokus
Beim Klick auf "+ Client hinzufügen" wird nun mittels LaunchedEffect sofort der Fokus auf das neue Eingabefeld (addClientNameFocus) gesetzt, was einen nahtlosen Übergang ohne Maus-Interaktion ermöglicht.
4. Komponenten-Refactoring
Die MsSettingsField-Komponente wurde erweitert, um den Modifier korrekt an das interne OutlinedTextField durchzureichen, was die Bindung der FocusRequester ermöglichte.
✅ Ergebnis
Die Tastatur-Navigation folgt nun exakt dem fachlichen Workflow:
- Gerätename (Enter/Tab) ->
- Sync-Key (Enter/Tab) ->
- Backup-Pfad (Enter/Tab) ->
- Interaktive Elemente (Slider/Buttons)
Dies entspricht dem professionellen Anspruch an eine hocheffiziente Desktop-Anwendung ("Information Density over White Space").
🏗️ [Lead Architect] 🧐 [QA Specialist] 🧹 [Curator]