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.
This commit is contained in:
2026-08-21 11:03:07 +02:00
parent 00877a0223
commit a5088c3986
3 changed files with 13 additions and 5 deletions
+5 -2
View File
@@ -302,7 +302,10 @@ Page {
+ "return c;})()" + "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) { function scrollToCharJs(off) {
return "(function(){" return "(function(){"
+ "var b=document.body,o=0;" + "var b=document.body,o=0;"
@@ -314,7 +317,7 @@ Page {
+ "if(o+n.data.length>=" + off + "){" + "if(o+n.data.length>=" + off + "){"
+ "var r=document.createRange();r.setStart(n," + off + "-o);r.collapse(true);" + "var r=document.createRange();r.setStart(n," + off + "-o);r.collapse(true);"
+ "var rect=r.getBoundingClientRect();" + "var rect=r.getBoundingClientRect();"
+ "if(rect.top>0)window.scrollTo(0,rect.top+window.scrollY-8);" + "window.scrollBy(0,rect.top-8);"
+ "return true;}" + "return true;}"
+ "o+=n.data.length;}" + "o+=n.data.length;}"
+ "return false;})()" + "return false;})()"
+6 -1
View File
@@ -1,6 +1,6 @@
Name: harbour-calibreweb Name: harbour-calibreweb
Summary: Client OPDS per Calibre Web Summary: Client OPDS per Calibre Web
Version: 0.3.3 Version: 0.3.4
Release: 1 Release: 1
Group: Qt/Qt Group: Qt/Qt
License: MIT License: MIT
@@ -24,6 +24,11 @@ reflow del testo, margini configurabili e posizione salvata
in locale. in locale.
%changelog %changelog
* Fri Aug 21 2026 Carlo Baratto <carlo@carlobaratto.it> - 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 <carlo@carlobaratto.it> - 0.3.3-1 * Fri Aug 21 2026 Carlo Baratto <carlo@carlobaratto.it> - 0.3.3-1
- Paginazione per CONTENUTO: il tap avanza di una pagina di testo (offset in - 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 caratteri calcolato sui text node del DOM), la fine del capitolo e' decisa
+2 -2
View File
@@ -22,7 +22,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
app->setOrganizationName(QStringLiteral("harbour")); app->setOrganizationName(QStringLiteral("harbour"));
app->setApplicationName(QStringLiteral("calibreweb")); app->setApplicationName(QStringLiteral("calibreweb"));
// versione mostrata nelle impostazioni (tenere allineata allo spec) // versione mostrata nelle impostazioni (tenere allineata allo spec)
app->setApplicationVersion(QStringLiteral("0.3.3")); app->setApplicationVersion(QStringLiteral("0.3.4"));
Settings settings; Settings settings;
@@ -56,7 +56,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
QQuickView *view = SailfishApp::createView(); QQuickView *view = SailfishApp::createView();
qDebug() << "harbour-calibreweb v0.3.3 build" << __DATE__ << __TIME__; qDebug() << "harbour-calibreweb v0.3.4 build" << __DATE__ << __TIME__;
qmlRegisterType<EpubBook>("harbour.calibreweb", 1, 0, "EpubBook"); qmlRegisterType<EpubBook>("harbour.calibreweb", 1, 0, "EpubBook");