Коммит d11f83ff создал по автору OMP Education's avatar OMP Education Зафиксировано автором k.sagalakova
Просмотр файлов

[View] Fix page range updating.



Examples:
 There is only 1 page in the document
 There are 5 pages, then exclude 1, then 3
 There are 5 pages, then exclude 5, then 3

Co-Authored-By: default avatarKira Sagalakova <k.sagalakova@omp.ru>
владелец bf1f9e7e
...@@ -46,6 +46,34 @@ void removeFromMiddle(int index, ...@@ -46,6 +46,34 @@ void removeFromMiddle(int index,
specialRangeIndexes.erase(it); specialRangeIndexes.erase(it);
} else { } else {
auto prevRange = *it; auto prevRange = *it;
if (index - it->first == 1) {
specialIndexes.insert(it->first);
specialRangeIndexes[index + 1] = prevRange.second;
auto removingIt = std::find_if(specialRangeIndexes.begin(),
specialRangeIndexes.end(),
[prevRange](const std::pair<int, int> &t) -> bool {
return prevRange.first == t.first
&& prevRange.second == t.second;
});
if (removingIt != specialRangeIndexes.end())
specialRangeIndexes.erase(removingIt);
return;
}
if (it->second - index == 1) {
specialIndexes.insert(it->second);
specialRangeIndexes[prevRange.first] = index - 1;
auto removingIt = std::find_if(specialRangeIndexes.begin(),
specialRangeIndexes.end(),
[prevRange](const std::pair<int, int> &t) -> bool {
return prevRange.first == t.first
&& prevRange.second == t.second;
});
if (removingIt != specialRangeIndexes.end())
specialRangeIndexes.erase(removingIt);
return;
}
specialRangeIndexes[prevRange.first] = index - 1; specialRangeIndexes[prevRange.first] = index - 1;
specialRangeIndexes[index + 1] = prevRange.second; specialRangeIndexes[index + 1] = prevRange.second;
} }
......
...@@ -610,7 +610,12 @@ void PdfView::setDocumentProvider(BaseDocument *documentProvider) ...@@ -610,7 +610,12 @@ void PdfView::setDocumentProvider(BaseDocument *documentProvider)
m_count = m_documentProvider->count(); m_count = m_documentProvider->count();
if (m_pageNumberComponent) { if (m_pageNumberComponent) {
std::set<int> pageIndexes; std::set<int> pageIndexes;
std::map<int, int> indexIntervals = {std::pair(0, m_count - 1)}; std::map<int, int> indexIntervals;
if (m_count > 1)
indexIntervals = {std::pair(0, m_count - 1)};
else
pageIndexes = {m_count - 1};
if (m_pageRange.isEmpty()) if (m_pageRange.isEmpty())
m_mapper->setSpecialPageIndexes(indexIntervals, pageIndexes); m_mapper->setSpecialPageIndexes(indexIntervals, pageIndexes);
} }
......
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать