| Index: xfa/fwl/core/cfwl_combobox.cpp
|
| diff --git a/xfa/fwl/core/cfwl_combobox.cpp b/xfa/fwl/core/cfwl_combobox.cpp
|
| index c8486c39c4ee366ac9f5a68796b954da476a883d..70f863504db7696681e34dedf2af93690a98ac18 100644
|
| --- a/xfa/fwl/core/cfwl_combobox.cpp
|
| +++ b/xfa/fwl/core/cfwl_combobox.cpp
|
| @@ -124,7 +124,7 @@ void CFWL_ComboBox::ModifyStylesEx(uint32_t dwStylesExAdded,
|
| m_pEdit->SetOuter(this);
|
| m_pEdit->SetParent(this);
|
| } else if (bRemoveDropDown && m_pEdit) {
|
| - m_pEdit->SetStates(FWL_WGTSTATE_Invisible, true);
|
| + m_pEdit->SetStates(FWL_WGTSTATE_Invisible);
|
| }
|
| CFWL_Widget::ModifyStylesEx(dwStylesExAdded, dwStylesExRemoved);
|
| }
|
| @@ -276,12 +276,20 @@ void CFWL_ComboBox::SetCurSel(int32_t iSel) {
|
| m_iCurSel = bClearSel ? -1 : iSel;
|
| }
|
|
|
| -void CFWL_ComboBox::SetStates(uint32_t dwStates, bool bSet) {
|
| +void CFWL_ComboBox::SetStates(uint32_t dwStates) {
|
| if (IsDropDownStyle() && m_pEdit)
|
| - m_pEdit->SetStates(dwStates, bSet);
|
| + m_pEdit->SetStates(dwStates);
|
| if (m_pListBox)
|
| - m_pListBox->SetStates(dwStates, bSet);
|
| - CFWL_Widget::SetStates(dwStates, bSet);
|
| + m_pListBox->SetStates(dwStates);
|
| + CFWL_Widget::SetStates(dwStates);
|
| +}
|
| +
|
| +void CFWL_ComboBox::RemoveStates(uint32_t dwStates) {
|
| + if (IsDropDownStyle() && m_pEdit)
|
| + m_pEdit->RemoveStates(dwStates);
|
| + if (m_pListBox)
|
| + m_pListBox->RemoveStates(dwStates);
|
| + CFWL_Widget::RemoveStates(dwStates);
|
| }
|
|
|
| void CFWL_ComboBox::SetEditText(const CFX_WideString& wsText) {
|
| @@ -319,7 +327,7 @@ void CFWL_ComboBox::GetBBox(CFX_RectF& rect) const {
|
| return;
|
|
|
| CFX_RectF rtList;
|
| - m_pListBox->GetWidgetRect(rtList);
|
| + m_pListBox->GetWidgetRect(rtList, false);
|
| rtList.Offset(rect.left, rect.top);
|
| rect.Union(rtList);
|
| }
|
| @@ -635,14 +643,16 @@ void CFWL_ComboBox::DisForm_ShowDropList(bool bActivate) {
|
| SetFocus(true);
|
| }
|
|
|
| - m_pListBox->SetStates(FWL_WGTSTATE_Invisible, !bActivate);
|
| if (bActivate) {
|
| + m_pListBox->RemoveStates(FWL_WGTSTATE_Invisible);
|
| CFWL_Event postEvent(CFWL_Event::Type::PostDropDown, this);
|
| DispatchEvent(&postEvent);
|
| + } else {
|
| + m_pListBox->SetStates(FWL_WGTSTATE_Invisible);
|
| }
|
|
|
| CFX_RectF rect;
|
| - m_pListBox->GetWidgetRect(rect);
|
| + m_pListBox->GetWidgetRect(rect, false);
|
| rect.Inflate(2, 2);
|
| Repaint(&rect);
|
| }
|
| @@ -683,7 +693,7 @@ FWL_WidgetHit CFWL_ComboBox::DisForm_HitTest(FX_FLOAT fx, FX_FLOAT fy) {
|
| if (m_rtBtn.Contains(fx, fy))
|
| return FWL_WidgetHit::Client;
|
| if (DisForm_IsDropListVisible()) {
|
| - m_pListBox->GetWidgetRect(rect);
|
| + m_pListBox->GetWidgetRect(rect, false);
|
| if (rect.Contains(fx, fy))
|
| return FWL_WidgetHit::Client;
|
| }
|
| @@ -713,7 +723,7 @@ void CFWL_ComboBox::DisForm_DrawWidget(CFX_Graphics* pGraphics,
|
|
|
| if (m_pEdit) {
|
| CFX_RectF rtEdit;
|
| - m_pEdit->GetWidgetRect(rtEdit);
|
| + m_pEdit->GetWidgetRect(rtEdit, false);
|
| CFX_Matrix mt;
|
| mt.Set(1, 0, 0, 1, rtEdit.left, rtEdit.top);
|
| mt.Concat(mtOrg);
|
| @@ -721,7 +731,7 @@ void CFWL_ComboBox::DisForm_DrawWidget(CFX_Graphics* pGraphics,
|
| }
|
| if (m_pListBox && DisForm_IsDropListVisible()) {
|
| CFX_RectF rtList;
|
| - m_pListBox->GetWidgetRect(rtList);
|
| + m_pListBox->GetWidgetRect(rtList, false);
|
| CFX_Matrix mt;
|
| mt.Set(1, 0, 0, 1, rtList.left, rtList.top);
|
| mt.Concat(mtOrg);
|
| @@ -735,7 +745,7 @@ void CFWL_ComboBox::DisForm_GetBBox(CFX_RectF& rect) const {
|
| return;
|
|
|
| CFX_RectF rtList;
|
| - m_pListBox->GetWidgetRect(rtList);
|
| + m_pListBox->GetWidgetRect(rtList, false);
|
| rtList.Offset(rect.left, rect.top);
|
| rect.Union(rtList);
|
| }
|
|
|