diff --git a/src/activities/reader/EpubReaderActivity.cpp b/src/activities/reader/EpubReaderActivity.cpp index 16d403aaa..65dbe17c8 100644 --- a/src/activities/reader/EpubReaderActivity.cpp +++ b/src/activities/reader/EpubReaderActivity.cpp @@ -181,11 +181,15 @@ void EpubReaderActivity::loop() { return; } - // any botton press when at end of the book goes back to the last page + // At end of the book, forward button goes home and back button returns to last page if (currentSpineIndex > 0 && currentSpineIndex >= epub->getSpineItemsCount()) { - currentSpineIndex = epub->getSpineItemsCount() - 1; - nextPageNumber = UINT16_MAX; - requestUpdate(); + if (nextTriggered) { + onGoHome(); + } else { + currentSpineIndex = epub->getSpineItemsCount() - 1; + nextPageNumber = UINT16_MAX; + requestUpdate(); + } return; } diff --git a/src/activities/reader/TxtReaderActivity.cpp b/src/activities/reader/TxtReaderActivity.cpp index c723bcb15..6bc3ba5ad 100644 --- a/src/activities/reader/TxtReaderActivity.cpp +++ b/src/activities/reader/TxtReaderActivity.cpp @@ -79,9 +79,13 @@ void TxtReaderActivity::loop() { if (prevTriggered && currentPage > 0) { currentPage--; requestUpdate(); - } else if (nextTriggered && currentPage < totalPages - 1) { - currentPage++; - requestUpdate(); + } else if (nextTriggered) { + if (currentPage < totalPages - 1) { + currentPage++; + requestUpdate(); + } else { + onGoHome(); + } } } diff --git a/src/activities/reader/XtcReaderActivity.cpp b/src/activities/reader/XtcReaderActivity.cpp index 84cc51da2..d2b6f18ea 100644 --- a/src/activities/reader/XtcReaderActivity.cpp +++ b/src/activities/reader/XtcReaderActivity.cpp @@ -98,10 +98,14 @@ void XtcReaderActivity::loop() { return; } - // Handle end of book + // At end of the book, forward button goes home and back button returns to last page if (currentPage >= xtc->getPageCount()) { - currentPage = xtc->getPageCount() - 1; - requestUpdate(); + if (nextTriggered) { + onGoHome(); + } else { + currentPage = xtc->getPageCount() - 1; + requestUpdate(); + } return; }