Convert to Mask<FWL_EVENTFLAG>
Conversion found some places where ordinary ints were still
being used for flag values.
-- remove always-empty modifier arg from DoAction_NoJs()
Change-Id: Ib3d893c4fdb3d65c55c09f7eafe5be2d73bb638b
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/84030
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fxfa/cxfa_ffdatetimeedit.cpp b/xfa/fxfa/cxfa_ffdatetimeedit.cpp
index 5332a45..8e7ea30 100644
--- a/xfa/fxfa/cxfa_ffdatetimeedit.cpp
+++ b/xfa/fxfa/cxfa_ffdatetimeedit.cpp
@@ -176,7 +176,7 @@
}
bool CXFA_FFDateTimeEdit::IsDataChanged() {
- if (GetLayoutItem()->TestStatusBits(XFA_WidgetStatus_TextEditValueChanged))
+ if (GetLayoutItem()->TestStatusBits(XFA_WidgetStatus::kTextEditValueChanged))
return true;
WideString wsText = GetPickerWidget()->GetEditText();
diff --git a/xfa/fxfa/cxfa_ffdocview.cpp b/xfa/fxfa/cxfa_ffdocview.cpp
index e68a1f7..052b750 100644
--- a/xfa/fxfa/cxfa_ffdocview.cpp
+++ b/xfa/fxfa/cxfa_ffdocview.cpp
@@ -299,8 +299,8 @@
if (m_pFocusWidget) {
CXFA_ContentLayoutItem* pItem = m_pFocusWidget->GetLayoutItem();
- if (pItem->TestStatusBits(XFA_WidgetStatus_Visible) &&
- !pItem->TestStatusBits(XFA_WidgetStatus_Focused)) {
+ if (pItem->TestStatusBits(XFA_WidgetStatus::kVisible) &&
+ !pItem->TestStatusBits(XFA_WidgetStatus::kFocused)) {
if (!m_pFocusWidget->IsLoaded())
m_pFocusWidget->LoadWidget();
if (!m_pFocusWidget->OnSetFocus(m_pFocusWidget))
@@ -313,7 +313,8 @@
}
if (pNewFocus) {
- if (pNewFocus->GetLayoutItem()->TestStatusBits(XFA_WidgetStatus_Visible)) {
+ if (pNewFocus->GetLayoutItem()->TestStatusBits(
+ XFA_WidgetStatus::kVisible)) {
if (!pNewFocus->IsLoaded())
pNewFocus->LoadWidget();
if (!pNewFocus->OnSetFocus(m_pFocusWidget))
diff --git a/xfa/fxfa/cxfa_fffield.cpp b/xfa/fxfa/cxfa_fffield.cpp
index 255239e..6f9ba26 100644
--- a/xfa/fxfa/cxfa_fffield.cpp
+++ b/xfa/fxfa/cxfa_fffield.cpp
@@ -517,7 +517,7 @@
CFWL_MessageSetFocus msg(nullptr, GetNormalWidget());
SendMessageToFWLWidget(&msg);
- GetLayoutItem()->SetStatusBits(XFA_WidgetStatus_Focused);
+ GetLayoutItem()->SetStatusBits(XFA_WidgetStatus::kFocused);
InvalidateRect();
return true;
@@ -527,7 +527,7 @@
if (GetNormalWidget()) {
CFWL_MessageKillFocus msg(nullptr, GetNormalWidget());
SendMessageToFWLWidget(&msg);
- GetLayoutItem()->ClearStatusBits(XFA_WidgetStatus_Focused);
+ GetLayoutItem()->ClearStatusBits(XFA_WidgetStatus::kFocused);
InvalidateRect();
}
return pNewWidget && CXFA_FFWidget::OnKillFocus(pNewWidget);
diff --git a/xfa/fxfa/cxfa_ffnotify.cpp b/xfa/fxfa/cxfa_ffnotify.cpp
index 810d565..c96869b 100644
--- a/xfa/fxfa/cxfa_ffnotify.cpp
+++ b/xfa/fxfa/cxfa_ffnotify.cpp
@@ -470,7 +470,7 @@
void CXFA_FFNotify::OnLayoutItemAdded(CXFA_LayoutProcessor* pLayout,
CXFA_LayoutItem* pSender,
int32_t iPageIdx,
- XFA_WidgetStatusMask dwStatus) {
+ Mask<XFA_WidgetStatus> dwStatus) {
CXFA_FFDocView* pDocView = m_pDoc->GetDocView(pLayout);
if (!pDocView)
return;
@@ -480,19 +480,19 @@
return;
CXFA_FFPageView* pNewPageView = pDocView->GetPageView(iPageIdx);
- constexpr XFA_WidgetStatusMask kRemove = XFA_WidgetStatus_Visible |
- XFA_WidgetStatus_Viewable |
- XFA_WidgetStatus_Printable;
+ constexpr Mask<XFA_WidgetStatus> kRemove{XFA_WidgetStatus::kVisible,
+ XFA_WidgetStatus::kViewable,
+ XFA_WidgetStatus::kPrintable};
pWidget->ModifyStatus(dwStatus, kRemove);
CXFA_FFPageView* pPrePageView = pWidget->GetPageView();
if (pPrePageView != pNewPageView ||
- (dwStatus & (XFA_WidgetStatus_Visible | XFA_WidgetStatus_Viewable)) ==
- (XFA_WidgetStatus_Visible | XFA_WidgetStatus_Viewable)) {
+ dwStatus.TestAll(
+ {XFA_WidgetStatus::kVisible, XFA_WidgetStatus::kViewable})) {
pWidget->SetPageView(pNewPageView);
m_pDoc->WidgetPostAdd(pWidget);
}
if (pDocView->GetLayoutStatus() != XFA_DOCVIEW_LAYOUTSTATUS_End ||
- !(dwStatus & XFA_WidgetStatus_Visible)) {
+ !(dwStatus & XFA_WidgetStatus::kVisible)) {
return;
}
if (pWidget->IsLoaded()) {
diff --git a/xfa/fxfa/cxfa_ffnotify.h b/xfa/fxfa/cxfa_ffnotify.h
index c982fbc..e92016a 100644
--- a/xfa/fxfa/cxfa_ffnotify.h
+++ b/xfa/fxfa/cxfa_ffnotify.h
@@ -7,6 +7,7 @@
#ifndef XFA_FXFA_CXFA_FFNOTIFY_H_
#define XFA_FXFA_CXFA_FFNOTIFY_H_
+#include "core/fxcrt/mask.h"
#include "fxjs/gc/heap.h"
#include "v8/include/cppgc/garbage-collected.h"
#include "v8/include/cppgc/member.h"
@@ -55,7 +56,7 @@
void OnLayoutItemAdded(CXFA_LayoutProcessor* pLayout,
CXFA_LayoutItem* pSender,
int32_t iPageIdx,
- XFA_WidgetStatusMask dwStatus);
+ Mask<XFA_WidgetStatus> dwStatus);
void OnLayoutItemRemoving(CXFA_LayoutProcessor* pLayout,
CXFA_LayoutItem* pSender);
void StartFieldDrawLayout(CXFA_Node* pItem,
diff --git a/xfa/fxfa/cxfa_ffpageview.cpp b/xfa/fxfa/cxfa_ffpageview.cpp
index 7a49aaf..59a114f 100644
--- a/xfa/fxfa/cxfa_ffpageview.cpp
+++ b/xfa/fxfa/cxfa_ffpageview.cpp
@@ -68,24 +68,25 @@
}
bool PageWidgetFilter(CXFA_FFWidget* pWidget,
- XFA_WidgetStatusMask dwFilter,
+ Mask<XFA_WidgetStatus> dwFilter,
bool bTraversal,
bool bIgnoreRelevant) {
CXFA_Node* pNode = pWidget->GetNode();
- if ((dwFilter & XFA_WidgetStatus_Focused) &&
+ if ((dwFilter & XFA_WidgetStatus::kFocused) &&
(!pNode || pNode->GetElementType() != XFA_Element::Field)) {
return false;
}
CXFA_ContentLayoutItem* pItem = pWidget->GetLayoutItem();
- if (bTraversal && pItem->TestStatusBits(XFA_WidgetStatus_Disabled))
+ if (bTraversal && pItem->TestStatusBits(XFA_WidgetStatus::kDisabled))
return false;
if (bIgnoreRelevant)
- return pItem->TestStatusBits(XFA_WidgetStatus_Visible);
+ return pItem->TestStatusBits(XFA_WidgetStatus::kVisible);
- dwFilter &= (XFA_WidgetStatus_Visible | XFA_WidgetStatus_Viewable |
- XFA_WidgetStatus_Printable);
+ dwFilter &= Mask<XFA_WidgetStatus>{XFA_WidgetStatus::kVisible,
+ XFA_WidgetStatus::kViewable,
+ XFA_WidgetStatus::kPrintable};
return pItem->TestStatusBits(dwFilter);
}
@@ -117,7 +118,7 @@
bool EnsureWidgetLoadedIfVisible(CXFA_FFWidget* pWidget) {
if (!pWidget->IsLoaded() &&
- pWidget->GetLayoutItem()->TestStatusBits(XFA_WidgetStatus_Visible)) {
+ pWidget->GetLayoutItem()->TestStatusBits(XFA_WidgetStatus::kVisible)) {
if (!pWidget->LoadWidget())
return false;
}
@@ -133,9 +134,10 @@
return pWidget;
}
-CXFA_FFWidget* FilteredLoadedWidgetFromLayoutItem(CXFA_LayoutItem* pLayoutItem,
- XFA_WidgetStatusMask dwFilter,
- bool bIgnoreRelevant) {
+CXFA_FFWidget* FilteredLoadedWidgetFromLayoutItem(
+ CXFA_LayoutItem* pLayoutItem,
+ Mask<XFA_WidgetStatus> dwFilter,
+ bool bIgnoreRelevant) {
CXFA_FFWidget* pWidget = CXFA_FFWidget::FromLayoutItem(pLayoutItem);
if (!pWidget)
return nullptr;
@@ -265,14 +267,14 @@
}
CXFA_FFWidget::IteratorIface* CXFA_FFPageView::CreateGCedFormWidgetIterator(
- XFA_WidgetStatusMask dwWidgetFilter) {
+ Mask<XFA_WidgetStatus> dwWidgetFilter) {
return cppgc::MakeGarbageCollected<CXFA_FFPageWidgetIterator>(
GetDocView()->GetDoc()->GetHeap()->GetAllocationHandle(), this,
dwWidgetFilter);
}
CXFA_FFWidget::IteratorIface* CXFA_FFPageView::CreateGCedTraverseWidgetIterator(
- XFA_WidgetStatusMask dwWidgetFilter) {
+ Mask<XFA_WidgetStatus> dwWidgetFilter) {
return cppgc::MakeGarbageCollected<CXFA_FFTabOrderPageWidgetIterator>(
GetDocView()->GetDoc()->GetHeap()->GetAllocationHandle(), this,
dwWidgetFilter);
@@ -280,7 +282,7 @@
CXFA_FFPageWidgetIterator::CXFA_FFPageWidgetIterator(
CXFA_FFPageView* pPageView,
- XFA_WidgetStatusMask dwFilter)
+ Mask<XFA_WidgetStatus> dwFilter)
: m_sIterator(pPageView->GetLayoutItem()),
m_dwFilter(dwFilter),
m_bIgnoreRelevant(IsDocVersionBelow205(GetDocForPageView(pPageView))) {}
@@ -337,7 +339,7 @@
CXFA_FFTabOrderPageWidgetIterator::CXFA_FFTabOrderPageWidgetIterator(
CXFA_FFPageView* pPageView,
- XFA_WidgetStatusMask dwFilter)
+ Mask<XFA_WidgetStatus> dwFilter)
: m_pPageViewLayout(pPageView->GetLayoutItem()),
m_dwFilter(dwFilter),
m_bIgnoreRelevant(IsDocVersionBelow205(GetDocForPageView(pPageView))) {
diff --git a/xfa/fxfa/cxfa_ffpageview.h b/xfa/fxfa/cxfa_ffpageview.h
index af93ed7..54ea822 100644
--- a/xfa/fxfa/cxfa_ffpageview.h
+++ b/xfa/fxfa/cxfa_ffpageview.h
@@ -10,6 +10,7 @@
#include <vector>
#include "core/fxcrt/fx_string.h"
+#include "core/fxcrt/mask.h"
#include "fxjs/gc/heap.h"
#include "v8/include/cppgc/garbage-collected.h"
#include "v8/include/cppgc/member.h"
@@ -38,9 +39,9 @@
// These always return a non-null iterator from the gc heap.
CXFA_FFWidget::IteratorIface* CreateGCedFormWidgetIterator(
- XFA_WidgetStatusMask dwWidgetFilter);
+ Mask<XFA_WidgetStatus> dwWidgetFilter);
CXFA_FFWidget::IteratorIface* CreateGCedTraverseWidgetIterator(
- XFA_WidgetStatusMask dwWidgetFilter);
+ Mask<XFA_WidgetStatus> dwWidgetFilter);
private:
CXFA_FFPageView(CXFA_FFDocView* pDocView, CXFA_Node* pPageArea);
@@ -69,10 +70,10 @@
private:
CXFA_FFPageWidgetIterator(CXFA_FFPageView* pPageView,
- XFA_WidgetStatusMask dwFilter);
+ Mask<XFA_WidgetStatus> dwFilter);
CXFA_LayoutItemIterator m_sIterator;
- const XFA_WidgetStatusMask m_dwFilter;
+ const Mask<XFA_WidgetStatus> m_dwFilter;
const bool m_bIgnoreRelevant;
};
@@ -95,7 +96,7 @@
private:
CXFA_FFTabOrderPageWidgetIterator(CXFA_FFPageView* pPageView,
- XFA_WidgetStatusMask dwFilter);
+ Mask<XFA_WidgetStatus> dwFilter);
CXFA_FFWidget* GetTraverseWidget(CXFA_FFWidget* pWidget);
CXFA_FFWidget* FindWidgetByName(const WideString& wsWidgetName,
@@ -105,7 +106,7 @@
cppgc::Member<CXFA_ViewLayoutItem> const m_pPageViewLayout;
std::vector<cppgc::Member<CXFA_ContentLayoutItem>> m_TabOrderWidgetArray;
- const XFA_WidgetStatusMask m_dwFilter;
+ const Mask<XFA_WidgetStatus> m_dwFilter;
int32_t m_iCurWidget = -1;
const bool m_bIgnoreRelevant;
};
diff --git a/xfa/fxfa/cxfa_fftextedit.cpp b/xfa/fxfa/cxfa_fftextedit.cpp
index 9eea6fe..9a83b6f 100644
--- a/xfa/fxfa/cxfa_fftextedit.cpp
+++ b/xfa/fxfa/cxfa_fftextedit.cpp
@@ -135,7 +135,7 @@
bool CXFA_FFTextEdit::OnLButtonDown(Mask<XFA_FWL_KeyFlag> dwFlags,
const CFX_PointF& point) {
if (!IsFocused()) {
- GetLayoutItem()->SetStatusBits(XFA_WidgetStatus_Focused);
+ GetLayoutItem()->SetStatusBits(XFA_WidgetStatus::kFocused);
UpdateFWLData();
InvalidateRect();
}
@@ -150,7 +150,7 @@
bool CXFA_FFTextEdit::OnRButtonDown(Mask<XFA_FWL_KeyFlag> dwFlags,
const CFX_PointF& point) {
if (!IsFocused()) {
- GetLayoutItem()->SetStatusBits(XFA_WidgetStatus_Focused);
+ GetLayoutItem()->SetStatusBits(XFA_WidgetStatus::kFocused);
UpdateFWLData();
InvalidateRect();
}
@@ -172,9 +172,9 @@
}
bool CXFA_FFTextEdit::OnSetFocus(CXFA_FFWidget* pOldWidget) {
- GetLayoutItem()->ClearStatusBits(XFA_WidgetStatus_TextEditValueChanged);
+ GetLayoutItem()->ClearStatusBits(XFA_WidgetStatus::kTextEditValueChanged);
if (!IsFocused()) {
- GetLayoutItem()->SetStatusBits(XFA_WidgetStatus_Focused);
+ GetLayoutItem()->SetStatusBits(XFA_WidgetStatus::kFocused);
UpdateFWLData();
InvalidateRect();
}
@@ -190,7 +190,7 @@
CFWL_MessageKillFocus msg(nullptr, GetNormalWidget());
SendMessageToFWLWidget(&msg);
- GetLayoutItem()->ClearStatusBits(XFA_WidgetStatus_Focused);
+ GetLayoutItem()->ClearStatusBits(XFA_WidgetStatus::kFocused);
SetEditScrollOffset();
ProcessCommittedData();
UpdateFWLData();
@@ -199,7 +199,7 @@
if (!CXFA_FFWidget::OnKillFocus(pNewWidget))
return false;
- GetLayoutItem()->ClearStatusBits(XFA_WidgetStatus_TextEditValueChanged);
+ GetLayoutItem()->ClearStatusBits(XFA_WidgetStatus::kTextEditValueChanged);
return true;
}
@@ -229,7 +229,8 @@
}
bool CXFA_FFTextEdit::IsDataChanged() {
- return GetLayoutItem()->TestStatusBits(XFA_WidgetStatus_TextEditValueChanged);
+ return GetLayoutItem()->TestStatusBits(
+ XFA_WidgetStatus::kTextEditValueChanged);
}
uint32_t CXFA_FFTextEdit::GetAlignment() {
@@ -316,7 +317,7 @@
void CXFA_FFTextEdit::OnTextWillChange(CFWL_Widget* pWidget,
CFWL_EventTextWillChange* event) {
- GetLayoutItem()->SetStatusBits(XFA_WidgetStatus_TextEditValueChanged);
+ GetLayoutItem()->SetStatusBits(XFA_WidgetStatus::kTextEditValueChanged);
CXFA_EventParam eParam;
eParam.m_eType = XFA_EVENT_Change;
diff --git a/xfa/fxfa/cxfa_ffwidget.cpp b/xfa/fxfa/cxfa_ffwidget.cpp
index 1c1584d..6cb200b 100644
--- a/xfa/fxfa/cxfa_ffwidget.cpp
+++ b/xfa/fxfa/cxfa_ffwidget.cpp
@@ -249,13 +249,13 @@
}
const CFX_RectF& CXFA_FFWidget::GetWidgetRect() const {
- if (!GetLayoutItem()->TestStatusBits(XFA_WidgetStatus_RectCached))
+ if (!GetLayoutItem()->TestStatusBits(XFA_WidgetStatus::kRectCached))
RecacheWidgetRect();
return m_WidgetRect;
}
const CFX_RectF& CXFA_FFWidget::RecacheWidgetRect() const {
- GetLayoutItem()->SetStatusBits(XFA_WidgetStatus_RectCached);
+ GetLayoutItem()->SetStatusBits(XFA_WidgetStatus::kRectCached);
m_WidgetRect = GetLayoutItem()->GetAbsoluteRect();
return m_WidgetRect;
}
@@ -284,8 +284,8 @@
return rtWidget;
}
-void CXFA_FFWidget::ModifyStatus(XFA_WidgetStatusMask dwAdded,
- XFA_WidgetStatusMask dwRemoved) {
+void CXFA_FFWidget::ModifyStatus(Mask<XFA_WidgetStatus> dwAdded,
+ Mask<XFA_WidgetStatus> dwRemoved) {
GetLayoutItem()->ClearStatusBits(dwRemoved);
GetLayoutItem()->SetStatusBits(dwAdded);
}
@@ -438,7 +438,7 @@
if (!pParent->OnSetFocus(pOldWidget))
return false;
}
- GetLayoutItem()->SetStatusBits(XFA_WidgetStatus_Focused);
+ GetLayoutItem()->SetStatusBits(XFA_WidgetStatus::kFocused);
CXFA_EventParam eParam;
eParam.m_eType = XFA_EVENT_Enter;
@@ -448,7 +448,7 @@
}
bool CXFA_FFWidget::OnKillFocus(CXFA_FFWidget* pNewWidget) {
- GetLayoutItem()->ClearStatusBits(XFA_WidgetStatus_Focused);
+ GetLayoutItem()->ClearStatusBits(XFA_WidgetStatus::kFocused);
EventKillFocus();
if (!pNewWidget)
return true;
@@ -652,13 +652,13 @@
}
bool CXFA_FFWidget::HasVisibleStatus() const {
- return GetLayoutItem()->TestStatusBits(XFA_WidgetStatus_Visible);
+ return GetLayoutItem()->TestStatusBits(XFA_WidgetStatus::kVisible);
}
void CXFA_FFWidget::EventKillFocus() {
CXFA_ContentLayoutItem* pItem = GetLayoutItem();
- if (pItem->TestStatusBits(XFA_WidgetStatus_Access)) {
- pItem->ClearStatusBits(XFA_WidgetStatus_Access);
+ if (pItem->TestStatusBits(XFA_WidgetStatus::kAccess)) {
+ pItem->ClearStatusBits(XFA_WidgetStatus::kAccess);
return;
}
CXFA_EventParam eParam;
@@ -668,13 +668,13 @@
}
bool CXFA_FFWidget::IsButtonDown() {
- return GetLayoutItem()->TestStatusBits(XFA_WidgetStatus_ButtonDown);
+ return GetLayoutItem()->TestStatusBits(XFA_WidgetStatus::kButtonDown);
}
void CXFA_FFWidget::SetButtonDown(bool bSet) {
CXFA_ContentLayoutItem* pItem = GetLayoutItem();
if (bSet)
- pItem->SetStatusBits(XFA_WidgetStatus_ButtonDown);
+ pItem->SetStatusBits(XFA_WidgetStatus::kButtonDown);
else
- pItem->ClearStatusBits(XFA_WidgetStatus_ButtonDown);
+ pItem->ClearStatusBits(XFA_WidgetStatus::kButtonDown);
}
diff --git a/xfa/fxfa/cxfa_ffwidget.h b/xfa/fxfa/cxfa_ffwidget.h
index 1fb8ca2..bddabe5 100644
--- a/xfa/fxfa/cxfa_ffwidget.h
+++ b/xfa/fxfa/cxfa_ffwidget.h
@@ -11,6 +11,7 @@
#include "core/fpdfdoc/cpdf_formfield.h"
#include "core/fxcodec/fx_codec_def.h"
+#include "core/fxcrt/mask.h"
#include "core/fxcrt/retain_ptr.h"
#include "core/fxge/cfx_graphstatedata.h"
#include "fxjs/gc/heap.h"
@@ -171,8 +172,8 @@
CXFA_FFWidget* GetNextFFWidget() const;
const CFX_RectF& GetWidgetRect() const;
const CFX_RectF& RecacheWidgetRect() const;
- void ModifyStatus(XFA_WidgetStatusMask dwAdded,
- XFA_WidgetStatusMask dwRemoved);
+ void ModifyStatus(Mask<XFA_WidgetStatus> dwAdded,
+ Mask<XFA_WidgetStatus> dwRemoved);
CXFA_FFDoc* GetDoc();
CXFA_FFApp* GetApp();
@@ -180,7 +181,7 @@
CFWL_App* GetFWLApp() const;
void InvalidateRect();
bool IsFocused() const {
- return GetLayoutItem()->TestStatusBits(XFA_WidgetStatus_Focused);
+ return GetLayoutItem()->TestStatusBits(XFA_WidgetStatus::kFocused);
}
CFX_PointF Rotate2Normal(const CFX_PointF& point);
bool IsLayoutRectEmpty();
diff --git a/xfa/fxfa/cxfa_ffwidgethandler.cpp b/xfa/fxfa/cxfa_ffwidgethandler.cpp
index 5cd4efd..a0cbe2c 100644
--- a/xfa/fxfa/cxfa_ffwidgethandler.cpp
+++ b/xfa/fxfa/cxfa_ffwidgethandler.cpp
@@ -186,7 +186,7 @@
FWL_WidgetHit CXFA_FFWidgetHandler::HitTest(CXFA_FFWidget* pWidget,
const CFX_PointF& point) {
- if (!pWidget->GetLayoutItem()->TestStatusBits(XFA_WidgetStatus_Visible))
+ if (!pWidget->GetLayoutItem()->TestStatusBits(XFA_WidgetStatus::kVisible))
return FWL_WidgetHit::Unknown;
return pWidget->HitTest(pWidget->Rotate2Normal(point));
}
diff --git a/xfa/fxfa/fxfa.h b/xfa/fxfa/fxfa.h
index 688bdce..863c139 100644
--- a/xfa/fxfa/fxfa.h
+++ b/xfa/fxfa/fxfa.h
@@ -7,8 +7,6 @@
#ifndef XFA_FXFA_FXFA_H_
#define XFA_FXFA_FXFA_H_
-#include <type_traits>
-
// Note, values must match fpdf_formfill.h JSPLATFORM_ALERT_BUTTON_* flags.
enum class AlertButton {
kDefault = 0,
@@ -60,18 +58,17 @@
kDisabled = 2,
};
-enum XFA_WidgetStatus : uint16_t {
- XFA_WidgetStatus_None = 0,
- XFA_WidgetStatus_Access = 1 << 0,
- XFA_WidgetStatus_ButtonDown = 1 << 1,
- XFA_WidgetStatus_Disabled = 1 << 2,
- XFA_WidgetStatus_Focused = 1 << 3,
- XFA_WidgetStatus_Printable = 1 << 4,
- XFA_WidgetStatus_RectCached = 1 << 5,
- XFA_WidgetStatus_TextEditValueChanged = 1 << 6,
- XFA_WidgetStatus_Viewable = 1 << 7,
- XFA_WidgetStatus_Visible = 1 << 8
+enum class XFA_WidgetStatus : uint16_t {
+ kNone = 0,
+ kAccess = 1 << 0,
+ kButtonDown = 1 << 1,
+ kDisabled = 1 << 2,
+ kFocused = 1 << 3,
+ kPrintable = 1 << 4,
+ kRectCached = 1 << 5,
+ kTextEditValueChanged = 1 << 6,
+ kViewable = 1 << 7,
+ kVisible = 1 << 8
};
-using XFA_WidgetStatusMask = std::underlying_type<XFA_WidgetStatus>::type;
#endif // XFA_FXFA_FXFA_H_
diff --git a/xfa/fxfa/layout/cxfa_contentlayoutitem.h b/xfa/fxfa/layout/cxfa_contentlayoutitem.h
index a3dd50d..c8462d2 100644
--- a/xfa/fxfa/layout/cxfa_contentlayoutitem.h
+++ b/xfa/fxfa/layout/cxfa_contentlayoutitem.h
@@ -8,6 +8,7 @@
#define XFA_FXFA_LAYOUT_CXFA_CONTENTLAYOUTITEM_H_
#include "core/fxcrt/fx_coordinates.h"
+#include "core/fxcrt/mask.h"
#include "v8/include/cppgc/persistent.h"
#include "xfa/fxfa/fxfa.h"
#include "xfa/fxfa/layout/cxfa_layoutitem.h"
@@ -33,12 +34,12 @@
CFX_RectF GetAbsoluteRect() const;
size_t GetIndex() const;
- void SetStatusBits(XFA_WidgetStatusMask val) { m_dwStatus |= val; }
- void ClearStatusBits(XFA_WidgetStatusMask val) { m_dwStatus &= ~val; }
+ void SetStatusBits(Mask<XFA_WidgetStatus> val) { m_dwStatus |= val; }
+ void ClearStatusBits(Mask<XFA_WidgetStatus> val) { m_dwStatus &= ~val; }
// TRUE if all (not any) bits set in |val| are set in |m_dwStatus|.
- bool TestStatusBits(XFA_WidgetStatusMask val) const {
- return (m_dwStatus & val) == val;
+ bool TestStatusBits(Mask<XFA_WidgetStatus> val) const {
+ return m_dwStatus.TestAll(val);
}
CFX_PointF m_sPos;
@@ -48,7 +49,7 @@
CXFA_ContentLayoutItem(CXFA_Node* pNode, CXFA_FFWidget* pFFWidget);
void RemoveSelf();
- mutable XFA_WidgetStatusMask m_dwStatus = 0;
+ mutable Mask<XFA_WidgetStatus> m_dwStatus;
cppgc::Member<CXFA_ContentLayoutItem> m_pPrev;
cppgc::Member<CXFA_ContentLayoutItem> m_pNext;
cppgc::Member<CXFA_FFWidget> const m_pFFWidget;
diff --git a/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp b/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
index 4ceba71..86f36fc 100644
--- a/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
+++ b/xfa/fxfa/layout/cxfa_viewlayoutprocessor.cpp
@@ -105,25 +105,25 @@
using PageSetIterator =
CXFA_NodeIteratorTemplate<CXFA_ViewLayoutItem, TraverseStrategy_PageSet>;
-XFA_WidgetStatusMask GetRelevant(CXFA_Node* pFormItem,
- XFA_WidgetStatusMask dwParentRelvant) {
- XFA_WidgetStatusMask dwRelevant =
- XFA_WidgetStatus_Viewable | XFA_WidgetStatus_Printable;
+Mask<XFA_WidgetStatus> GetRelevant(CXFA_Node* pFormItem,
+ Mask<XFA_WidgetStatus> dwParentRelvant) {
+ Mask<XFA_WidgetStatus> dwRelevant = {XFA_WidgetStatus::kViewable,
+ XFA_WidgetStatus::kPrintable};
WideString wsRelevant =
pFormItem->JSObject()->GetCData(XFA_Attribute::Relevant);
if (!wsRelevant.IsEmpty()) {
if (wsRelevant.EqualsASCII("+print") || wsRelevant.EqualsASCII("print"))
- dwRelevant &= ~XFA_WidgetStatus_Viewable;
+ dwRelevant.Clear(XFA_WidgetStatus::kViewable);
else if (wsRelevant.EqualsASCII("-print"))
- dwRelevant &= ~XFA_WidgetStatus_Printable;
+ dwRelevant.Clear(XFA_WidgetStatus::kPrintable);
}
- if (!(dwParentRelvant & XFA_WidgetStatus_Viewable) &&
- (dwRelevant != XFA_WidgetStatus_Viewable)) {
- dwRelevant &= ~XFA_WidgetStatus_Viewable;
+ if (!(dwParentRelvant & XFA_WidgetStatus::kViewable) &&
+ (dwRelevant != XFA_WidgetStatus::kViewable)) {
+ dwRelevant.Clear(XFA_WidgetStatus::kViewable);
}
- if (!(dwParentRelvant & XFA_WidgetStatus_Printable) &&
- (dwRelevant != XFA_WidgetStatus_Printable)) {
- dwRelevant &= ~XFA_WidgetStatus_Printable;
+ if (!(dwParentRelvant & XFA_WidgetStatus::kPrintable) &&
+ (dwRelevant != XFA_WidgetStatus::kPrintable)) {
+ dwRelevant.Clear(XFA_WidgetStatus::kPrintable);
}
return dwRelevant;
}
@@ -131,12 +131,12 @@
void SyncContainer(CXFA_FFNotify* pNotify,
CXFA_LayoutProcessor* pDocLayout,
CXFA_LayoutItem* pViewItem,
- XFA_WidgetStatusMask dwRelevant,
+ Mask<XFA_WidgetStatus> dwRelevant,
bool bVisible,
int32_t nPageIndex) {
bool bVisibleItem = false;
- XFA_WidgetStatusMask dwStatus = 0;
- XFA_WidgetStatusMask dwRelevantContainer = 0;
+ Mask<XFA_WidgetStatus> dwStatus;
+ Mask<XFA_WidgetStatus> dwRelevantContainer;
if (bVisible) {
XFA_AttributeValue eAttributeValue =
pViewItem->GetFormNode()
@@ -147,8 +147,9 @@
bVisibleItem = true;
dwRelevantContainer = GetRelevant(pViewItem->GetFormNode(), dwRelevant);
- dwStatus =
- (bVisibleItem ? XFA_WidgetStatus_Visible : 0) | dwRelevantContainer;
+ dwStatus = dwRelevantContainer;
+ if (bVisibleItem)
+ dwStatus |= XFA_WidgetStatus::kVisible;
}
pNotify->OnLayoutItemAdded(pDocLayout, pViewItem, nPageIndex, dwStatus);
for (CXFA_LayoutItem* pChild = pViewItem->GetFirstChild(); pChild;
@@ -1885,8 +1886,8 @@
continue;
nPageIdx++;
- XFA_WidgetStatusMask dwRelevant =
- XFA_WidgetStatus_Viewable | XFA_WidgetStatus_Printable;
+ Mask<XFA_WidgetStatus> dwRelevant = {XFA_WidgetStatus::kViewable,
+ XFA_WidgetStatus::kPrintable};
CXFA_LayoutItemIterator iterator(pViewItem);
CXFA_LayoutItem* pChildLayoutItem = iterator.GetCurrent();
while (pChildLayoutItem) {
@@ -1903,7 +1904,7 @@
->TryEnum(XFA_Attribute::Presence, true)
.value_or(XFA_AttributeValue::Visible);
bool bVisible = presence == XFA_AttributeValue::Visible;
- XFA_WidgetStatusMask dwRelevantChild =
+ Mask<XFA_WidgetStatus> dwRelevantChild =
GetRelevant(pContentItem->GetFormNode(), dwRelevant);
SyncContainer(pNotify, m_pLayoutProcessor, pContentItem,
dwRelevantChild, bVisible, nPageIdx);