summaryrefslogtreecommitdiffstats
path: root/src/pdf/qpdfdocument.cpp
diff options
context:
space:
mode:
authorTobias Koenig <tobias.koenig@kdab.com>2017-02-27 13:34:23 +0100
committerMichal Klocek <michal.klocek@qt.io>2019-11-25 12:01:39 +0100
commit44abdb16fcff4898dc81ea3ed4b65b92c4f19d7a (patch)
tree25cf680b25afdfb59a1d49bd001f01e3011919fb /src/pdf/qpdfdocument.cpp
parente15148e389256f1fd0f41b16a236bc51f6aab2ca (diff)
Fix emission of QPdfDocument::pageCountChanged signal
Emit the signal whenever the amount of pages changes on loading/closing the document. Change-Id: I0555a9cad93cb1f125ded19889eda91e08725592 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/pdf/qpdfdocument.cpp')
-rw-r--r--src/pdf/qpdfdocument.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/pdf/qpdfdocument.cpp b/src/pdf/qpdfdocument.cpp
index 7381a927e..c737ca036 100644
--- a/src/pdf/qpdfdocument.cpp
+++ b/src/pdf/qpdfdocument.cpp
@@ -59,6 +59,7 @@ QPdfDocumentPrivate::QPdfDocumentPrivate()
, loadComplete(false)
, status(QPdfDocument::Null)
, lastError(QPdfDocument::NoError)
+ , pageCount(0)
{
asyncBuffer.setData(QByteArray());
asyncBuffer.open(QIODevice::ReadWrite);
@@ -105,6 +106,11 @@ void QPdfDocumentPrivate::clear()
avail = nullptr;
lock.unlock();
+ if (pageCount != 0) {
+ pageCount = 0;
+ emit q->pageCountChanged(pageCount);
+ }
+
loadComplete = false;
asyncBuffer.close();
@@ -266,7 +272,8 @@ void QPdfDocumentPrivate::checkComplete()
QPdfMutexLocker lock;
- for (int i = 0, count = FPDF_GetPageCount(doc); i < count; ++i) {
+ const int newPageCount = FPDF_GetPageCount(doc);
+ for (int i = 0; i < newPageCount; ++i) {
int result = PDF_DATA_NOTAVAIL;
while (result == PDF_DATA_NOTAVAIL) {
result = FPDFAvail_IsPageAvail(avail, i, this);
@@ -278,8 +285,14 @@ void QPdfDocumentPrivate::checkComplete()
lock.unlock();
- if (loadComplete)
+ if (loadComplete) {
+ if (newPageCount != pageCount) {
+ pageCount = newPageCount;
+ emit q->pageCountChanged(pageCount);
+ }
+
setStatus(QPdfDocument::Ready);
+ }
}
void QPdfDocumentPrivate::setStatus(QPdfDocument::Status documentStatus)
@@ -518,12 +531,7 @@ void QPdfDocument::close()
int QPdfDocument::pageCount() const
{
- if (!d->doc)
- return 0;
-
- const QPdfMutexLocker lock;
-
- return FPDF_GetPageCount(d->doc);
+ return d->pageCount;
}
QSizeF QPdfDocument::pageSize(int page) const