| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "xfa/src/fwl/src/basewidget/fwl_comboboximp.h" | 7 #include "xfa/src/fwl/basewidget/fwl_comboboximp.h" |
| 8 | 8 |
| 9 #include "xfa/include/fwl/core/fwl_theme.h" | 9 #include "xfa/include/fwl/core/fwl_theme.h" |
| 10 #include "xfa/src/fdp/include/fde_tto.h" | 10 #include "xfa/src/fdp/include/fde_tto.h" |
| 11 #include "xfa/src/fwl/src/basewidget/fwl_editimp.h" | 11 #include "xfa/src/fwl/basewidget/fwl_editimp.h" |
| 12 #include "xfa/src/fwl/src/basewidget/fwl_formproxyimp.h" | 12 #include "xfa/src/fwl/basewidget/fwl_formproxyimp.h" |
| 13 #include "xfa/src/fwl/src/basewidget/fwl_listboximp.h" | 13 #include "xfa/src/fwl/basewidget/fwl_listboximp.h" |
| 14 #include "xfa/src/fwl/src/basewidget/fwl_scrollbarimp.h" | 14 #include "xfa/src/fwl/basewidget/fwl_scrollbarimp.h" |
| 15 #include "xfa/src/fwl/src/core/fwl_appimp.h" | 15 #include "xfa/src/fwl/core/fwl_appimp.h" |
| 16 #include "xfa/src/fwl/src/core/fwl_formimp.h" | 16 #include "xfa/src/fwl/core/fwl_formimp.h" |
| 17 #include "xfa/src/fwl/src/core/fwl_noteimp.h" | 17 #include "xfa/src/fwl/core/fwl_noteimp.h" |
| 18 #include "xfa/src/fwl/src/core/fwl_panelimp.h" | 18 #include "xfa/src/fwl/core/fwl_panelimp.h" |
| 19 #include "xfa/src/fwl/src/core/fwl_targetimp.h" | 19 #include "xfa/src/fwl/core/fwl_targetimp.h" |
| 20 #include "xfa/src/fwl/src/core/fwl_threadimp.h" | 20 #include "xfa/src/fwl/core/fwl_threadimp.h" |
| 21 #include "xfa/src/fwl/src/core/fwl_widgetimp.h" | 21 #include "xfa/src/fwl/core/fwl_widgetimp.h" |
| 22 #include "xfa/src/fwl/src/core/fwl_widgetmgrimp.h" | 22 #include "xfa/src/fwl/core/fwl_widgetmgrimp.h" |
| 23 | 23 |
| 24 // static | 24 // static |
| 25 IFWL_ComboBox* IFWL_ComboBox::Create( | 25 IFWL_ComboBox* IFWL_ComboBox::Create( |
| 26 const CFWL_WidgetImpProperties& properties) { | 26 const CFWL_WidgetImpProperties& properties) { |
| 27 IFWL_ComboBox* pComboBox = new IFWL_ComboBox; | 27 IFWL_ComboBox* pComboBox = new IFWL_ComboBox; |
| 28 CFWL_ComboBoxImp* pComboBoxImpl = new CFWL_ComboBoxImp(properties, nullptr); | 28 CFWL_ComboBoxImp* pComboBoxImpl = new CFWL_ComboBoxImp(properties, nullptr); |
| 29 pComboBox->SetImpl(pComboBoxImpl); | 29 pComboBox->SetImpl(pComboBoxImpl); |
| 30 pComboBoxImpl->SetInterface(pComboBox); | 30 pComboBoxImpl->SetInterface(pComboBox); |
| 31 return pComboBox; | 31 return pComboBox; |
| 32 } | 32 } |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 ->EditModifyStylesEx(dwStylesExAdded, dwStylesExRemoved); | 129 ->EditModifyStylesEx(dwStylesExAdded, dwStylesExRemoved); |
| 130 } | 130 } |
| 131 | 131 |
| 132 CFWL_ComboEditImp::CFWL_ComboEditImp(const CFWL_WidgetImpProperties& properties, | 132 CFWL_ComboEditImp::CFWL_ComboEditImp(const CFWL_WidgetImpProperties& properties, |
| 133 IFWL_Widget* pOuter) | 133 IFWL_Widget* pOuter) |
| 134 : CFWL_EditImp(properties, pOuter) { | 134 : CFWL_EditImp(properties, pOuter) { |
| 135 m_pOuter = static_cast<CFWL_ComboBoxImp*>(pOuter->GetImpl()); | 135 m_pOuter = static_cast<CFWL_ComboBoxImp*>(pOuter->GetImpl()); |
| 136 } | 136 } |
| 137 | 137 |
| 138 CFWL_ComboEditImpDelegate::CFWL_ComboEditImpDelegate(CFWL_ComboEditImp* pOwner) | 138 CFWL_ComboEditImpDelegate::CFWL_ComboEditImpDelegate(CFWL_ComboEditImp* pOwner) |
| 139 : CFWL_EditImpDelegate(pOwner), m_pOwner(pOwner) { | 139 : CFWL_EditImpDelegate(pOwner), m_pOwner(pOwner) {} |
| 140 } | |
| 141 int32_t CFWL_ComboEditImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { | 140 int32_t CFWL_ComboEditImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { |
| 142 if (!pMessage) | 141 if (!pMessage) |
| 143 return 0; | 142 return 0; |
| 144 FX_DWORD dwMsgCode = pMessage->GetClassID(); | 143 FX_DWORD dwMsgCode = pMessage->GetClassID(); |
| 145 FX_BOOL backDefault = TRUE; | 144 FX_BOOL backDefault = TRUE; |
| 146 switch (dwMsgCode) { | 145 switch (dwMsgCode) { |
| 147 case FWL_MSGHASH_SetFocus: | 146 case FWL_MSGHASH_SetFocus: |
| 148 case FWL_MSGHASH_KillFocus: { | 147 case FWL_MSGHASH_KillFocus: { |
| 149 if (dwMsgCode == FWL_MSGHASH_SetFocus) { | 148 if (dwMsgCode == FWL_MSGHASH_SetFocus) { |
| 150 m_pOwner->m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; | 149 m_pOwner->m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 fx += m_pProperties->m_rtWidget.left, fy += m_pProperties->m_rtWidget.top; | 271 fx += m_pProperties->m_rtWidget.left, fy += m_pProperties->m_rtWidget.top; |
| 273 IFWL_Widget* pOwner = GetOwner(); | 272 IFWL_Widget* pOwner = GetOwner(); |
| 274 if (!pOwner) | 273 if (!pOwner) |
| 275 return; | 274 return; |
| 276 pOwner->TransformTo(m_pOuter, fx, fy); | 275 pOwner->TransformTo(m_pOuter, fx, fy); |
| 277 } | 276 } |
| 278 void CFWL_ComboListImp::SetFocus(FX_BOOL bSet) { | 277 void CFWL_ComboListImp::SetFocus(FX_BOOL bSet) { |
| 279 CFWL_WidgetImp::SetFocus(bSet); | 278 CFWL_WidgetImp::SetFocus(bSet); |
| 280 } | 279 } |
| 281 CFWL_ComboListImpDelegate::CFWL_ComboListImpDelegate(CFWL_ComboListImp* pOwner) | 280 CFWL_ComboListImpDelegate::CFWL_ComboListImpDelegate(CFWL_ComboListImp* pOwner) |
| 282 : CFWL_ListBoxImpDelegate(pOwner), m_pOwner(pOwner) { | 281 : CFWL_ListBoxImpDelegate(pOwner), m_pOwner(pOwner) {} |
| 283 } | |
| 284 int32_t CFWL_ComboListImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { | 282 int32_t CFWL_ComboListImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { |
| 285 if (!pMessage) | 283 if (!pMessage) |
| 286 return 0; | 284 return 0; |
| 287 FX_DWORD dwHashCode = pMessage->GetClassID(); | 285 FX_DWORD dwHashCode = pMessage->GetClassID(); |
| 288 FX_BOOL backDefault = TRUE; | 286 FX_BOOL backDefault = TRUE; |
| 289 if (dwHashCode == FWL_MSGHASH_SetFocus || | 287 if (dwHashCode == FWL_MSGHASH_SetFocus || |
| 290 dwHashCode == FWL_MSGHASH_KillFocus) { | 288 dwHashCode == FWL_MSGHASH_KillFocus) { |
| 291 OnDropListFocusChanged(pMessage, dwHashCode == FWL_MSGHASH_SetFocus); | 289 OnDropListFocusChanged(pMessage, dwHashCode == FWL_MSGHASH_SetFocus); |
| 292 } else if (dwHashCode == FWL_MSGHASH_Mouse) { | 290 } else if (dwHashCode == FWL_MSGHASH_Mouse) { |
| 293 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); | 291 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 470 m_pForm(NULL), | 468 m_pForm(NULL), |
| 471 m_bLButtonDown(FALSE), | 469 m_bLButtonDown(FALSE), |
| 472 m_iCurSel(-1), | 470 m_iCurSel(-1), |
| 473 m_iBtnState(FWL_PARTSTATE_CMB_Normal), | 471 m_iBtnState(FWL_PARTSTATE_CMB_Normal), |
| 474 m_fComboFormHandler(0), | 472 m_fComboFormHandler(0), |
| 475 m_bNeedShowList(FALSE) { | 473 m_bNeedShowList(FALSE) { |
| 476 m_rtClient.Reset(); | 474 m_rtClient.Reset(); |
| 477 m_rtBtn.Reset(); | 475 m_rtBtn.Reset(); |
| 478 m_rtHandler.Reset(); | 476 m_rtHandler.Reset(); |
| 479 } | 477 } |
| 480 CFWL_ComboBoxImp::~CFWL_ComboBoxImp() { | 478 CFWL_ComboBoxImp::~CFWL_ComboBoxImp() {} |
| 481 } | |
| 482 FWL_ERR CFWL_ComboBoxImp::GetClassName(CFX_WideString& wsClass) const { | 479 FWL_ERR CFWL_ComboBoxImp::GetClassName(CFX_WideString& wsClass) const { |
| 483 wsClass = FWL_CLASS_ComboBox; | 480 wsClass = FWL_CLASS_ComboBox; |
| 484 return FWL_ERR_Succeeded; | 481 return FWL_ERR_Succeeded; |
| 485 } | 482 } |
| 486 FX_DWORD CFWL_ComboBoxImp::GetClassID() const { | 483 FX_DWORD CFWL_ComboBoxImp::GetClassID() const { |
| 487 return FWL_CLASSHASH_ComboBox; | 484 return FWL_CLASSHASH_ComboBox; |
| 488 } | 485 } |
| 489 FWL_ERR CFWL_ComboBoxImp::Initialize() { | 486 FWL_ERR CFWL_ComboBoxImp::Initialize() { |
| 490 if (m_pWidgetMgr->IsFormDisabled()) { | 487 if (m_pWidgetMgr->IsFormDisabled()) { |
| 491 return DisForm_Initialize(); | 488 return DisForm_Initialize(); |
| (...skipping 1034 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1526 return; | 1523 return; |
| 1527 } | 1524 } |
| 1528 if (pMsg->m_pDstTarget == m_pOwner->m_pInterface) | 1525 if (pMsg->m_pDstTarget == m_pOwner->m_pInterface) |
| 1529 DoSubCtrlKey(pMsg); | 1526 DoSubCtrlKey(pMsg); |
| 1530 } | 1527 } |
| 1531 void CFWL_ComboBoxImpDelegate::DoSubCtrlKey(CFWL_MsgKey* pMsg) { | 1528 void CFWL_ComboBoxImpDelegate::DoSubCtrlKey(CFWL_MsgKey* pMsg) { |
| 1532 FX_DWORD dwKeyCode = pMsg->m_dwKeyCode; | 1529 FX_DWORD dwKeyCode = pMsg->m_dwKeyCode; |
| 1533 const bool bUp = dwKeyCode == FWL_VKEY_Up; | 1530 const bool bUp = dwKeyCode == FWL_VKEY_Up; |
| 1534 const bool bDown = dwKeyCode == FWL_VKEY_Down; | 1531 const bool bDown = dwKeyCode == FWL_VKEY_Down; |
| 1535 if (bUp || bDown) { | 1532 if (bUp || bDown) { |
| 1536 int32_t iCount = static_cast<CFWL_ComboListImp*>( | 1533 int32_t iCount = |
| 1537 m_pOwner->m_pListBox->GetImpl())->CountItems(); | 1534 static_cast<CFWL_ComboListImp*>(m_pOwner->m_pListBox->GetImpl()) |
| 1535 ->CountItems(); |
| 1538 if (iCount < 1) { | 1536 if (iCount < 1) { |
| 1539 return; | 1537 return; |
| 1540 } | 1538 } |
| 1541 FX_BOOL bMatchEqual = FALSE; | 1539 FX_BOOL bMatchEqual = FALSE; |
| 1542 int32_t iCurSel = m_pOwner->m_iCurSel; | 1540 int32_t iCurSel = m_pOwner->m_iCurSel; |
| 1543 FX_BOOL bDropDown = m_pOwner->IsDropDownStyle(); | 1541 FX_BOOL bDropDown = m_pOwner->IsDropDownStyle(); |
| 1544 if (bDropDown && m_pOwner->m_pEdit) { | 1542 if (bDropDown && m_pOwner->m_pEdit) { |
| 1545 CFX_WideString wsText; | 1543 CFX_WideString wsText; |
| 1546 m_pOwner->m_pEdit->GetText(wsText); | 1544 m_pOwner->m_pEdit->GetText(wsText); |
| 1547 iCurSel = static_cast<CFWL_ComboListImp*>(m_pOwner->m_pListBox->GetImpl()) | 1545 iCurSel = static_cast<CFWL_ComboListImp*>(m_pOwner->m_pListBox->GetImpl()) |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1724 pDelegate->OnProcessMessage(pMsg); | 1722 pDelegate->OnProcessMessage(pMsg); |
| 1725 } | 1723 } |
| 1726 } | 1724 } |
| 1727 CFWL_ComboProxyImpDelegate::CFWL_ComboProxyImpDelegate( | 1725 CFWL_ComboProxyImpDelegate::CFWL_ComboProxyImpDelegate( |
| 1728 IFWL_Form* pForm, | 1726 IFWL_Form* pForm, |
| 1729 CFWL_ComboBoxImp* pComboBox) | 1727 CFWL_ComboBoxImp* pComboBox) |
| 1730 : m_bLButtonDown(FALSE), | 1728 : m_bLButtonDown(FALSE), |
| 1731 m_bLButtonUpSelf(FALSE), | 1729 m_bLButtonUpSelf(FALSE), |
| 1732 m_fStartPos(0), | 1730 m_fStartPos(0), |
| 1733 m_pForm(pForm), | 1731 m_pForm(pForm), |
| 1734 m_pComboBox(pComboBox) { | 1732 m_pComboBox(pComboBox) {} |
| 1735 } | |
| 1736 int32_t CFWL_ComboProxyImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { | 1733 int32_t CFWL_ComboProxyImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { |
| 1737 if (!pMessage) | 1734 if (!pMessage) |
| 1738 return 0; | 1735 return 0; |
| 1739 FX_DWORD dwMsgCode = pMessage->GetClassID(); | 1736 FX_DWORD dwMsgCode = pMessage->GetClassID(); |
| 1740 if (dwMsgCode == FWL_MSGHASH_Mouse) { | 1737 if (dwMsgCode == FWL_MSGHASH_Mouse) { |
| 1741 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); | 1738 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); |
| 1742 FX_DWORD dwCmd = pMsg->m_dwCmd; | 1739 FX_DWORD dwCmd = pMsg->m_dwCmd; |
| 1743 switch (dwCmd) { | 1740 switch (dwCmd) { |
| 1744 case FWL_MSGMOUSECMD_LButtonDown: { | 1741 case FWL_MSGMOUSECMD_LButtonDown: { |
| 1745 OnLButtonDown(pMsg); | 1742 OnLButtonDown(pMsg); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1801 m_pForm->GetWidgetRect(rect); | 1798 m_pForm->GetWidgetRect(rect); |
| 1802 rect.left = rect.top = 0; | 1799 rect.left = rect.top = 0; |
| 1803 if (!rect.Contains(pMsg->m_fx, pMsg->m_fy) && | 1800 if (!rect.Contains(pMsg->m_fx, pMsg->m_fy) && |
| 1804 m_pComboBox->IsDropListShowed()) { | 1801 m_pComboBox->IsDropListShowed()) { |
| 1805 m_pComboBox->ShowDropList(FALSE); | 1802 m_pComboBox->ShowDropList(FALSE); |
| 1806 } | 1803 } |
| 1807 } else { | 1804 } else { |
| 1808 m_bLButtonUpSelf = TRUE; | 1805 m_bLButtonUpSelf = TRUE; |
| 1809 } | 1806 } |
| 1810 } | 1807 } |
| 1811 void CFWL_ComboProxyImpDelegate::OnMouseMove(CFWL_MsgMouse* pMsg) { | 1808 void CFWL_ComboProxyImpDelegate::OnMouseMove(CFWL_MsgMouse* pMsg) {} |
| 1812 } | |
| 1813 void CFWL_ComboProxyImpDelegate::OnDeactive(CFWL_MsgDeactivate* pMsg) { | 1809 void CFWL_ComboProxyImpDelegate::OnDeactive(CFWL_MsgDeactivate* pMsg) { |
| 1814 m_pComboBox->ShowDropList(FALSE); | 1810 m_pComboBox->ShowDropList(FALSE); |
| 1815 } | 1811 } |
| 1816 void CFWL_ComboProxyImpDelegate::OnFocusChanged(CFWL_MsgKillFocus* pMsg, | 1812 void CFWL_ComboProxyImpDelegate::OnFocusChanged(CFWL_MsgKillFocus* pMsg, |
| 1817 FX_BOOL bSet) { | 1813 FX_BOOL bSet) { |
| 1818 if (!bSet) { | 1814 if (!bSet) { |
| 1819 if (pMsg->m_pSetFocus == NULL) { | 1815 if (pMsg->m_pSetFocus == NULL) { |
| 1820 m_pComboBox->ShowDropList(FALSE); | 1816 m_pComboBox->ShowDropList(FALSE); |
| 1821 } | 1817 } |
| 1822 } | 1818 } |
| 1823 } | 1819 } |
| OLD | NEW |