| Index: xfa/fwl/core/ifwl_combobox.cpp
|
| diff --git a/xfa/fwl/core/ifwl_combobox.cpp b/xfa/fwl/core/ifwl_combobox.cpp
|
| index e8534a45f21cd84001652f12c0e185b3b2bf1c8b..6299632e93526df209c96bf68fd692455f4317e3 100644
|
| --- a/xfa/fwl/core/ifwl_combobox.cpp
|
| +++ b/xfa/fwl/core/ifwl_combobox.cpp
|
| @@ -18,7 +18,6 @@
|
| #include "xfa/fwl/core/ifwl_app.h"
|
| #include "xfa/fwl/core/ifwl_comboboxproxy.h"
|
| #include "xfa/fwl/core/ifwl_comboedit.h"
|
| -#include "xfa/fwl/core/ifwl_combolist.h"
|
| #include "xfa/fwl/core/ifwl_formproxy.h"
|
| #include "xfa/fwl/core/ifwl_themeprovider.h"
|
|
|
| @@ -29,8 +28,7 @@ IFWL_ComboBox::IFWL_ComboBox(const IFWL_App* app,
|
| m_bLButtonDown(false),
|
| m_iCurSel(-1),
|
| m_iBtnState(CFWL_PartState_Normal),
|
| - m_fComboFormHandler(0),
|
| - m_bNeedShowList(false) {
|
| + m_fComboFormHandler(0) {
|
| m_rtClient.Reset();
|
| m_rtBtn.Reset();
|
| m_rtHandler.Reset();
|
| @@ -77,7 +75,7 @@ void IFWL_ComboBox::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) {
|
| rect.height = 16;
|
| }
|
| if (!m_pProperties->m_pThemeProvider) {
|
| - ReSetTheme();
|
| + ResetTheme();
|
| }
|
| FX_FLOAT* pFWidth = static_cast<FX_FLOAT*>(
|
| GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth));
|
| @@ -117,10 +115,10 @@ void IFWL_ComboBox::Update() {
|
| if (IsLocked()) {
|
| return;
|
| }
|
| - ReSetTheme();
|
| + ResetTheme();
|
| bool bDropDown = IsDropDownStyle();
|
| if (bDropDown && m_pEdit) {
|
| - ReSetEditAlignment();
|
| + ResetEditAlignment();
|
| }
|
| if (!m_pProperties->m_pThemeProvider) {
|
| m_pProperties->m_pThemeProvider = GetAvailableTheme();
|
| @@ -170,8 +168,8 @@ void IFWL_ComboBox::DrawWidget(CFX_Graphics* pGraphics,
|
| }
|
| param.m_rtPart = rtTextBk;
|
| if (m_iCurSel >= 0) {
|
| - IFWL_ListBoxDP* pData = static_cast<IFWL_ListBoxDP*>(
|
| - m_pListBox->m_pProperties->m_pDataProvider);
|
| + IFWL_ListBoxDP* pData =
|
| + static_cast<IFWL_ListBoxDP*>(m_pListBox->GetDataProvider());
|
| void* p = pData->GetItemData(m_pListBox.get(),
|
| pData->GetItem(m_pListBox.get(), m_iCurSel));
|
| if (p) {
|
| @@ -235,11 +233,11 @@ void IFWL_ComboBox::SetThemeProvider(IFWL_ThemeProvider* pThemeProvider) {
|
| m_pEdit->SetThemeProvider(pThemeProvider);
|
| }
|
|
|
| -int32_t IFWL_ComboBox::GetCurSel() {
|
| +int32_t IFWL_ComboBox::GetCurSel() const {
|
| return m_iCurSel;
|
| }
|
|
|
| -FWL_Error IFWL_ComboBox::SetCurSel(int32_t iSel) {
|
| +void IFWL_ComboBox::SetCurSel(int32_t iSel) {
|
| int32_t iCount = m_pListBox->CountItems();
|
| bool bClearSel = iSel < 0 || iSel >= iCount;
|
| bool bDropDown = IsDropDownStyle();
|
| @@ -257,7 +255,6 @@ FWL_Error IFWL_ComboBox::SetCurSel(int32_t iSel) {
|
| m_pEdit->Update();
|
| }
|
| m_iCurSel = bClearSel ? -1 : iSel;
|
| - return FWL_Error::Succeeded;
|
| }
|
|
|
| void IFWL_ComboBox::SetStates(uint32_t dwStates, bool bSet) {
|
| @@ -276,83 +273,24 @@ void IFWL_ComboBox::SetEditText(const CFX_WideString& wsText) {
|
| m_pEdit->Update();
|
| }
|
|
|
| -int32_t IFWL_ComboBox::GetEditTextLength() const {
|
| - if (!m_pEdit)
|
| - return -1;
|
| - return m_pEdit->GetTextLength();
|
| -}
|
| -
|
| -FWL_Error IFWL_ComboBox::GetEditText(CFX_WideString& wsText,
|
| - int32_t nStart,
|
| - int32_t nCount) const {
|
| +void IFWL_ComboBox::GetEditText(CFX_WideString& wsText,
|
| + int32_t nStart,
|
| + int32_t nCount) const {
|
| if (m_pEdit) {
|
| m_pEdit->GetText(wsText, nStart, nCount);
|
| - return FWL_Error::Succeeded;
|
| - }
|
| - if (m_pListBox) {
|
| - IFWL_ComboBoxDP* pData =
|
| - static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider);
|
| - CFWL_ListItem* hItem = pData->GetItem(this, m_iCurSel);
|
| - m_pListBox->GetItemText(hItem, wsText);
|
| - return FWL_Error::Succeeded;
|
| + return;
|
| }
|
| - return FWL_Error::Indefinite;
|
| -}
|
| -
|
| -FWL_Error IFWL_ComboBox::SetEditSelRange(int32_t nStart, int32_t nCount) {
|
| - if (!m_pEdit)
|
| - return FWL_Error::Indefinite;
|
| - m_pEdit->ClearSelected();
|
| - m_pEdit->AddSelRange(nStart, nCount);
|
| - return FWL_Error::Succeeded;
|
| -}
|
| -
|
| -int32_t IFWL_ComboBox::GetEditSelRange(int32_t nIndex, int32_t& nStart) {
|
| - if (!m_pEdit)
|
| - return -1;
|
| - return m_pEdit->GetSelRange(nIndex, nStart);
|
| -}
|
| -
|
| -int32_t IFWL_ComboBox::GetEditLimit() {
|
| - if (!m_pEdit)
|
| - return -1;
|
| - return m_pEdit->GetLimit();
|
| -}
|
| -
|
| -FWL_Error IFWL_ComboBox::SetEditLimit(int32_t nLimit) {
|
| - if (!m_pEdit)
|
| - return FWL_Error::Indefinite;
|
| - m_pEdit->SetLimit(nLimit);
|
| - return FWL_Error::Succeeded;
|
| -}
|
| -
|
| -bool IFWL_ComboBox::EditRedo(const IFDE_TxtEdtDoRecord* pRecord) {
|
| - return m_pEdit && m_pEdit->Redo(pRecord);
|
| -}
|
| -
|
| -bool IFWL_ComboBox::EditUndo(const IFDE_TxtEdtDoRecord* pRecord) {
|
| - return m_pEdit && m_pEdit->Undo(pRecord);
|
| -}
|
| -
|
| -IFWL_ListBox* IFWL_ComboBox::GetListBoxt() {
|
| - return m_pListBox.get();
|
| -}
|
| + if (!m_pListBox)
|
| + return;
|
|
|
| -bool IFWL_ComboBox::AfterFocusShowDropList() {
|
| - if (!m_bNeedShowList) {
|
| - return false;
|
| - }
|
| - if (m_pEdit) {
|
| - MatchEditText();
|
| - }
|
| - ShowDropList(true);
|
| - m_bNeedShowList = false;
|
| - return true;
|
| + IFWL_ComboBoxDP* pData =
|
| + static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider);
|
| + CFWL_ListItem* hItem = pData->GetItem(this, m_iCurSel);
|
| + m_pListBox->GetItemText(hItem, wsText);
|
| }
|
|
|
| -FWL_Error IFWL_ComboBox::OpenDropDownList(bool bActivate) {
|
| +void IFWL_ComboBox::OpenDropDownList(bool bActivate) {
|
| ShowDropList(bActivate);
|
| - return FWL_Error::Succeeded;
|
| }
|
|
|
| bool IFWL_ComboBox::EditCanUndo() {
|
| @@ -413,18 +351,18 @@ bool IFWL_ComboBox::EditDeSelect() {
|
| return true;
|
| }
|
|
|
| -FWL_Error IFWL_ComboBox::GetBBox(CFX_RectF& rect) {
|
| +void IFWL_ComboBox::GetBBox(CFX_RectF& rect) {
|
| if (m_pWidgetMgr->IsFormDisabled()) {
|
| - return DisForm_GetBBox(rect);
|
| + DisForm_GetBBox(rect);
|
| + return;
|
| }
|
| rect = m_pProperties->m_rtWidget;
|
| - if (m_pListBox && IsDropListShowed()) {
|
| + if (m_pListBox && IsDropListVisible()) {
|
| CFX_RectF rtList;
|
| m_pListBox->GetWidgetRect(rtList);
|
| rtList.Offset(rect.left, rect.top);
|
| rect.Union(rtList);
|
| }
|
| - return FWL_Error::Succeeded;
|
| }
|
|
|
| void IFWL_ComboBox::EditModifyStylesEx(uint32_t dwStylesExAdded,
|
| @@ -456,7 +394,7 @@ void IFWL_ComboBox::ShowDropList(bool bActivate) {
|
| if (m_pWidgetMgr->IsFormDisabled())
|
| return DisForm_ShowDropList(bActivate);
|
|
|
| - bool bDropList = IsDropListShowed();
|
| + bool bDropList = IsDropListVisible();
|
| if (bDropList == bActivate)
|
| return;
|
| if (!m_pComboBoxProxy)
|
| @@ -465,7 +403,7 @@ void IFWL_ComboBox::ShowDropList(bool bActivate) {
|
| m_pComboBoxProxy->Reset();
|
| if (bActivate) {
|
| m_pListBox->ChangeSelected(m_iCurSel);
|
| - ReSetListItemAlignment();
|
| + ResetListItemAlignment();
|
| uint32_t dwStyleAdd = m_pProperties->m_dwStyleExes &
|
| (FWL_STYLEEXT_CMB_Sort | FWL_STYLEEXT_CMB_OwnerDraw);
|
| m_pListBox->ModifyStylesEx(dwStyleAdd, 0);
|
| @@ -519,20 +457,16 @@ void IFWL_ComboBox::ShowDropList(bool bActivate) {
|
| ev.m_pSrcTarget = this;
|
| DispatchEvent(&ev);
|
| m_bLButtonDown = false;
|
| - m_pListBox->m_bNotifyOwner = true;
|
| + m_pListBox->SetNotifyOwner(true);
|
| SetFocus(true);
|
| }
|
| }
|
|
|
| -bool IFWL_ComboBox::IsDropListShowed() {
|
| +bool IFWL_ComboBox::IsDropListVisible() {
|
| return m_pComboBoxProxy &&
|
| !(m_pComboBoxProxy->GetStates() & FWL_WGTSTATE_Invisible);
|
| }
|
|
|
| -bool IFWL_ComboBox::IsDropDownStyle() const {
|
| - return m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CMB_DropDown;
|
| -}
|
| -
|
| void IFWL_ComboBox::MatchEditText() {
|
| CFX_WideString wsText;
|
| m_pEdit->GetText(wsText);
|
| @@ -540,7 +474,7 @@ void IFWL_ComboBox::MatchEditText() {
|
| if (iMatch != m_iCurSel) {
|
| m_pListBox->ChangeSelected(iMatch);
|
| if (iMatch >= 0) {
|
| - SynchrEditText(iMatch);
|
| + SyncEditText(iMatch);
|
| }
|
| } else if (iMatch >= 0) {
|
| m_pEdit->SetSelected();
|
| @@ -548,7 +482,7 @@ void IFWL_ComboBox::MatchEditText() {
|
| m_iCurSel = iMatch;
|
| }
|
|
|
| -void IFWL_ComboBox::SynchrEditText(int32_t iListItem) {
|
| +void IFWL_ComboBox::SyncEditText(int32_t iListItem) {
|
| CFX_WideString wsText;
|
| IFWL_ComboBoxDP* pData =
|
| static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider);
|
| @@ -591,7 +525,7 @@ void IFWL_ComboBox::Layout() {
|
| }
|
| }
|
|
|
| -void IFWL_ComboBox::ReSetTheme() {
|
| +void IFWL_ComboBox::ResetTheme() {
|
| IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider;
|
| if (!pTheme) {
|
| pTheme = GetAvailableTheme();
|
| @@ -603,7 +537,7 @@ void IFWL_ComboBox::ReSetTheme() {
|
| m_pEdit->SetThemeProvider(pTheme);
|
| }
|
|
|
| -void IFWL_ComboBox::ReSetEditAlignment() {
|
| +void IFWL_ComboBox::ResetEditAlignment() {
|
| if (!m_pEdit)
|
| return;
|
| uint32_t dwStylExes = m_pProperties->m_dwStyleExes;
|
| @@ -641,7 +575,7 @@ void IFWL_ComboBox::ReSetEditAlignment() {
|
| FWL_STYLEEXT_EDT_VAlignMask);
|
| }
|
|
|
| -void IFWL_ComboBox::ReSetListItemAlignment() {
|
| +void IFWL_ComboBox::ResetListItemAlignment() {
|
| if (!m_pListBox)
|
| return;
|
| uint32_t dwStylExes = m_pProperties->m_dwStyleExes;
|
| @@ -727,7 +661,7 @@ void IFWL_ComboBox::DisForm_InitComboEdit() {
|
| }
|
|
|
| void IFWL_ComboBox::DisForm_ShowDropList(bool bActivate) {
|
| - bool bDropList = DisForm_IsDropListShowed();
|
| + bool bDropList = DisForm_IsDropListVisible();
|
| if (bDropList == bActivate) {
|
| return;
|
| }
|
| @@ -740,7 +674,7 @@ void IFWL_ComboBox::DisForm_ShowDropList(bool bActivate) {
|
| if (iItems < 1) {
|
| return;
|
| }
|
| - ReSetListItemAlignment();
|
| + ResetListItemAlignment();
|
| pComboList->ChangeSelected(m_iCurSel);
|
| FX_FLOAT fItemHeight = pComboList->CalcItemHeight();
|
| FX_FLOAT fBorder = GetBorderSize();
|
| @@ -772,10 +706,6 @@ void IFWL_ComboBox::DisForm_ShowDropList(bool bActivate) {
|
| Repaint(&rect);
|
| }
|
|
|
| -bool IFWL_ComboBox::DisForm_IsDropListShowed() {
|
| - return !(m_pListBox->GetStates() & FWL_WGTSTATE_Invisible);
|
| -}
|
| -
|
| void IFWL_ComboBox::DisForm_ModifyStylesEx(uint32_t dwStylesExAdded,
|
| uint32_t dwStylesExRemoved) {
|
| if (!m_pEdit)
|
| @@ -798,9 +728,9 @@ void IFWL_ComboBox::DisForm_Update() {
|
| return;
|
| }
|
| if (m_pEdit) {
|
| - ReSetEditAlignment();
|
| + ResetEditAlignment();
|
| }
|
| - ReSetTheme();
|
| + ResetTheme();
|
| Layout();
|
| }
|
|
|
| @@ -812,7 +742,7 @@ FWL_WidgetHit IFWL_ComboBox::DisForm_HitTest(FX_FLOAT fx, FX_FLOAT fy) {
|
| return FWL_WidgetHit::Edit;
|
| if (m_rtBtn.Contains(fx, fy))
|
| return FWL_WidgetHit::Client;
|
| - if (DisForm_IsDropListShowed()) {
|
| + if (DisForm_IsDropListVisible()) {
|
| m_pListBox->GetWidgetRect(rect);
|
| if (rect.Contains(fx, fy))
|
| return FWL_WidgetHit::Client;
|
| @@ -828,7 +758,7 @@ void IFWL_ComboBox::DisForm_DrawWidget(CFX_Graphics* pGraphics,
|
| if (pMatrix) {
|
| mtOrg = *pMatrix;
|
| }
|
| - bool bListShowed = m_pListBox && DisForm_IsDropListShowed();
|
| + bool bListShowed = m_pListBox && DisForm_IsDropListVisible();
|
| pGraphics->SaveGraphState();
|
| pGraphics->ConcatMatrix(&mtOrg);
|
| if (!m_rtBtn.IsEmpty(0.1f)) {
|
| @@ -859,15 +789,14 @@ void IFWL_ComboBox::DisForm_DrawWidget(CFX_Graphics* pGraphics,
|
| }
|
| }
|
|
|
| -FWL_Error IFWL_ComboBox::DisForm_GetBBox(CFX_RectF& rect) {
|
| +void IFWL_ComboBox::DisForm_GetBBox(CFX_RectF& rect) {
|
| rect = m_pProperties->m_rtWidget;
|
| - if (m_pListBox && DisForm_IsDropListShowed()) {
|
| + if (m_pListBox && DisForm_IsDropListVisible()) {
|
| CFX_RectF rtList;
|
| m_pListBox->GetWidgetRect(rtList);
|
| rtList.Offset(rect.left, rect.top);
|
| rect.Union(rtList);
|
| }
|
| - return FWL_Error::Succeeded;
|
| }
|
|
|
| void IFWL_ComboBox::DisForm_Layout() {
|
| @@ -1062,7 +991,7 @@ void IFWL_ComboBox::OnMouseMove(CFWL_MsgMouse* pMsg) {
|
| }
|
|
|
| void IFWL_ComboBox::OnMouseLeave(CFWL_MsgMouse* pMsg) {
|
| - if (!IsDropListShowed() &&
|
| + if (!IsDropListVisible() &&
|
| !((m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled) ==
|
| FWL_WGTSTATE_Disabled)) {
|
| m_iBtnState = CFWL_PartState_Normal;
|
| @@ -1117,7 +1046,7 @@ void IFWL_ComboBox::DoSubCtrlKey(CFWL_MsgKey* pMsg) {
|
| }
|
| m_iCurSel = iCurSel;
|
| if (bDropDown && m_pEdit)
|
| - SynchrEditText(m_iCurSel);
|
| + SyncEditText(m_iCurSel);
|
| else
|
| Repaint(&m_rtClient);
|
| return;
|
| @@ -1164,7 +1093,7 @@ void IFWL_ComboBox::DisForm_OnProcessMessage(CFWL_Message* pMessage) {
|
| CFWL_MsgKey* pKey = static_cast<CFWL_MsgKey*>(pMessage);
|
| if (pKey->m_dwCmd == FWL_KeyCommand::KeyUp)
|
| break;
|
| - if (DisForm_IsDropListShowed() &&
|
| + if (DisForm_IsDropListVisible() &&
|
| pKey->m_dwCmd == FWL_KeyCommand::KeyDown) {
|
| bool bListKey = pKey->m_dwKeyCode == FWL_VKEY_Up ||
|
| pKey->m_dwKeyCode == FWL_VKEY_Down ||
|
| @@ -1186,12 +1115,12 @@ void IFWL_ComboBox::DisForm_OnProcessMessage(CFWL_Message* pMessage) {
|
| }
|
|
|
| void IFWL_ComboBox::DisForm_OnLButtonDown(CFWL_MsgMouse* pMsg) {
|
| - bool bDropDown = DisForm_IsDropListShowed();
|
| + bool bDropDown = DisForm_IsDropListVisible();
|
| CFX_RectF& rtBtn = bDropDown ? m_rtBtn : m_rtClient;
|
| if (!rtBtn.Contains(pMsg->m_fx, pMsg->m_fy))
|
| return;
|
|
|
| - if (DisForm_IsDropListShowed()) {
|
| + if (DisForm_IsDropListVisible()) {
|
| DisForm_ShowDropList(false);
|
| return;
|
| }
|
| @@ -1253,7 +1182,7 @@ void IFWL_ComboBox::DisForm_OnKey(CFWL_MsgKey* pMsg) {
|
| iCurSel++;
|
| }
|
| m_iCurSel = iCurSel;
|
| - SynchrEditText(m_iCurSel);
|
| + SyncEditText(m_iCurSel);
|
| return;
|
| }
|
| if (m_pEdit)
|
|
|