--- a/src/query/reslistpager.cpp
+++ b/src/query/reslistpager.cpp
@@ -86,6 +86,32 @@
// No results at all (on first page)
m_winfirst = -1;
}
+ return;
+ }
+ m_respage = npage;
+}
+
+void ResListPager::resultPageFor(int docnum)
+{
+ if (m_docSource.isNull()) {
+ LOGDEB(("ResListPager::resultPageFor: null source\n"));
+ return;
+ }
+
+ int resCnt = m_docSource->getResCnt();
+ LOGDEB(("ResListPager::resultPageFor(%d): rescnt %d, winfirst %d\n",
+ docnum, resCnt, m_winfirst));
+ m_winfirst = (docnum / m_pagesize) * m_pagesize;
+
+ // Get the next page of results.
+ vector<ResListEntry> npage;
+ int pagelen = m_docSource->getSeqSlice(m_winfirst, m_pagesize, npage);
+
+ // If page was truncated, there is no next
+ m_hasNext = (pagelen == m_pagesize);
+
+ if (pagelen <= 0) {
+ m_winfirst = -1;
return;
}
m_respage = npage;