Presentatiemodus: na Escape springt de editor terug naar de startdia i.p.v. de dia waar je stopte #1111
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1111
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wat er misgaat
Start je een presentatie op dia X, blader je door naar dia Y, en druk je dan op Escape, dan staat de editor daarna weer op dia X (waar je begon) in plaats van op Y (waar je stopte).
Dat is meestal niet gewenst: wie tijdens het presenteren op Escape drukt op een bepaalde dia, doet dat vaak met een reden (daar iets aanpassen of nakijken) en wil op díe dia verder.
Gewenst gedrag
Na het verlaten van de presentatie selecteert de editor de dia die op dat moment in beeld was.
Waar / oorzaak
lib/widgets/shell/shell_actions_present.dart: de presenter wordt gestart metinitialIndex: renderInitial(afgeleid vaneditor.selectedIndex). Ná afloop doetpresenting.then((_) { if (liveEdited) deckNotifier.refreshEditorFields(); })niets met de eindpositie.lib/widgets/presentation/fullscreen_presenter.dart,_exit()→Navigator.pop(context)zonder resultaat. De actuele_indexvan de presenter wordt nergens teruggegeven.editorProvider.selectedIndex(lib/state/editor_provider.dart) metselect(int index). Die wordt bij het afsluiten niet bijgewerkt.Kortom: de presenter kent zijn eindpositie wél (
_index), maar geeft die niet door, en de launcher zet de selectie niet.Richting (suggestie, geen eis)
_exit()de huidige dia teruggeven bij het poppen — bij voorkeur via het dia-id (_currentSlide.id), niet via de ruwe render-index. Reden: de presenter toont render-dia's (findings-pagina's zijn uitgeklapt viaexpandFindingsForRender), dus de render-index ≠ de bron-dia-index.onSlideChangedmapt nu al terug op id — volg dat patroon.presenting.then(...)en roepeditorNotifier.select(bronIndex)aan (de bron-dia met dat id).Toetsen
Regressietest: start de presenter op index 0, navigeer naar index N, roep de exit aan en verifieer dat
editorProvider.selectedIndexop de bron-dia van N staat. Ook mét findings-uitklap toetsen (render-index ≠ bron-index) zodat de id-mapping klopt.Opgepakt. Tak: fix/present-exit-restore-slide-1111. Verwachte reikwijdte: lib/widgets/presentation/fullscreen_presenter.dart (_exit geeft eind-dia-id terug via de route), lib/widgets/shell/shell_actions_present.dart (launcher selecteert die bron-dia na afloop), plus een regressietest. Bron-dia via id, niet via render-index (findings-uitklap).
Opgelost op main via #1116 (merge
10338914, fixf5c199d7).De presenter geeft bij het afsluiten het bron-dia-id terug (present/show/showDualScreen → Future<String?>);
_exit()popt de route ermee, en de launcher (shell_actions_present.dart) mapt dat id terug op de bron-dia en selecteert die. Via het id, niet de render-index — een lange bevinding klapt uit tot meerdere render-pagina's met hetzelfde id. Leeg deck en een tijdens het presenteren verwijderde dia (id niet meer te vinden → geen match) laten de selectie ongemoeid.Regressietests in test/shell_present_and_close_test.dart, alle drie eerst rood tegen de ónherstelde code: basis (navigeer + Escape), render≠bron via een overgeslagen dia, en de findings-uitklap.
make checkwas groen op de schone basis.Wat er NIET in zit: de dual-window/zaal-modus wordt niet door een test geraakt (vergt een tweede scherm); die exit-tak popt langs exact hetzelfde
_exit()en is analyze-schoon, maar niet apart getoetst.