diff --git a/xfa/fwl/cfwl_scrollbar.cpp b/xfa/fwl/cfwl_scrollbar.cpp
index e5b0bf9..b967911 100644
--- a/xfa/fwl/cfwl_scrollbar.cpp
+++ b/xfa/fwl/cfwl_scrollbar.cpp
@@ -327,15 +327,15 @@
   m_cpTrackPoint = point;
   m_fLastTrackPos = m_fTrackPos;
   if (m_MinBtnRect.Contains(point))
-    DoMouseDown(0, m_MinBtnRect, m_iMinButtonState, point);
+    DoMouseDown(0, m_MinBtnRect, &m_iMinButtonState, point);
   else if (m_ThumbRect.Contains(point))
-    DoMouseDown(1, m_ThumbRect, m_iThumbButtonState, point);
+    DoMouseDown(1, m_ThumbRect, &m_iThumbButtonState, point);
   else if (m_MaxBtnRect.Contains(point))
-    DoMouseDown(2, m_MaxBtnRect, m_iMaxButtonState, point);
+    DoMouseDown(2, m_MaxBtnRect, &m_iMaxButtonState, point);
   else if (m_MinTrackRect.Contains(point))
-    DoMouseDown(3, m_MinTrackRect, m_iMinTrackState, point);
+    DoMouseDown(3, m_MinTrackRect, &m_iMinTrackState, point);
   else
