diff --git a/xfa/fwl/cfwl_combobox.cpp b/xfa/fwl/cfwl_combobox.cpp
index 6489e9e..4513492 100644
--- a/xfa/fwl/cfwl_combobox.cpp
+++ b/xfa/fwl/cfwl_combobox.cpp
@@ -450,12 +450,12 @@
   switch (pMessage->GetType()) {
     case CFWL_Message::Type::SetFocus: {
       backDefault = false;
-      DisForm_OnFocusChanged(pMessage, true);
+      OnFocusChanged(pMessage, true);
       break;
     }
     case CFWL_Message::Type::KillFocus: {
       backDefault = false;
-      DisForm_OnFocusChanged(pMessage, false);
+      OnFocusChanged(pMessage, false);
       break;
     }
     case CFWL_Message::Type::Mouse: {
@@ -463,7 +463,7 @@
       CFWL_MessageMouse* pMsg = static_cast<CFWL_MessageMouse*>(pMessage);
       switch (pMsg->m_dwCmd) {
         case FWL_MouseCommand::LeftButtonDown:
-          DisForm_OnLButtonDown(pMsg);
+          OnLButtonDown(pMsg);
           break;
         case FWL_MouseCommand::LeftButtonUp:
           OnLButtonUp(pMsg);
@@ -488,7 +488,7 @@
           break;
         }
       }
-      DisForm_OnKey(pKey);
+      OnKey(pKey);
       break;
     }
     default:
@@ -526,7 +526,7 @@
   RepaintRect(m_rtBtn);
 }
 
-void CFWL_ComboBox::DisForm_OnLButtonDown(CFWL_MessageMouse* pMsg) {
+void CFWL_ComboBox::OnLButtonDown(CFWL_MessageMouse* pMsg) {
   bool bDropDown = IsDropListVisible();
   CFX_RectF& rtBtn = bDropDown ? m_rtBtn : m_rtClient;
   if (!rtBtn.Contains(pMsg->m_pos))
@@ -541,7 +541,7 @@
   ShowDropList(true);
 }
 
-void CFWL_ComboBox::DisForm_OnFocusChanged(CFWL_Message* pMsg, bool bSet) {
+void CFWL_ComboBox::OnFocusChanged(CFWL_Message* pMsg, bool bSet) {
   if (bSet) {
     m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused;
     if ((m_pEdit->GetStates() & FWL_WGTSTATE_Focused) == 0) {
@@ -556,7 +556,7 @@
   }
 }
 
-void CFWL_ComboBox::DisForm_OnKey(CFWL_MessageKey* pMsg) {
+void CFWL_ComboBox::OnKey(CFWL_MessageKey* pMsg) {
   uint32_t dwKeyCode = pMsg->m_dwKeyCode;
   const bool bUp = dwKeyCode == FWL_VKEY_Up;
   const bool bDown = dwKeyCode == FWL_VKEY_Down;
diff --git a/xfa/fwl/cfwl_combobox.h b/xfa/fwl/cfwl_combobox.h
index 500c166..93084df 100644
--- a/xfa/fwl/cfwl_combobox.h
+++ b/xfa/fwl/cfwl_combobox.h
@@ -120,9 +120,9 @@
   bool IsDropListVisible() const {
     return !(m_pListBox->GetStates() & FWL_WGTSTATE_Invisible);
   }
-  void DisForm_OnLButtonDown(CFWL_MessageMouse* pMsg);
-  void DisForm_OnFocusChanged(CFWL_Message* pMsg, bool bSet);
-  void DisForm_OnKey(CFWL_MessageKey* pMsg);
+  void OnLButtonDown(CFWL_MessageMouse* pMsg);
+  void OnFocusChanged(CFWL_Message* pMsg, bool bSet);
+  void OnKey(CFWL_MessageKey* pMsg);
 
   CFX_RectF m_rtClient;
   CFX_RectF m_rtContent;
