Negen toetsen op de bijsnijddialoog draaien in een stand die de app niet kan maken (enableZoom: false) #1831

Closed
opened 2026-08-28 11:27:59 +00:00 by brenno · 0 comments
Owner

Wat er misgaat

Negen van de veertien toetsen op de bijsnijddialoog draaien in een stand die de
app niet kan maken. showImageCropDialog heeft een parameter enableZoom, en
alle vijf de aanroepers in lib/ geven true mee — de volledige-dia-afbeelding,
de titel- en sectieachtergrond, het bulletspaneel en de twee-afbeeldingenslots.
De hulpfunctie open() in test/image_crop_dialog_test.dart:56 heeft false
als standaard, en negen toetsen laten die standaard staan.

Dat is geen cosmetisch verschil. _cover (regel 149) leest
widget.enableZoom ? _size == 0 : true, en die vlag bepaalt drie dingen:
welke stage er gerenderd wordt (_stageContent, regel 383 en 426), of de
zoomschuif er staat (regel 528), en hoe _drag de overloop uitrekent. In de
false-stand is het altijd de cover-stage. In productie met imageZoom: 200
is het dat niet.

De negen

Klaar geeft het ongewijzigde kader terug als er niets sleept, Annuleren geeft niets terug, Herstel zet het brandpunt terug naar het midden, zonder zoom blijft de opgegeven maat ongemoeid, een pad buiten de projectmap wordt niet getoond, Escape sluit het venster zonder iets terug te geven, Rechtsom draait de afbeelding 90° en schrijft terug, Herstel zet de rotatie terug naar het origineel, twee keer rechtsom draait 180°, niet twee keer 90°.

Eén ervan spreekt de code inmiddels tegen

zonder zoom blijft de opgegeven maat ongemoeid (regel 205) verantwoordt
zichzelf met:

In een kolomslot ís imageSize de kolombreedte, geen zoom. Het venster
verplaatst dan alleen de uitsnede en mag dat getal niet aanraken.

Dat is precies het verhaal dat #1813 uit de dartdoc van showImageCropDialog
heeft weggehaald, omdat het niet klopte: het kolomslot geeft enableZoom: true
mee en imageSize is daar imageZoom. De doc is gecorrigeerd, de toets die
hetzelfde beweerde niet.

Waarom dit telt

Een groene toets op een stand die niemand kan bereiken geeft dekking zonder
zekerheid. Draaien, Escape en Annuleren zijn waarschijnlijk onverschillig voor
enableZoom, maar dat is een aanname die nu nergens wordt getoetst — en de
toetsen die het wél zou raken staan er niet.

Twee routes, en de keuze is een ontwerpkeuze

  1. De parameter blijft. Zet de standaard van open() op true zodat de
    toetsen de productiestand spiegelen, en houd één bewuste enableZoom: false-
    toets over die zegt wat die stand betekent. Goedkoop, en de vlag blijft
    beschikbaar voor een toekomstige aanroeper die alleen wil herpositioneren.
  2. De parameter gaat weg, met de _cover-tak, de voorwaarde op regel 528 en
    de vijf enableZoom: true bij de aanroepers. Dan kan _cover gewoon
    _size == 0 worden. Kleiner oppervlak, maar het verwijdert een mogelijkheid
    die niemand nu nodig heeft en die later terug moet als dat verandert.

Route 1 is het minst ingrijpend; route 2 is eerlijker over wat het venster
werkelijk kan. De vraag is of "alleen herpositioneren zonder zoom" een stand is
die we willen blijven aanbieden.

Waarom nu

Gevonden bij het nalopen van #1813. Die reparatie corrigeerde de dartdoc en
haalde het onjuiste verhaal daar weg; de toetsen bleven staan waar ze stonden.

**Wat er misgaat** Negen van de veertien toetsen op de bijsnijddialoog draaien in een stand die de app niet kan maken. `showImageCropDialog` heeft een parameter `enableZoom`, en **alle vijf de aanroepers in `lib/` geven `true` mee** — de volledige-dia-afbeelding, de titel- en sectieachtergrond, het bulletspaneel en de twee-afbeeldingenslots. De hulpfunctie `open()` in `test/image_crop_dialog_test.dart:56` heeft `false` als standaard, en negen toetsen laten die standaard staan. Dat is geen cosmetisch verschil. `_cover` (regel 149) leest `widget.enableZoom ? _size == 0 : true`, en die vlag bepaalt drie dingen: welke stage er gerenderd wordt (`_stageContent`, regel 383 en 426), of de zoomschuif er staat (regel 528), en hoe `_drag` de overloop uitrekent. In de `false`-stand is het altijd de cover-stage. In productie met `imageZoom: 200` is het dat niet. **De negen** `Klaar geeft het ongewijzigde kader terug als er niets sleept`, `Annuleren geeft niets terug`, `Herstel zet het brandpunt terug naar het midden`, `zonder zoom blijft de opgegeven maat ongemoeid`, `een pad buiten de projectmap wordt niet getoond`, `Escape sluit het venster zonder iets terug te geven`, `Rechtsom draait de afbeelding 90° en schrijft terug`, `Herstel zet de rotatie terug naar het origineel`, `twee keer rechtsom draait 180°, niet twee keer 90°`. **Eén ervan spreekt de code inmiddels tegen** `zonder zoom blijft de opgegeven maat ongemoeid` (regel 205) verantwoordt zichzelf met: > In een kolomslot ís imageSize de kolombreedte, geen zoom. Het venster > verplaatst dan alleen de uitsnede en mag dat getal niet aanraken. Dat is precies het verhaal dat #1813 uit de dartdoc van `showImageCropDialog` heeft weggehaald, omdat het niet klopte: het kolomslot geeft `enableZoom: true` mee en `imageSize` is daar `imageZoom`. De doc is gecorrigeerd, de toets die hetzelfde beweerde niet. **Waarom dit telt** Een groene toets op een stand die niemand kan bereiken geeft dekking zonder zekerheid. Draaien, Escape en Annuleren zijn waarschijnlijk onverschillig voor `enableZoom`, maar dat is een aanname die nu nergens wordt getoetst — en de toetsen die het wél zou raken staan er niet. **Twee routes, en de keuze is een ontwerpkeuze** 1. **De parameter blijft.** Zet de standaard van `open()` op `true` zodat de toetsen de productiestand spiegelen, en houd één bewuste `enableZoom: false`- toets over die zegt wat die stand betekent. Goedkoop, en de vlag blijft beschikbaar voor een toekomstige aanroeper die alleen wil herpositioneren. 2. **De parameter gaat weg**, met de `_cover`-tak, de voorwaarde op regel 528 en de vijf `enableZoom: true` bij de aanroepers. Dan kan `_cover` gewoon `_size == 0` worden. Kleiner oppervlak, maar het verwijdert een mogelijkheid die niemand nu nodig heeft en die later terug moet als dat verandert. Route 1 is het minst ingrijpend; route 2 is eerlijker over wat het venster werkelijk kan. De vraag is of "alleen herpositioneren zonder zoom" een stand is die we willen blijven aanbieden. **Waarom nu** Gevonden bij het nalopen van #1813. Die reparatie corrigeerde de dartdoc en haalde het onjuiste verhaal daar weg; de toetsen bleven staan waar ze stonden.
brenno 2026-08-29 08:38:26 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1831
No description provided.