diff --git a/fpdfsdk/pdfwindow/cpwl_combo_box.cpp b/fpdfsdk/pdfwindow/cpwl_combo_box.cpp
index 20cbcd3..792524b 100644
--- a/fpdfsdk/pdfwindow/cpwl_combo_box.cpp
+++ b/fpdfsdk/pdfwindow/cpwl_combo_box.cpp
@@ -40,10 +40,7 @@
   if (CPWL_Wnd* pParent = GetParentWindow())
     pParent->NotifyLButtonUp(this, point);
 
-  bool bExit = false;
-  OnNotifySelChanged(false, bExit, nFlag);
-
-  return !bExit;
+  return !OnNotifySelChanged(false, nFlag);
 }
 
 bool CPWL_CBListBox::IsMovementKey(uint16_t nChar) const {
@@ -83,10 +80,7 @@
       m_pList->OnVK_RIGHT(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
       break;
   }
-
-  bool bExit = false;
-  OnNotifySelChanged(true, bExit, nFlag);
-  return bExit;
+  return OnNotifySelChanged(true, nFlag);
 }
 
 bool CPWL_CBListBox::IsChar(uint16_t nChar, uint32_t nFlag) const {
@@ -97,9 +91,7 @@
   if (CPWL_ComboBox* pComboBox = (CPWL_ComboBox*)GetParentWindow())
     pComboBox->SetSelectText();
 
-  bool bExit = false;
-  OnNotifySelChanged(true, bExit, nFlag);
-  return bExit;
+  return OnNotifySelChanged(true, nFlag);
 }
 
 void CPWL_CBButton::GetThisAppearanceStream(std::ostringstream* psAppStream) {
diff --git a/fpdfsdk/pdfwindow/cpwl_list_box.cpp b/fpdfsdk/pdfwindow/cpwl_list_box.cpp
index 8691898..bd2bdb5 100644
--- a/fpdfsdk/pdfwindow/cpwl_list_box.cpp
+++ b/fpdfsdk/pdfwindow/cpwl_list_box.cpp
@@ -223,10 +223,7 @@
     case FWL_VKEY_Delete:
       break;
   }
-
-  bool bExit = false;
-  OnNotifySelChanged(true, bExit, nFlag);
-
+  OnNotifySelChanged(true, nFlag);
   return true;
 }
 
@@ -236,9 +233,7 @@
   if (!m_pList->OnChar(nChar, IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag)))
     return false;
 
-  bool bExit = false;
-  OnNotifySelChanged(true, bExit, nFlag);
-
+  OnNotifySelChanged(true, nFlag);
   return true;
 }
 
@@ -263,10 +258,7 @@
     ReleaseCapture();
     m_bMouseDown = false;
   }
-
-  bool bExit = false;
-  OnNotifySelChanged(false, bExit, nFlag);
-
+  OnNotifySelChanged(false, nFlag);
   return true;
 }
 
@@ -309,13 +301,12 @@
   m_pList->SetPlateRect(GetListRect());
 }
 
-void CPWL_ListBox::OnNotifySelChanged(bool bKeyDown,
-                                      bool& bExit,
-                                      uint32_t nFlag) {
+bool CPWL_ListBox::OnNotifySelChanged(bool bKeyDown, uint32_t nFlag) {
   if (!m_pFillerNotify)
-    return;
+    return false;
 
   bool bRC = true;
+  bool bExit = false;
   CFX_WideString swChange = GetText();
   CFX_WideString strChangeEx;
   int nSelStart = 0;
@@ -323,6 +314,7 @@
   m_pFillerNotify->OnBeforeKeyStroke(GetAttachedData(), swChange, strChangeEx,
                                      nSelStart, nSelEnd, bKeyDown, bRC, bExit,
                                      nFlag);
+  return bExit;
 }
 
 CFX_FloatRect CPWL_ListBox::GetFocusRect() const {
@@ -425,7 +417,6 @@
   else
     m_pList->OnVK_UP(IsSHIFTpressed(nFlag), IsCTRLpressed(nFlag));
 
-  bool bExit = false;
-  OnNotifySelChanged(false, bExit, nFlag);
+  OnNotifySelChanged(false, nFlag);
   return true;
 }
diff --git a/fpdfsdk/pdfwindow/cpwl_list_box.h b/fpdfsdk/pdfwindow/cpwl_list_box.h
index d97f5ae..d4581c0 100644
--- a/fpdfsdk/pdfwindow/cpwl_list_box.h
+++ b/fpdfsdk/pdfwindow/cpwl_list_box.h
@@ -70,7 +70,7 @@
 
   virtual CFX_WideString GetText() const;
 
-  void OnNotifySelChanged(bool bKeyDown, bool& bExit, uint32_t nFlag);
+  bool OnNotifySelChanged(bool bKeyDown, uint32_t nFlag);
 
   void AddString(const CFX_WideString& str);
   void SetTopVisibleIndex(int32_t nItemIndex);
