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
This commit is contained in:
Albert S. 2022-11-18 22:03:11 +01:00
父節點 9686ef30c7
當前提交 a47af257f3
共有 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());