preventStealing sulla MouseArea rubava il drag al PushUpMenu (il gesto si
bloccava appena il dito entrava nella zona centrale) e senza di esso il
contenuto scrollava libero. Ora: il drag e' permesso ma lo snap (250ms dopo
l'ultimo movimento) riallinea contentY alla pagina piu' vicina (soglia 70%,
zona finale parziale -> fondo). I pulley menu funzionano normalmente.
Il WebView di Sailfish non supporta lo scroll programmatico affidabile
(window.scrollY stale, contentHeight/scrollPosition non scrivibili): 0.3.x
non ha mai cambiato capitolo in modo affidabile. Ora i capitoli sono rich
text Qt in un Text QML dentro un SilicaFlickable: contentY/contentHeight
nativi, paginazione a tap deterministico, fine capitolo esatta. HTML->rich
text in C++ (tag base, entità, fallback). Bookmark v2 invariato (offset
caratteri stimato da frazione). Niente immagini inline (limite rich text).
scrollToCharJs calcolava scrollTo(0, rect.top+scrollY-8) e window.scrollY e'
stale sul WebView Sailfish: il tap avanti oscillava di pochi pixel. Ora
window.scrollBy(0, rect.top-8): nessuna lettura di scrollY, il carattere
target finisce esattamente in cima alla viewport.
- Tap avanti/indietro per PAGINA DI TESTO (offset in caratteri dai text node):
positionJs (sopra) + charsInViewportJs (nella viewport) + scrollToCharJs;
fine capitolo = offset >= chapterTextLength (C++), mai dallo scroll del
WebView. window.scrollY non riflette lo scroll reale e contentHeight/
scrollPosition nativi non sono scrivibili su Qt 5.6 (0.3.1 e 0.3.2 falliti)
- SettingsPage: label 'Version' in fondo (appVersion da setApplicationVersion)
- Traduzione IT aggiunta; log build aggiornato
window.scrollY/scrollBy via runJavaScript non riflette lo scroll reale del
WebView Sailfish (la posizione non arrivava mai a fine documento) -> il cambio
capitolo non scattava. Ora contentHeight/scrollPosition (proprietà native):
nextPage/prevPage = aritmetica QML pura, cambio capitolo deterministico.
Il confronto con max calcolato (scrollHeight-innerHeight) falliva sul WebView
di Sailfish quando max è sovrastimato: scrollY non lo raggiungeva mai, ok
restava true e atEnd veniva ignorato -> si restava dentro il capitolo.
Ora: scrollBy(0,vh) + verifica 'lo scroll si è mosso'; se bloccato, unlock
CSS e riprova; se ancora fermo -> capitolo successivo (o precedente).
- Bookmark cw:v2:<offset assoluto caratteri> invece di capitolo+frazione;
migrazione automatica delle chiavi v1 (parseBookmarkKey)
- Lunghezze testo per capitolo in C++ (text node del DOM, entità decodificate,
body-only) per mappare offset assoluto -> capitolo
- Paginazione: stile iniettato height:auto/overflow:visible + unlock JS dei
contenitori hidden — il CSS di molti EPUB bloccava lo scroll e ogni tap
saltava al capitolo successivo
- prevPage dall'inizio capitolo -> ultima pagina del capitolo precedente
- Cambio font mantiene la posizione (restore per carattere)
- Label menu: pagina corrente/totale del capitolo; max su documentElement+body
- Test: harness C++ (Qt) e test JS con DOM mock