diff --git a/xfa/fwl/core/cfwl_listbox.cpp b/xfa/fwl/core/cfwl_listbox.cpp
index 69d2f0e..9267f59 100644
--- a/xfa/fwl/core/cfwl_listbox.cpp
+++ b/xfa/fwl/core/cfwl_listbox.cpp
@@ -32,11 +32,6 @@
   CFWL_Widget::Initialize();
 }
 
-FWL_Error CFWL_ListBox::AddDIBitmap(CFX_DIBitmap* pDIB, CFWL_ListItem* pItem) {
-  static_cast<CFWL_ListItem*>(pItem)->m_pDIB = pDIB;
-  return FWL_Error::Succeeded;
-}
-
 CFWL_ListItem* CFWL_ListBox::AddString(const CFX_WideStringC& wsAdd,
                                        bool bSelect) {
   std::unique_ptr<CFWL_ListItem> pItem(new CFWL_ListItem);
@@ -106,25 +101,6 @@
     ToListBox(GetWidget())->GetScrollPos(fPos, bVert);
 }
 
-FWL_Error CFWL_ListBox::SetItemHeight(FX_FLOAT fItemHeight) {
-  m_fItemHeight = fItemHeight;
-  return FWL_Error::Succeeded;
-}
-
-CFWL_ListItem* CFWL_ListBox::GetFocusItem() {
-  for (const auto& pItem : m_ItemArray) {
-    if (pItem->m_dwStates & FWL_ITEMSTATE_LTB_Focused)
-      return pItem.get();
-  }
-  return nullptr;
-}
-
-FWL_Error CFWL_ListBox::SetFocusItem(CFWL_ListItem* pItem) {
-  int32_t nIndex = GetItemIndex(GetWidget(), pItem);
-  m_ItemArray[nIndex]->m_dwStates |= FWL_ITEMSTATE_LTB_Focused;
-  return FWL_Error::Succeeded;
-}
-
 int32_t CFWL_ListBox::CountItems() {
   return pdfium::CollectionSize<int32_t>(m_ItemArray);
 }
@@ -136,58 +112,6 @@
   return m_ItemArray[nIndex].get();
 }
 
