summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pdf/qpdfsearchmodel.cpp12
-rw-r--r--src/pdf/qpdfsearchmodel.h1
-rw-r--r--src/pdf/qpdfsearchmodel_p.h2
3 files changed, 15 insertions, 0 deletions
diff --git a/src/pdf/qpdfsearchmodel.cpp b/src/pdf/qpdfsearchmodel.cpp
index 7fe11c2fe..3109430f0 100644
--- a/src/pdf/qpdfsearchmodel.cpp
+++ b/src/pdf/qpdfsearchmodel.cpp
@@ -194,11 +194,23 @@ void QPdfSearchModel::setDocument(QPdfDocument *document)
if (d->document == document)
return;
+ disconnect(d->documentConnection);
+ d->documentConnection = connect(document, &QPdfDocument::pageCountChanged, this,
+ &QPdfSearchModel::onDocumentPageCountChanged);
+
d->document = document;
d->clearResults();
emit documentChanged();
}
+void QPdfSearchModel::onDocumentPageCountChanged(int count)
+{
+ Q_UNUSED(count);
+
+ Q_D(QPdfSearchModel);
+ d->clearResults();
+}
+
void QPdfSearchModel::timerEvent(QTimerEvent *event)
{
Q_D(QPdfSearchModel);
diff --git a/src/pdf/qpdfsearchmodel.h b/src/pdf/qpdfsearchmodel.h
index c1e4e64ec..b1094b67b 100644
--- a/src/pdf/qpdfsearchmodel.h
+++ b/src/pdf/qpdfsearchmodel.h
@@ -55,6 +55,7 @@ Q_SIGNALS:
protected:
void updatePage(int page);
void timerEvent(QTimerEvent *event) override;
+ void onDocumentPageCountChanged(int count);
private:
QHash<int, QByteArray> m_roleNames;
diff --git a/src/pdf/qpdfsearchmodel_p.h b/src/pdf/qpdfsearchmodel_p.h
index 4922c81e9..5ffa08f5d 100644
--- a/src/pdf/qpdfsearchmodel_p.h
+++ b/src/pdf/qpdfsearchmodel_p.h
@@ -45,6 +45,8 @@ public:
int rowCountSoFar = 0;
int updateTimerId = -1;
int nextPageToUpdate = 0;
+
+ QMetaObject::Connection documentConnection;
};
QT_END_NAMESPACE