Add CXFA_LayoutPageMgr::HasCurrentViewRecord().
It makes the code more readable. Also add ResetToFirstViewRecord().
Change-Id: I46eb78290220249b42686721b15d67453a021fd5
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/53010
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
index 572c0bd..558c526 100644
--- a/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
+++ b/xfa/fxfa/layout/cxfa_layoutpagemgr.cpp
@@ -498,7 +498,7 @@
if (pBreakBeforeNode) {
BreakData ret = ExecuteBreakBeforeOrAfter(pBreakBeforeNode, true);
if (ret.bCreatePage) {
- m_CurrentViewRecordIter = m_ProposedViewRecords.begin();
+ ResetToFirstViewRecord();
return true;
}
}
@@ -513,11 +513,9 @@
if (!pPageNode)
return false;
- if (bFirstTemPage && m_CurrentViewRecordIter == m_ProposedViewRecords.end()) {
- m_CurrentViewRecordIter = m_ProposedViewRecords.begin();
- }
- return !bFirstTemPage ||
- m_CurrentViewRecordIter != m_ProposedViewRecords.end();
+ if (bFirstTemPage && !HasCurrentViewRecord())
+ ResetToFirstViewRecord();
+ return !bFirstTemPage || HasCurrentViewRecord();
}
void CXFA_LayoutPageMgr::RemoveLayoutRecord(CXFA_ViewRecord* pNewRecord,
@@ -592,7 +590,7 @@
CXFA_ViewRecord* CXFA_LayoutPageMgr::CreateViewRecord(CXFA_Node* pPageNode,
bool bCreateNew) {
CXFA_ViewRecord* pNewRecord = new CXFA_ViewRecord();
- if (m_CurrentViewRecordIter != m_ProposedViewRecords.end()) {
+ if (HasCurrentViewRecord()) {
if (!IsPageSetRootOrderedOccurrence() || !pPageNode) {
*pNewRecord = *GetCurrentViewRecord();
m_ProposedViewRecords.push_back(pNewRecord);
@@ -737,7 +735,7 @@
case XFA_AttributeValue::ContentArea:
if (pTarget && pTarget->GetElementType() != XFA_Element::ContentArea)
pTarget = nullptr;
- if (!pTarget || m_CurrentViewRecordIter == m_ProposedViewRecords.end() ||
+ if (!pTarget || !HasCurrentViewRecord() ||
pTarget != GetCurrentViewRecord()->pCurContentArea->GetFormNode() ||
bStartNew) {
CXFA_Node* pPageArea = nullptr;
@@ -751,7 +749,7 @@
case XFA_AttributeValue::PageArea:
if (pTarget && pTarget->GetElementType() != XFA_Element::PageArea)
pTarget = nullptr;
- if (!pTarget || m_CurrentViewRecordIter == m_ProposedViewRecords.end() ||
+ if (!pTarget || !HasCurrentViewRecord() ||
pTarget != GetCurrentViewRecord()->pCurPageArea->GetFormNode() ||
bStartNew) {
CXFA_Node* pPageArea =
@@ -1096,10 +1094,9 @@
pTargetPageArea, pTargetContentArea,
bNewPage, bQuery);
}
- XFA_AttributeValue ePreferredPosition =
- m_CurrentViewRecordIter != m_ProposedViewRecords.end()
- ? XFA_AttributeValue::Rest
- : XFA_AttributeValue::First;
+ XFA_AttributeValue ePreferredPosition = HasCurrentViewRecord()
+ ? XFA_AttributeValue::Rest
+ : XFA_AttributeValue::First;
return FindPageAreaFromPageSet_SimplexDuplex(
pPageSet, pStartChild, pTargetPageArea, pTargetContentArea, bNewPage,
bQuery, ePreferredPosition);
diff --git a/xfa/fxfa/layout/cxfa_layoutpagemgr.h b/xfa/fxfa/layout/cxfa_layoutpagemgr.h
index 0b6caf2..81372b3 100644
--- a/xfa/fxfa/layout/cxfa_layoutpagemgr.h
+++ b/xfa/fxfa/layout/cxfa_layoutpagemgr.h
@@ -63,7 +63,13 @@
CXFA_ViewRecord* pPrevRecord);
void RemoveLayoutRecord(CXFA_ViewRecord* pNewRecord,
CXFA_ViewRecord* pPrevRecord);
+ bool HasCurrentViewRecord() const {
+ return m_CurrentViewRecordIter != m_ProposedViewRecords.end();
+ }
CXFA_ViewRecord* GetCurrentViewRecord() { return *m_CurrentViewRecordIter; }
+ void ResetToFirstViewRecord() {
+ m_CurrentViewRecordIter = m_ProposedViewRecords.begin();
+ }
std::list<CXFA_ViewRecord*>::iterator GetTailPosition() {
auto iter = m_ProposedViewRecords.end();
return !m_ProposedViewRecords.empty() ? std::prev(iter) : iter;