-FWL_Error CFWL_ListBox::SetItemString(CFWL_ListItem* pItem,
-                                      const CFX_WideStringC& wsText) {
-  if (!pItem)
-    return FWL_Error::Indefinite;
-  static_cast<CFWL_ListItem*>(pItem)->m_wsText = wsText;
-  return FWL_Error::Succeeded;
-}
-
-FWL_Error CFWL_ListBox::GetItemString(CFWL_ListItem* pItem,
-                                      CFX_WideString& wsText) {
-  if (!pItem)
-    return FWL_Error::Indefinite;
-  wsText = static_cast<CFWL_ListItem*>(pItem)->m_wsText;
-  return FWL_Error::Succeeded;
-}
-
-FWL_Error CFWL_ListBox::SetItemData(CFWL_ListItem* pItem, void* pData) {
-  if (!pItem)
-    return FWL_Error::Indefinite;
-  static_cast<CFWL_ListItem*>(pItem)->m_pData = pData;
-  return FWL_Error::Succeeded;
-}
-
-void* CFWL_ListBox::GetItemData(CFWL_ListItem* pItem) {
-  return pItem ? static_cast<CFWL_ListItem*>(pItem)->m_pData : nullptr;
-}
-
-CFWL_ListItem* CFWL_ListBox::GetItemAtPoint(FX_FLOAT fx, FX_FLOAT fy) {
-  CFX_RectF rtClient;
-  GetWidget()->GetClientRect(rtClient);
-  fx -= rtClient.left;
-  fy -= rtClient.top;
-  FX_FLOAT fPosX = 0;
-  FX_FLOAT fPosY = 0;
-  ToListBox(GetWidget())->GetScrollPos(fx);
-  ToListBox(GetWidget())->GetScrollPos(fy, false);
-  int32_t nCount = CountItems(nullptr);
-  for (int32_t i = 0; i < nCount; i++) {
-    CFWL_ListItem* pItem = GetItem(nullptr, i);
-    if (!pItem) {
-      continue;
-    }
-    CFX_RectF rtItem;
-    GetItemRect(nullptr, pItem, rtItem);
-    rtItem.Offset(-fPosX, -fPosY);
-    if (rtItem.Contains(fx, fy)) {
-      return pItem;
-    }
-  }
-  return nullptr;
-}
-
 uint32_t CFWL_ListBox::GetItemStates(CFWL_ListItem* pItem) {
   if (!pItem)
     return 0;
@@ -197,7 +121,7 @@
 
 FWL_Error CFWL_ListBox::GetCaption(IFWL_Widget* pWidget,
                                    CFX_WideString& wsCaption) {
-  wsCaption = m_wsData;
+  wsCaption = L"";
   return FWL_Error::Succeeded;
 }
 
@@ -278,7 +202,7 @@
 }
 
 FX_FLOAT CFWL_ListBox::GetItemHeight(IFWL_Widget* pWidget) {
-  return m_fItemHeight;
+  return 20;
 }
 
 CFX_DIBitmap* CFWL_ListBox::GetItemIcon(IFWL_Widget* pWidget,
diff --git a/xfa/fwl/core/cfwl_listbox.h b/xfa/fwl/core/cfwl_listbox.h
index ff24e5a..901f77e 100644
--- a/xfa/fwl/core/cfwl_listbox.h
+++ b/xfa/fwl/core/cfwl_listbox.h
@@ -22,28 +22,6 @@
 
   void Initialize();
 
-  FWL_Error AddDIBitmap(CFX_DIBitmap* pDIB, CFWL_ListItem* pItem);
-  CFWL_ListItem* AddString(const CFX_WideStringC& wsAdd, bool bSelect = false);
-  bool DeleteString(CFWL_ListItem* pItem);
-  void DeleteAll();
-  int32_t CountSelItems();
-  CFWL_ListItem* GetSelItem(int32_t nIndexSel);
-  int32_t GetSelIndex(int32_t nIndex);
-  void SetSelItem(CFWL_ListItem* pItem, bool bSelect = true);
-  void GetItemText(CFWL_ListItem* pItem, CFX_WideString& wsText);
-  void GetScrollPos(FX_FLOAT& fPos, bool bVert = true);
-  FWL_Error SetItemHeight(FX_FLOAT fItemHeight);
-  CFWL_ListItem* GetFocusItem();
-  FWL_Error SetFocusItem(CFWL_ListItem* pItem);
-  int32_t CountItems();
-  CFWL_ListItem* GetItem(int32_t nIndex);
-  FWL_Error SetItemString(CFWL_ListItem* pItem, const CFX_WideStringC& wsText);
-  FWL_Error GetItemString(CFWL_ListItem* pItem, CFX_WideString& wsText);
-  FWL_Error SetItemData(CFWL_ListItem* pItem, void* pData);
-  void* GetItemData(CFWL_ListItem* pItem);
-  CFWL_ListItem* GetItemAtPoint(FX_FLOAT fx, FX_FLOAT fy);
-  uint32_t GetItemStates(CFWL_ListItem* pItem);
-
   // IFWL_DataProvider:
   FWL_Error GetCaption(IFWL_Widget* pWidget,
                        CFX_WideString& wsCaption) override;
@@ -87,10 +65,26 @@
                          CFWL_ListItem* pItem,
                          uint32_t dwCheckState) override;
 
+  CFWL_ListItem* AddString(const CFX_WideStringC& wsAdd, bool bSelect = false);
+  bool DeleteString(CFWL_ListItem* pItem);
+  void DeleteAll();
+
+  int32_t CountSelItems();
+
+  void SetSelItem(CFWL_ListItem* pItem, bool bSelect = true);
+  CFWL_ListItem* GetSelItem(int32_t nIndexSel);
+  int32_t GetSelIndex(int32_t nIndex);
+
+  void GetScrollPos(FX_FLOAT& fPos, bool bVert = true);
+
+  CFWL_ListItem* GetItem(int32_t nIndex);
+  void GetItemText(CFWL_ListItem* pItem, CFX_WideString& wsText);
+  uint32_t GetItemStates(CFWL_ListItem* pItem);
+
  private:
