From a5088c39865aea2eb1df6a5a6d89cb0d3d63042f Mon Sep 17 00:00:00 2001 From: Carlo Baratto Date: Fri, 21 Aug 2026 11:03:07 +0200 Subject: [PATCH] Lettore 0.3.4: tap avanti con scrollBy relativo (no window.scrollY) 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. --- qml/pages/ReaderPage.qml | 7 +++++-- rpm/harbour-calibreweb.spec | 7 ++++++- src/main.cpp | 4 ++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/qml/pages/ReaderPage.qml b/qml/pages/ReaderPage.qml index 62013df..fca4b98 100644 --- a/qml/pages/ReaderPage.qml +++ b/qml/pages/ReaderPage.qml @@ -302,7 +302,10 @@ Page { + "return c;})()" } - // JS che porta in cima alla viewport il carattere 'off' del capitolo + // JS che porta in cima alla viewport il carattere 'off' del capitolo. + // Usa scrollBy RELATIVO (rect.top - 8): non legge mai window.scrollY, + // che sul WebView Sailfish non riflette lo scroll reale (con scrollTo + + // scrollY il tap oscillava di pochi pixel invece di avanzare). function scrollToCharJs(off) { return "(function(){" + "var b=document.body,o=0;" @@ -314,7 +317,7 @@ Page { + "if(o+n.data.length>=" + off + "){" + "var r=document.createRange();r.setStart(n," + off + "-o);r.collapse(true);" + "var rect=r.getBoundingClientRect();" - + "if(rect.top>0)window.scrollTo(0,rect.top+window.scrollY-8);" + + "window.scrollBy(0,rect.top-8);" + "return true;}" + "o+=n.data.length;}" + "return false;})()" diff --git a/rpm/harbour-calibreweb.spec b/rpm/harbour-calibreweb.spec index 21132a0..e9f4c8e 100644 --- a/rpm/harbour-calibreweb.spec +++ b/rpm/harbour-calibreweb.spec @@ -1,6 +1,6 @@ Name: harbour-calibreweb Summary: Client OPDS per Calibre Web -Version: 0.3.3 +Version: 0.3.4 Release: 1 Group: Qt/Qt License: MIT @@ -24,6 +24,11 @@ reflow del testo, margini configurabili e posizione salvata in locale. %changelog +* Fri Aug 21 2026 Carlo Baratto - 0.3.4-1 +- Fix tap avanti: scrollToCharJs usava window.scrollTo(0, rect.top+scrollY-8) + e window.scrollY e' stale sul WebView Sailfish -> il tap oscillava di pochi + pixel invece di avanzare. Ora scrollBy relativo (0, rect.top-8): nessuna + lettura di scrollY, avanzamento di una pagina esatta * Fri Aug 21 2026 Carlo Baratto - 0.3.3-1 - Paginazione per CONTENUTO: il tap avanza di una pagina di testo (offset in caratteri calcolato sui text node del DOM), la fine del capitolo e' decisa diff --git a/src/main.cpp b/src/main.cpp index 00a7bb9..18213c2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -22,7 +22,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) app->setOrganizationName(QStringLiteral("harbour")); app->setApplicationName(QStringLiteral("calibreweb")); // versione mostrata nelle impostazioni (tenere allineata allo spec) - app->setApplicationVersion(QStringLiteral("0.3.3")); + app->setApplicationVersion(QStringLiteral("0.3.4")); Settings settings; @@ -56,7 +56,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) QQuickView *view = SailfishApp::createView(); - qDebug() << "harbour-calibreweb v0.3.3 build" << __DATE__ << __TIME__; + qDebug() << "harbour-calibreweb v0.3.4 build" << __DATE__ << __TIME__; qmlRegisterType("harbour.calibreweb", 1, 0, "EpubBook");