From a47af257f31462f18aaceeb7c0295f550bad5ab1 Mon Sep 17 00:00:00 2001 From: Albert S Date: Fri, 18 Nov 2022 22:03:11 +0100 Subject: [PATCH] gui: previews: Fix incorrect pos calculation in cached previews The cached order position introduced in 42e9ac5 is incorrect as it does not consider the case when we are viewing any other result page than the first. Fix this by considering which page we are in when calculating the offset --- gui/mainwindow.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 216ffac..f07fa47 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -940,12 +940,12 @@ void MainWindow::makePreviews(int page) } } } - int end = previewsPerPage; - int begin = page * previewsPerPage - previewsPerPage; - if(begin < 0) + int length = previewsPerPage; + int beginOffset = page * previewsPerPage - previewsPerPage; + if(beginOffset < 0) { // Should not happen actually - begin = 0; + beginOffset = 0; } int currentScale = currentSelectedScale(); @@ -972,11 +972,14 @@ void MainWindow::makePreviews(int page) renderTarget.path = sr.fileData.absPath; renderTarget.page = (int)sr.page; targets.append(renderTarget); - this->previewOrder[renderTarget.path + QString::number(renderTarget.page)] = previewPos++; + + int pos = previewPos - beginOffset; + this->previewOrder[renderTarget.path + QString::number(renderTarget.page)] = pos; + ++previewPos; } int numpages = ceil(static_cast(targets.size()) / previewsPerPage); ui->spinPreviewPage->setMaximum(numpages); - targets = targets.mid(begin, end); + targets = targets.mid(beginOffset, length); ui->lblTotalPreviewPagesCount->setText(QString::number(numpages)); ui->previewProcessBar->setMaximum(targets.count());