+  int32_t CountItems();
+
   std::vector<std::unique_ptr<CFWL_ListItem>> m_ItemArray;
-  CFX_WideString m_wsData;
-  FX_FLOAT m_fItemHeight;
 };
 
 #endif  // XFA_FWL_CORE_CFWL_LISTBOX_H_
diff --git a/xfa/fwl/core/cfwl_widget.cpp b/xfa/fwl/core/cfwl_widget.cpp
index 1dbe445..5ea5aeb 100644
--- a/xfa/fwl/core/cfwl_widget.cpp
+++ b/xfa/fwl/core/cfwl_widget.cpp
@@ -43,21 +43,11 @@
     m_pIface->GetWidgetRect(rect, bAutoSize);
 }
 
-void CFWL_Widget::GetGlobalRect(CFX_RectF& rect) {
-  if (m_pIface)
-    m_pIface->GetGlobalRect(rect);
-}
-
 void CFWL_Widget::SetWidgetRect(const CFX_RectF& rect) {
   if (m_pIface)
     m_pIface->SetWidgetRect(rect);
 }
 
-void CFWL_Widget::GetClientRect(CFX_RectF& rect) {
-  if (m_pIface)
-    m_pIface->GetClientRect(rect);
-}
-
 void CFWL_Widget::ModifyStyles(uint32_t dwStylesAdded,
                                uint32_t dwStylesRemoved) {
   if (m_pIface)
diff --git a/xfa/fwl/core/cfwl_widget.h b/xfa/fwl/core/cfwl_widget.h
index d41de26..a4a0e94 100644
--- a/xfa/fwl/core/cfwl_widget.h
+++ b/xfa/fwl/core/cfwl_widget.h
@@ -28,8 +28,6 @@
 
   void GetWidgetRect(CFX_RectF& rect, bool bAutoSize = false);
   void SetWidgetRect(const CFX_RectF& rect);
-  void GetGlobalRect(CFX_RectF& rect);
-  void GetClientRect(CFX_RectF& rtClient);
 
   void ModifyStyles(uint32_t dwStylesAdded, uint32_t dwStylesRemoved);
   uint32_t GetStylesEx();
diff --git a/xfa/fwl/core/ifwl_widget.cpp b/xfa/fwl/core/ifwl_widget.cpp
index 1399799..0768f38 100644
--- a/xfa/fwl/core/ifwl_widget.cpp
+++ b/xfa/fwl/core/ifwl_widget.cpp
@@ -75,19 +75,6 @@
   }
 }
 
-void IFWL_Widget::GetGlobalRect(CFX_RectF& rect) {
-  IFWL_Widget* pForm = m_pWidgetMgr->GetSystemFormWidget(this);
-  if (!pForm)
-    return;
-
-  rect.Set(0, 0, m_pProperties->m_rtWidget.width,
-           m_pProperties->m_rtWidget.height);
-  if (pForm == this)
-    return;
-
-  TransformTo(pForm, rect.left, rect.top);
-}
-
 void IFWL_Widget::SetWidgetRect(const CFX_RectF& rect) {
   CFX_RectF rtOld = m_pProperties->m_rtWidget;
   m_pProperties->m_rtWidget = rect;
diff --git a/xfa/fwl/core/ifwl_widget.h b/xfa/fwl/core/ifwl_widget.h
index 2792951..d1284b1 100644
--- a/xfa/fwl/core/ifwl_widget.h
+++ b/xfa/fwl/core/ifwl_widget.h
@@ -88,7 +88,6 @@
                     const CFX_Matrix* pMatrix = nullptr) override;
 
   void SetWidgetRect(const CFX_RectF& rect);
-  void GetGlobalRect(CFX_RectF& rect);
 
   void SetParent(IFWL_Widget* pParent);
 
