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 any result page other than
the first.

Fix this by considering which page we are in
This commit is contained in:
Albert S. 2022-11-18 22:03:11 +01:00
부모 9686ef30c7
커밋 b45fbedb13
1개의 변경된 파일9개의 추가작업 그리고 6개의 파일을 삭제

파일 보기

@ -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<double>(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());