mirror of
https://invent.kde.org/graphics/okular
synced 2024-09-12 20:51:17 +00:00
QtQuick: Adopt more assertive behavior upon document change
Don't change all pages to 0, it should be the application currentPage to change. Otherwise we get to having 3 items at page 0.
This commit is contained in:
parent
19222f27ca
commit
a7b165c0f2
|
@ -46,6 +46,7 @@ Kirigami.AbstractApplicationWindow {
|
|||
|
||||
Okular.DocumentItem {
|
||||
id: documentItem
|
||||
onPathChanged: currentPage = 0
|
||||
onWindowTitleForDocumentChanged: {
|
||||
fileBrowserRoot.title = windowTitleForDocument
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue