| Index: xfa/fwl/cfwl_listbox.cpp
|
| diff --git a/xfa/fwl/cfwl_listbox.cpp b/xfa/fwl/cfwl_listbox.cpp
|
| index e3aebcc2f2590d90ab7f368af92689cbd298ab26..ca000f33d0689461be25565279a33c2947b6f26f 100644
|
| --- a/xfa/fwl/cfwl_listbox.cpp
|
| +++ b/xfa/fwl/cfwl_listbox.cpp
|
| @@ -136,7 +136,7 @@ int32_t CFWL_ListBox::CountSelItems() {
|
| CFWL_ListItem* pItem = GetItem(this, i);
|
| if (!pItem)
|
| continue;
|
| - if (pItem->GetStyles() & FWL_ITEMSTATE_LTB_Selected)
|
| + if (pItem->GetStates() & FWL_ITEMSTATE_LTB_Selected)
|
| iRet++;
|
| }
|
| return iRet;
|
| @@ -156,7 +156,7 @@ int32_t CFWL_ListBox::GetSelIndex(int32_t nIndex) {
|
| CFWL_ListItem* pItem = GetItem(this, i);
|
| if (!pItem)
|
| return -1;
|
| - if (pItem->GetStyles() & FWL_ITEMSTATE_LTB_Selected) {
|
| + if (pItem->GetStates() & FWL_ITEMSTATE_LTB_Selected) {
|
| if (index == nIndex)
|
| return i;
|
| index++;
|
| @@ -242,10 +242,10 @@ void CFWL_ListBox::SetSelectionDirect(CFWL_ListItem* pItem, bool bSelect) {
|
| if (!pItem)
|
| return;
|
|
|
| - uint32_t dwOldStyle = pItem->GetStyles();
|
| + uint32_t dwOldStyle = pItem->GetStates();
|
| bSelect ? dwOldStyle |= FWL_ITEMSTATE_LTB_Selected
|
| : dwOldStyle &= ~FWL_ITEMSTATE_LTB_Selected;
|
| - pItem->SetStyles(dwOldStyle);
|
| + pItem->SetStates(dwOldStyle);
|
| }
|
|
|
| bool CFWL_ListBox::IsMultiSelection() const {
|
| @@ -253,7 +253,7 @@ bool CFWL_ListBox::IsMultiSelection() const {
|
| }
|
|
|
| bool CFWL_ListBox::IsItemSelected(CFWL_ListItem* pItem) {
|
| - return pItem && (pItem->GetStyles() & FWL_ITEMSTATE_LTB_Selected) != 0;
|
| + return pItem && (pItem->GetStates() & FWL_ITEMSTATE_LTB_Selected) != 0;
|
| }
|
|
|
| void CFWL_ListBox::ClearSelection() {
|
| @@ -263,7 +263,7 @@ void CFWL_ListBox::ClearSelection() {
|
| CFWL_ListItem* pItem = GetItem(this, i);
|
| if (!pItem)
|
| continue;
|
| - if (!(pItem->GetStyles() & FWL_ITEMSTATE_LTB_Selected))
|
| + if (!(pItem->GetStates() & FWL_ITEMSTATE_LTB_Selected))
|
| continue;
|
| SetSelectionDirect(pItem, false);
|
| if (!bMulti)
|
| @@ -290,7 +290,7 @@ CFWL_ListItem* CFWL_ListBox::GetFocusedItem() {
|
| CFWL_ListItem* pItem = GetItem(this, i);
|
| if (!pItem)
|
| return nullptr;
|
| - if (pItem->GetStyles() & FWL_ITEMSTATE_LTB_Focused)
|
| + if (pItem->GetStates() & FWL_ITEMSTATE_LTB_Focused)
|
| return pItem;
|
| }
|
| return nullptr;
|
| @@ -302,14 +302,14 @@ void CFWL_ListBox::SetFocusItem(CFWL_ListItem* pItem) {
|
| return;
|
|
|
| if (hFocus) {
|
| - uint32_t dwStyle = hFocus->GetStyles();
|
| + uint32_t dwStyle = hFocus->GetStates();
|
| dwStyle &= ~FWL_ITEMSTATE_LTB_Focused;
|
| - hFocus->SetStyles(dwStyle);
|
| + hFocus->SetStates(dwStyle);
|
| }
|
| if (pItem) {
|
| - uint32_t dwStyle = pItem->GetStyles();
|
| + uint32_t dwStyle = pItem->GetStates();
|
| dwStyle |= FWL_ITEMSTATE_LTB_Focused;
|
| - pItem->SetStyles(dwStyle);
|
| + pItem->SetStates(dwStyle);
|
| }
|
| }
|
|
|
| @@ -337,20 +337,6 @@ CFWL_ListItem* CFWL_ListBox::GetItemAtPoint(FX_FLOAT fx, FX_FLOAT fy) {
|
| return nullptr;
|
| }
|
|
|
| -bool CFWL_ListBox::GetItemChecked(CFWL_ListItem* pItem) {
|
| - if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check))
|
| - return false;
|
| - return !!(pItem->GetCheckState() & FWL_ITEMSTATE_LTB_Checked);
|
| -}
|
| -
|
| -bool CFWL_ListBox::SetItemChecked(CFWL_ListItem* pItem, bool bChecked) {
|
| - if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check))
|
| - return false;
|
| -
|
| - pItem->SetCheckState(bChecked ? FWL_ITEMSTATE_LTB_Checked : 0);
|
| - return true;
|
| -}
|
| -
|
| bool CFWL_ListBox::ScrollToVisible(CFWL_ListItem* pItem) {
|
| if (!m_pVertScrollBar)
|
| return false;
|
| @@ -415,8 +401,6 @@ void CFWL_ListBox::DrawItems(CFX_Graphics* pGraphics,
|
| if (m_pVertScrollBar)
|
| rtView.width -= m_fScorllBarWidth;
|
|
|
| - bool bMultiCol =
|
| - !!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiColumn);
|
| int32_t iCount = CountItems(this);
|
| for (int32_t i = 0; i < iCount; i++) {
|
| CFWL_ListItem* pItem = GetItem(this, i);
|
| @@ -429,11 +413,7 @@ void CFWL_ListBox::DrawItems(CFX_Graphics* pGraphics,
|
| continue;
|
| if (rtItem.top >= m_rtConent.bottom())
|
| break;
|
| - if (bMultiCol && rtItem.left > m_rtConent.right())
|
| - break;
|
| -
|
| - if (!(GetStylesEx() & FWL_STYLEEXT_LTB_OwnerDraw))
|
| - DrawItem(pGraphics, pTheme, pItem, i, rtItem, pMatrix);
|
| + DrawItem(pGraphics, pTheme, pItem, i, rtItem, pMatrix);
|
| }
|
| }
|
|
|
| @@ -443,7 +423,7 @@ void CFWL_ListBox::DrawItem(CFX_Graphics* pGraphics,
|
| int32_t Index,
|
| const CFX_RectF& rtItem,
|
| const CFX_Matrix* pMatrix) {
|
| - uint32_t dwItemStyles = pItem ? pItem->GetStyles() : 0;
|
| + uint32_t dwItemStyles = pItem ? pItem->GetStates() : 0;
|
| uint32_t dwPartStates = CFWL_PartState_Normal;
|
| if (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled)
|
| dwPartStates = CFWL_PartState_Disabled;
|
| @@ -473,45 +453,6 @@ void CFWL_ListBox::DrawItem(CFX_Graphics* pGraphics,
|
| }
|
| pTheme->DrawBackground(&bg_param);
|
|
|
| - bool bHasIcon = !!(GetStylesEx() & FWL_STYLEEXT_LTB_Icon);
|
| - if (bHasIcon) {
|
| - CFX_RectF rtDIB;
|
| - CFX_DIBitmap* pDib = pItem->GetIcon();
|
| - rtDIB.Set(rtItem.left, rtItem.top, rtItem.height, rtItem.height);
|
| - if (pDib) {
|
| - CFWL_ThemeBackground param;
|
| - param.m_pWidget = this;
|
| - param.m_iPart = CFWL_Part::Icon;
|
| - param.m_pGraphics = pGraphics;
|
| - param.m_matrix.Concat(*pMatrix);
|
| - param.m_rtPart = rtDIB;
|
| - param.m_bMaximize = true;
|
| - param.m_pImage = pDib;
|
| - pTheme->DrawBackground(¶m);
|
| - }
|
| - }
|
| -
|
| - bool bHasCheck = !!(GetStylesEx() & FWL_STYLEEXT_LTB_Check);
|
| - if (bHasCheck) {
|
| - CFX_RectF rtCheck;
|
| - rtCheck.Set(rtItem.left, rtItem.top, rtItem.height, rtItem.height);
|
| - rtCheck.Deflate(2, 2, 2, 2);
|
| - pItem->SetCheckRect(rtCheck);
|
| -
|
| - CFWL_ThemeBackground param;
|
| - param.m_pWidget = this;
|
| - param.m_iPart = CFWL_Part::Check;
|
| - param.m_pGraphics = pGraphics;
|
| - if (GetItemChecked(pItem))
|
| - param.m_dwStates = CFWL_PartState_Checked;
|
| - else
|
| - param.m_dwStates = CFWL_PartState_Normal;
|
| - param.m_matrix.Concat(*pMatrix);
|
| - param.m_rtPart = rtCheck;
|
| - param.m_bMaximize = true;
|
| - pTheme->DrawBackground(¶m);
|
| - }
|
| -
|
| if (!pItem)
|
| return;
|
|
|
| @@ -521,8 +462,6 @@ void CFWL_ListBox::DrawItem(CFX_Graphics* pGraphics,
|
|
|
| CFX_RectF rtText(rtItem);
|
| rtText.Deflate(kItemTextMargin, kItemTextMargin);
|
| - if (bHasIcon || bHasCheck)
|
| - rtText.Deflate(rtItem.height, 0, 0, 0);
|
|
|
| CFWL_ThemeText textParam;
|
| textParam.m_pWidget = this;
|
| @@ -562,10 +501,7 @@ CFX_SizeF CFWL_ListBox::CalcSize(bool bAutoSize) {
|
| m_rtClient.width - rtUIMargin.left - rtUIMargin.width;
|
| fWidth = std::max(fWidth, fActualWidth);
|
| }
|
| -
|
| m_fItemHeight = CalcItemHeight();
|
| - if ((GetStylesEx() & FWL_STYLEEXT_LTB_Icon))
|
| - fWidth += m_fItemHeight;
|
|
|
| int32_t iCount = CountItems(this);
|
| CFX_SizeF fs;
|
| @@ -578,17 +514,11 @@ CFX_SizeF CFWL_ListBox::CalcSize(bool bAutoSize) {
|
|
|
| FX_FLOAT iWidth = m_rtClient.width - rtUIMargin.left - rtUIMargin.width;
|
| FX_FLOAT iHeight = m_rtClient.height;
|
| - bool bShowVertScr =
|
| - (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarAlaways) &&
|
| - (m_pProperties->m_dwStyles & FWL_WGTSTYLE_VScroll);
|
| - bool bShowHorzScr =
|
| - (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarAlaways) &&
|
| - (m_pProperties->m_dwStyles & FWL_WGTSTYLE_HScroll);
|
| - if (!bShowVertScr && m_pProperties->m_dwStyles & FWL_WGTSTYLE_VScroll &&
|
| - (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiColumn) == 0) {
|
| + bool bShowVertScr = false;
|
| + bool bShowHorzScr = false;
|
| + if (!bShowVertScr && (m_pProperties->m_dwStyles & FWL_WGTSTYLE_VScroll))
|
| bShowVertScr = (fs.y > iHeight);
|
| - }
|
| - if (!bShowHorzScr && m_pProperties->m_dwStyles & FWL_WGTSTYLE_HScroll)
|
| + if (!bShowHorzScr && (m_pProperties->m_dwStyles & FWL_WGTSTYLE_HScroll))
|
| bShowHorzScr = (fs.x > iWidth);
|
|
|
| CFX_SizeF szRange;
|
| @@ -669,9 +599,6 @@ void CFWL_ListBox::UpdateItemSize(CFWL_ListItem* pItem,
|
| FX_FLOAT fWidth,
|
| FX_FLOAT fItemHeight,
|
| bool bAutoSize) const {
|
| - if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiColumn)
|
| - return;
|
| -
|
| if (!bAutoSize && pItem) {
|
| CFX_RectF rtItem;
|
| rtItem.Set(0, size.y, fWidth, fItemHeight);
|
| @@ -859,18 +786,7 @@ void CFWL_ListBox::OnLButtonDown(CFWL_MessageMouse* pMsg) {
|
| } else {
|
| SetSelection(pItem, pItem, true);
|
| }
|
| - if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check) {
|
| - CFWL_ListItem* hSelectedItem = GetItemAtPoint(pMsg->m_fx, pMsg->m_fy);
|
| - CFX_RectF rtCheck;
|
| - if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check)
|
| - rtCheck = hSelectedItem->GetCheckRect();
|
| -
|
| - bool bChecked = GetItemChecked(pItem);
|
| - if (rtCheck.Contains(pMsg->m_fx, pMsg->m_fy)) {
|
| - SetItemChecked(pItem, !bChecked);
|
| - Update();
|
| - }
|
| - }
|
| +
|
| SetFocusItem(pItem);
|
| ScrollToVisible(pItem);
|
| SetGrab(true);
|
| @@ -1036,7 +952,7 @@ void CFWL_ListBox::DeleteString(CFWL_ListItem* pItem) {
|
| iSel = nIndex - 1;
|
| if (iSel >= 0) {
|
| if (CFWL_ListItem* item = GetItem(this, iSel))
|
| - item->SetStyles(item->GetStyles() | FWL_ITEMSTATE_LTB_Selected);
|
| + item->SetStates(item->GetStates() | FWL_ITEMSTATE_LTB_Selected);
|
| }
|
|
|
| m_ItemArray.erase(m_ItemArray.begin() + nIndex);
|
|
|