Index: xfa/fwl/core/cfwl_listbox.cpp |
diff --git a/xfa/fwl/core/cfwl_listbox.cpp b/xfa/fwl/core/cfwl_listbox.cpp |
index 447058874b3e84d47db1810bb109877f9730c4cc..edcca29b0db89009e960b6a547d72fe5b7a15a50 100644 |
--- a/xfa/fwl/core/cfwl_listbox.cpp |
+++ b/xfa/fwl/core/cfwl_listbox.cpp |
@@ -90,7 +90,7 @@ void CFWL_ListBox::Update() { |
m_dwTTOStyles |= FDE_TTOSTYLE_SingleLine; |
m_fScorllBarWidth = GetScrollWidth(); |
- CalcSize(); |
+ CalcSize(false); |
} |
FWL_WidgetHit CFWL_ListBox::HitTest(FX_FLOAT fx, FX_FLOAT fy) { |
@@ -622,7 +622,7 @@ CFX_SizeF CFWL_ListBox::CalcSize(bool bAutoSize) { |
CFX_SizeF szRange; |
if (bShowVertScr) { |
if (!m_pVertScrollBar) |
- InitScrollBar(); |
+ InitVerticalScrollBar(); |
CFX_RectF rtScrollBar; |
rtScrollBar.Set(m_rtClient.right() - m_fScorllBarWidth, m_rtClient.top, |
@@ -655,7 +655,7 @@ CFX_SizeF CFWL_ListBox::CalcSize(bool bAutoSize) { |
} |
if (bShowHorzScr) { |
if (!m_pHorzScrollBar) |
- InitScrollBar(false); |
+ InitHorizontalScrollBar(); |
CFX_RectF rtScrollBar; |
rtScrollBar.Set(m_rtClient.left, m_rtClient.bottom() - m_fScorllBarWidth, |
@@ -718,7 +718,7 @@ FX_FLOAT CFWL_ListBox::GetMaxTextWidth() { |
continue; |
CFX_WideString wsText = GetItemText(this, pItem); |
- CFX_SizeF sz = CalcTextSize(wsText, m_pProperties->m_pThemeProvider); |
+ CFX_SizeF sz = CalcTextSize(wsText, m_pProperties->m_pThemeProvider, false); |
fRet = std::max(fRet, sz.x); |
} |
return fRet; |
@@ -740,20 +740,30 @@ FX_FLOAT CFWL_ListBox::CalcItemHeight() { |
return *pfFont + 2 * kItemTextMargin; |
} |
-void CFWL_ListBox::InitScrollBar(bool bVert) { |
- if ((bVert && m_pVertScrollBar) || (!bVert && m_pHorzScrollBar)) |
+void CFWL_ListBox::InitVerticalScrollBar() { |
+ if (m_pVertScrollBar) |
return; |
auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>(); |
- prop->m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz; |
+ prop->m_dwStyleExes = FWL_STYLEEXT_SCB_Vert; |
prop->m_dwStates = FWL_WGTSTATE_Invisible; |
prop->m_pParent = this; |
prop->m_pThemeProvider = m_pScrollBarTP; |
- CFWL_ScrollBar* sb = new CFWL_ScrollBar(m_pOwnerApp, std::move(prop), this); |
- if (bVert) |
- m_pVertScrollBar.reset(sb); |
- else |
- m_pHorzScrollBar.reset(sb); |
+ m_pVertScrollBar = |
+ pdfium::MakeUnique<CFWL_ScrollBar>(m_pOwnerApp, std::move(prop), this); |
+} |
+ |
+void CFWL_ListBox::InitHorizontalScrollBar() { |
+ if (m_pHorzScrollBar) |
+ return; |
+ |
+ auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>(); |
+ prop->m_dwStyleExes = FWL_STYLEEXT_SCB_Horz; |
+ prop->m_dwStates = FWL_WGTSTATE_Invisible; |
+ prop->m_pParent = this; |
+ prop->m_pThemeProvider = m_pScrollBarTP; |
+ m_pHorzScrollBar = |
+ pdfium::MakeUnique<CFWL_ScrollBar>(m_pOwnerApp, std::move(prop), this); |
} |
bool CFWL_ListBox::IsShowScrollBar(bool bVert) { |
@@ -1094,12 +1104,11 @@ void CFWL_ListBox::SetItemCheckState(CFWL_Widget* pWidget, |
static_cast<CFWL_ListItem*>(pItem)->m_dwCheckState = dwCheckState; |
} |
-CFWL_ListItem* CFWL_ListBox::AddString(const CFX_WideStringC& wsAdd, |
- bool bSelect) { |
+CFWL_ListItem* CFWL_ListBox::AddString(const CFX_WideStringC& wsAdd) { |
auto pItem = pdfium::MakeUnique<CFWL_ListItem>(); |
pItem->m_dwStates = 0; |
pItem->m_wsText = wsAdd; |
- pItem->m_dwStates = bSelect ? FWL_ITEMSTATE_LTB_Selected : 0; |
+ pItem->m_dwStates = 0; |
m_ItemArray.push_back(std::move(pItem)); |
return m_ItemArray.back().get(); |
} |