diff --git a/qml/pages/ReaderPage.qml b/qml/pages/ReaderPage.qml index fecd8a5..c3f3e5d 100644 --- a/qml/pages/ReaderPage.qml +++ b/qml/pages/ReaderPage.qml @@ -120,13 +120,13 @@ Page { text: "A−" width: Theme.itemSizeSmall height: Theme.itemSizeMedium - onClicked: page.changeFontScale(-0.15) + onClicked: page.changeFontScale(-0.1) } Button { text: "A+" width: Theme.itemSizeSmall height: Theme.itemSizeMedium - onClicked: page.changeFontScale(0.15) + onClicked: page.changeFontScale(0.1) } IconButton { icon.source: "image://theme/icon-m-right" @@ -208,11 +208,13 @@ Page { onTriggered: pageStack.pop(null) } - // rete di sicurezza per il restore: se il reflow non ha ancora cambiato - // contentHeight (capitoli con altezza identica), applica comunque + // rete di sicurezza per il restore: il caso normale è applicato da + // onTextReflowed appena il reflow cambia contentHeight; questo timer + // copre i rari casi in cui l'altezza non cambia (capitoli identici). + // Ritardo lungo: il reflow rich text può richiedere qualche centinaio di ms. Timer { id: restoreTimer - interval: 80 + interval: 500 onTriggered: { if (page.pendingRestore) { page.pendingRestore = false @@ -314,11 +316,13 @@ Page { } function changeFontScale(delta) { - page.fontScale = Math.max(0.7, Math.min(2.5, page.fontScale + delta)) - // il binding aggiorna il font; ripristina la posizione alla frazione - // corrente (l'offset in caratteri è stabile col reflow) + // limite ampio e passo 0.1: tanti ingrandimenti prima del limite + page.fontScale = Math.max(0.7, Math.min(3.5, page.fontScale + delta)) + // il binding aggiorna il font; ripristina la posizione per CARATTERI + // (stabile col reflow, a differenza della frazione di scroll: con il + // testo più alto la stessa frazione mostrerebbe un punto diverso) + page.restoreFrac = offsetToFrac(page.charOffset, page.currentChapter) page.pendingRestore = true - page.restoreFrac = page.chapterFraction restoreTimer.start() } @@ -380,9 +384,9 @@ Page { function previewMargins(lr, tb) { page.previewMarginL = lr page.previewMarginT = tb - // il reflow è immediato (binding); mantieni la frazione di lettura + // il reflow è immediato (binding); mantieni la posizione per caratteri + page.restoreFrac = offsetToFrac(page.charOffset, page.currentChapter) page.pendingRestore = true - page.restoreFrac = page.chapterFraction restoreTimer.start() } diff --git a/rpm/harbour-calibreweb.spec b/rpm/harbour-calibreweb.spec index 5e2ee74..3db571c 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.4.4 +Version: 0.4.5 Release: 1 Group: Qt/Qt License: MIT @@ -24,6 +24,14 @@ reflow del testo, margini configurabili e posizione salvata in locale. %changelog +* Fri Aug 21 2026 Carlo Baratto - 0.4.5-1 +- Fix ingrandimento testo: il restore dopo il reflow usava la frazione di + scroll (instabile col cambio font) e il timer di 80ms poteva scattare prima + del ricalcolo rich text -> posizione persa e ingrandimenti che sembravano + bloccarsi. Ora il restore usa l'offset in CARATTERI (stabile col reflow), + il reflow applica via onContentHeightChanged, il timer di sicurezza e' + passato a 500ms; limite font portato a 3.5x e passo a 0.1 (molti piu' + ingrandimenti prima del limite) * Fri Aug 21 2026 Carlo Baratto - 0.4.4-1 - LETTORE A PAGINE RIGIDE: eliminato del tutto lo scroll libero. Struttura a due livelli: SilicaFlickable esterno NON scrollabile (contentHeight=height, diff --git a/src/main.cpp b/src/main.cpp index 1356e59..c936e4a 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.4.4")); + app->setApplicationVersion(QStringLiteral("0.4.5")); Settings settings; @@ -56,7 +56,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) QQuickView *view = SailfishApp::createView(); - qDebug() << "harbour-calibreweb v0.4.4 build" << __DATE__ << __TIME__; + qDebug() << "harbour-calibreweb v0.4.5 build" << __DATE__ << __TIME__; qmlRegisterType("harbour.calibreweb", 1, 0, "EpubBook");