-    DoMouseDown(4, m_MaxTrackRect, m_iMaxTrackState, point);
+    DoMouseDown(4, m_MaxTrackRect, &m_iMaxTrackState, point);
 
   if (!SendEvent()) {
     m_pTimer = std::make_unique<CFX_Timer>(GetFWLApp()->GetTimerHandler(), this,
@@ -346,28 +346,28 @@
 void CFWL_ScrollBar::OnLButtonUp(const CFX_PointF& point) {
   m_pTimer.reset();
   m_bMouseDown = false;
-  DoMouseUp(0, m_MinBtnRect, m_iMinButtonState, point);
-  DoMouseUp(1, m_ThumbRect, m_iThumbButtonState, point);
-  DoMouseUp(2, m_MaxBtnRect, m_iMaxButtonState, point);
-  DoMouseUp(3, m_MinTrackRect, m_iMinTrackState, point);
-  DoMouseUp(4, m_MaxTrackRect, m_iMaxTrackState, point);
+  DoMouseUp(0, m_MinBtnRect, &m_iMinButtonState, point);
+  DoMouseUp(1, m_ThumbRect, &m_iThumbButtonState, point);
+  DoMouseUp(2, m_MaxBtnRect, &m_iMaxButtonState, point);
+  DoMouseUp(3, m_MinTrackRect, &m_iMinTrackState, point);
+  DoMouseUp(4, m_MaxTrackRect, &m_iMaxTrackState, point);
   SetGrab(false);
 }
 
 void CFWL_ScrollBar::OnMouseMove(const CFX_PointF& point) {
-  DoMouseMove(0, m_MinBtnRect, m_iMinButtonState, point);
-  DoMouseMove(1, m_ThumbRect, m_iThumbButtonState, point);
-  DoMouseMove(2, m_MaxBtnRect, m_iMaxButtonState, point);
-  DoMouseMove(3, m_MinTrackRect, m_iMinTrackState, point);
-  DoMouseMove(4, m_MaxTrackRect, m_iMaxTrackState, point);
+  DoMouseMove(0, m_MinBtnRect, &m_iMinButtonState, point);
+  DoMouseMove(1, m_ThumbRect, &m_iThumbButtonState, point);
+  DoMouseMove(2, m_MaxBtnRect, &m_iMaxButtonState, point);
+  DoMouseMove(3, m_MinTrackRect, &m_iMinTrackState, point);
+  DoMouseMove(4, m_MaxTrackRect, &m_iMaxTrackState, point);
 }
 
 void CFWL_ScrollBar::OnMouseLeave() {
-  DoMouseLeave(0, m_MinBtnRect, m_iMinButtonState);
-  DoMouseLeave(1, m_ThumbRect, m_iThumbButtonState);
-  DoMouseLeave(2, m_MaxBtnRect, m_iMaxButtonState);
-  DoMouseLeave(3, m_MinTrackRect, m_iMinTrackState);
-  DoMouseLeave(4, m_MaxTrackRect, m_iMaxTrackState);
+  DoMouseLeave(0, m_MinBtnRect, &m_iMinButtonState);
+  DoMouseLeave(1, m_ThumbRect, &m_iThumbButtonState);
+  DoMouseLeave(2, m_MaxBtnRect, &m_iMaxButtonState);
+  DoMouseLeave(3, m_MinTrackRect, &m_iMinTrackState);
+  DoMouseLeave(4, m_MaxTrackRect, &m_iMaxTrackState);
 }
 
 void CFWL_ScrollBar::OnMouseWheel(const CFX_Vector& delta) {
@@ -378,42 +378,42 @@
 
 void CFWL_ScrollBar::DoMouseDown(int32_t iItem,
                                  const CFX_RectF& rtItem,
-                                 int32_t& iState,
+                                 CFWL_PartState* pState,
                                  const CFX_PointF& point) {
   if (!rtItem.Contains(point))
     return;
-  if (iState == CFWL_PartState_Pressed)
+  if (*pState == CFWL_PartState_Pressed)
     return;
 
-  iState = CFWL_PartState_Pressed;
+  *pState = CFWL_PartState_Pressed;
   RepaintRect(rtItem);
 }
 
 void CFWL_ScrollBar::DoMouseUp(int32_t iItem,
                                const CFX_RectF& rtItem,
-                               int32_t& iState,
+                               CFWL_PartState* pState,
                                const CFX_PointF& point) {
-  int32_t iNewState =
+  CFWL_PartState iNewState =
       rtItem.Contains(point) ? CFWL_PartState_Hovered : CFWL_PartState_Normal;
-  if (iState == iNewState)
+  if (*pState == iNewState)
     return;
 
-  iState = iNewState;
+  *pState = iNewState;
   RepaintRect(rtItem);
   OnScroll(CFWL_EventScroll::Code::EndScroll, m_fTrackPos);
 }
 
 void CFWL_ScrollBar::DoMouseMove(int32_t iItem,
                                  const CFX_RectF& rtItem,
-                                 int32_t& iState,
+                                 CFWL_PartState* pState,
                                  const CFX_PointF& point) {
   if (!m_bMouseDown) {
-    int32_t iNewState =
+    CFWL_PartState iNewState =
         rtItem.Contains(point) ? CFWL_PartState_Hovered : CFWL_PartState_Normal;
-    if (iState == iNewState)
+    if (*pState == iNewState)
       return;
 
-    iState = iNewState;
+    *pState = iNewState;
     RepaintRect(rtItem);
   } else if ((2 == iItem) && (m_iThumbButtonState == CFWL_PartState_Pressed)) {
     m_fTrackPos = GetTrackPointPos(point);
@@ -423,21 +423,21 @@
 
 void CFWL_ScrollBar::DoMouseLeave(int32_t iItem,
                                   const CFX_RectF& rtItem,
-                                  int32_t& iState) {
-  if (iState == CFWL_PartState_Normal)
+                                  CFWL_PartState* pState) {
+  if (*pState == CFWL_PartState_Normal)
     return;
 
-  iState = CFWL_PartState_Normal;
+  *pState = CFWL_PartState_Normal;
   RepaintRect(rtItem);
 }
 
 void CFWL_ScrollBar::DoMouseHover(int32_t iItem,
                                   const CFX_RectF& rtItem,
-                                  int32_t& iState) {
-  if (iState == CFWL_PartState_Hovered)
+                                  CFWL_PartState* pState) {
+  if (*pState == CFWL_PartState_Hovered)
     return;
 
-  iState = CFWL_PartState_Hovered;
+  *pState = CFWL_PartState_Hovered;
   RepaintRect(rtItem);
 }
 
diff --git a/xfa/fwl/cfwl_scrollbar.h b/xfa/fwl/cfwl_scrollbar.h
index 0923a02..dd8921d 100644
--- a/xfa/fwl/cfwl_scrollbar.h
+++ b/xfa/fwl/cfwl_scrollbar.h
@@ -13,6 +13,7 @@
 #include "core/fxcrt/fx_system.h"
 #include "third_party/base/check.h"
 #include "xfa/fwl/cfwl_eventscroll.h"
+#include "xfa/fwl/cfwl_themepart.h"
 #include "xfa/fwl/cfwl_widget.h"
 
 #define FWL_STYLEEXT_SCB_Horz (0L << 0)
@@ -86,18 +87,22 @@
   bool DoScroll(CFWL_EventScroll::Code dwCode, float fPos);
   void DoMouseDown(int32_t iItem,
                    const CFX_RectF& rtItem,
-                   int32_t& iState,
+                   CFWL_PartState* pState,
                    const CFX_PointF& point);
   void DoMouseUp(int32_t iItem,
                  const CFX_RectF& rtItem,
-                 int32_t& iState,
+                 CFWL_PartState* pState,
                  const CFX_PointF& point);
   void DoMouseMove(int32_t iItem,
                    const CFX_RectF& rtItem,
-                   int32_t& iState,
+                   CFWL_PartState* pState,
                    const CFX_PointF& point);
-  void DoMouseLeave(int32_t iItem, const CFX_RectF& rtItem, int32_t& iState);
-  void DoMouseHover(int32_t iItem, const CFX_RectF& rtItem, int32_t& iState);
+  void DoMouseLeave(int32_t iItem,
+                    const CFX_RectF& rtItem,
+                    CFWL_PartState* pState);
+  void DoMouseHover(int32_t iItem,
+                    const CFX_RectF& rtItem,
+                    CFWL_PartState* pState);
 
   float m_fRangeMin = 0.0f;
   float m_fRangeMax = -1.0f;
@@ -105,11 +110,11 @@
   float m_fStepSize = 0.0f;
   float m_fPos = 0.0f;
   float m_fTrackPos = 0.0f;
-  int32_t m_iMinButtonState = CFWL_PartState_Normal;
-  int32_t m_iMaxButtonState = CFWL_PartState_Normal;
-  int32_t m_iThumbButtonState = CFWL_PartState_Normal;
-  int32_t m_iMinTrackState = CFWL_PartState_Normal;
-  int32_t m_iMaxTrackState = CFWL_PartState_Normal;
+  CFWL_PartState m_iMinButtonState = CFWL_PartState_Normal;
+  CFWL_PartState m_iMaxButtonState = CFWL_PartState_Normal;
+  CFWL_PartState m_iThumbButtonState = CFWL_PartState_Normal;
+  CFWL_PartState m_iMinTrackState = CFWL_PartState_Normal;
+  CFWL_PartState m_iMaxTrackState = CFWL_PartState_Normal;
   float m_fLastTrackPos = 0.0f;
   CFX_PointF m_cpTrackPoint;
   int32_t m_iMouseWheel = 0;
diff --git a/xfa/fwl/cfwl_themepart.h b/xfa/fwl/cfwl_themepart.h
index c162772..a3a1a34 100644
--- a/xfa/fwl/cfwl_themepart.h
+++ b/xfa/fwl/cfwl_themepart.h
@@ -7,11 +7,15 @@
 #ifndef XFA_FWL_CFWL_THEMEPART_H_
 #define XFA_FWL_CFWL_THEMEPART_H_
 
+#include <type_traits>
+
 #include "core/fxcrt/fx_coordinates.h"
 #include "core/fxcrt/fx_system.h"
 #include "core/fxcrt/unowned_ptr.h"
 
-enum CFWL_PartState {
+class CFWL_Widget;
+
+enum CFWL_PartState : uint32_t {
   CFWL_PartState_Normal = 0,
 
   CFWL_PartState_Checked = 1 << 1,
@@ -28,8 +32,7 @@
   CFWL_PartState_RSelected = 1 << 13,
   CFWL_PartState_Selected = 1 << 14
 };
-
-class CFWL_Widget;
+using CFWL_PartStateMask = std::underlying_type<CFWL_PartState>::type;
 
 class CFWL_ThemePart {
  public:
@@ -87,7 +90,7 @@
   CFX_Matrix m_matrix;
   CFX_RectF m_PartRect;
   UnownedPtr<const CFX_RectF> m_pRtData;
-  uint32_t m_dwStates = CFWL_PartState_Normal;
+  CFWL_PartStateMask m_dwStates = CFWL_PartState_Normal;
   Part m_iPart = Part::kNone;
   bool m_bMaximize = false;
   bool m_bStaticBackground = false;
