diff --git a/mobile/app/package/contents/ui/main.qml b/mobile/app/package/contents/ui/main.qml index 45949eab7..ee8203eb6 100644 --- a/mobile/app/package/contents/ui/main.qml +++ b/mobile/app/package/contents/ui/main.qml @@ -46,6 +46,7 @@ Kirigami.AbstractApplicationWindow { Okular.DocumentItem { id: documentItem + onPathChanged: currentPage = 0 onWindowTitleForDocumentChanged: { fileBrowserRoot.title = windowTitleForDocument } diff --git a/mobile/components/pageitem.cpp b/mobile/components/pageitem.cpp index 57863b1f1..a415d538e 100644 --- a/mobile/components/pageitem.cpp +++ b/mobile/components/pageitem.cpp @@ -120,7 +120,7 @@ void PageItem::setDocument(DocumentItem *doc) emit documentChanged(); m_redrawTimer->start(); - connect(doc, &DocumentItem::pathChanged, this, &PageItem::documentPathChanged); + connect(doc, &DocumentItem::pathChanged, this, &PageItem::refreshPage); } int PageItem::pageNumber() const @@ -133,18 +133,27 @@ void PageItem::setPageNumber(int number) if ((m_page && m_viewPort.pageNumber == number) || !m_documentItem || !m_documentItem.data()->isOpened() || - number < 0 || - (uint)number >= m_documentItem.data()->document()->pages()) { + number < 0) { return; } m_viewPort.pageNumber = number; - m_page = m_documentItem.data()->document()->page(number); - + refreshPage(); emit pageNumberChanged(); + checkBookmarksChanged(); +} + +void PageItem::refreshPage() +{ + if (uint(m_viewPort.pageNumber) < m_documentItem.data()->document()->pages()) { + m_page = m_documentItem.data()->document()->page(m_viewPort.pageNumber); + } else { + m_page = nullptr; + } + emit implicitWidthChanged(); emit implicitHeightChanged(); - checkBookmarksChanged(); + m_redrawTimer->start(); } @@ -396,15 +405,6 @@ void PageItem::contentYChanged() m_viewPort.rePos.normalizedY = m_flickable.data()->property("contentY").toReal() / (height() - m_flickable.data()->height()); } -void PageItem::documentPathChanged() -{ - m_page = nullptr; - setPageNumber(0); - - m_redrawTimer->start(); -} - - void PageItem::setIsThumbnail(bool thumbnail) { if (thumbnail == m_isThumbnail) { diff --git a/mobile/components/pageitem.h b/mobile/components/pageitem.h index 27f110daa..f70ef7cf1 100644 --- a/mobile/components/pageitem.h +++ b/mobile/components/pageitem.h @@ -154,13 +154,14 @@ protected: private Q_SLOTS: void delayedRedraw(); - void documentPathChanged(); void pageHasChanged(int page, int flags); void checkBookmarksChanged(); void contentXChanged(); void contentYChanged(); private: + void refreshPage(); + const Okular::Page *m_page; bool m_smooth; bool m_intentionalDraw;