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/fwl/core/ifwl_combobox.h" | 7 #include "xfa/fwl/core/ifwl_combobox.h" |
8 | 8 |
9 #include "third_party/base/ptr_util.h" | 9 #include "third_party/base/ptr_util.h" |
10 #include "xfa/fde/cfde_txtedtengine.h" | 10 #include "xfa/fde/cfde_txtedtengine.h" |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 | 284 |
285 FWL_Error IFWL_ComboBox::GetEditText(CFX_WideString& wsText, | 285 FWL_Error IFWL_ComboBox::GetEditText(CFX_WideString& wsText, |
286 int32_t nStart, | 286 int32_t nStart, |
287 int32_t nCount) const { | 287 int32_t nCount) const { |
288 if (m_pEdit) { | 288 if (m_pEdit) { |
289 return m_pEdit->GetText(wsText, nStart, nCount); | 289 return m_pEdit->GetText(wsText, nStart, nCount); |
290 } else if (m_pListBox) { | 290 } else if (m_pListBox) { |
291 IFWL_ComboBoxDP* pData = | 291 IFWL_ComboBoxDP* pData = |
292 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); | 292 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); |
293 CFWL_ListItem* hItem = pData->GetItem(this, m_iCurSel); | 293 CFWL_ListItem* hItem = pData->GetItem(this, m_iCurSel); |
294 return m_pListBox->GetItemText(hItem, wsText); | 294 m_pListBox->GetItemText(hItem, wsText); |
| 295 return FWL_Error::Succeeded; |
295 } | 296 } |
296 return FWL_Error::Indefinite; | 297 return FWL_Error::Indefinite; |
297 } | 298 } |
298 | 299 |
299 FWL_Error IFWL_ComboBox::SetEditSelRange(int32_t nStart, int32_t nCount) { | 300 FWL_Error IFWL_ComboBox::SetEditSelRange(int32_t nStart, int32_t nCount) { |
300 if (!m_pEdit) | 301 if (!m_pEdit) |
301 return FWL_Error::Indefinite; | 302 return FWL_Error::Indefinite; |
302 m_pEdit->ClearSelected(); | 303 m_pEdit->ClearSelected(); |
303 m_pEdit->AddSelRange(nStart, nCount); | 304 m_pEdit->AddSelRange(nStart, nCount); |
304 return FWL_Error::Succeeded; | 305 return FWL_Error::Succeeded; |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
501 m_fComboFormHandler); | 502 m_fComboFormHandler); |
502 } | 503 } |
503 } | 504 } |
504 m_pComboBoxProxy->SetWidgetRect(m_rtProxy); | 505 m_pComboBoxProxy->SetWidgetRect(m_rtProxy); |
505 m_pComboBoxProxy->Update(); | 506 m_pComboBoxProxy->Update(); |
506 m_pListBox->SetWidgetRect(m_rtList); | 507 m_pListBox->SetWidgetRect(m_rtList); |
507 m_pListBox->Update(); | 508 m_pListBox->Update(); |
508 CFWL_EvtCmbPreDropDown ev; | 509 CFWL_EvtCmbPreDropDown ev; |
509 ev.m_pSrcTarget = this; | 510 ev.m_pSrcTarget = this; |
510 DispatchEvent(&ev); | 511 DispatchEvent(&ev); |
511 m_fItemHeight = m_pListBox->m_fItemHeight; | 512 m_fItemHeight = m_pListBox->GetItemHeight(); |
512 m_pListBox->SetFocus(true); | 513 m_pListBox->SetFocus(true); |
513 m_pComboBoxProxy->DoModal(); | 514 m_pComboBoxProxy->DoModal(); |
514 m_pListBox->SetFocus(false); | 515 m_pListBox->SetFocus(false); |
515 } else { | 516 } else { |
516 m_pComboBoxProxy->EndDoModal(); | 517 m_pComboBoxProxy->EndDoModal(); |
517 CFWL_EvtCmbCloseUp ev; | 518 CFWL_EvtCmbCloseUp ev; |
518 ev.m_pSrcTarget = this; | 519 ev.m_pSrcTarget = this; |
519 DispatchEvent(&ev); | 520 DispatchEvent(&ev); |
520 m_bLButtonDown = false; | 521 m_bLButtonDown = false; |
521 m_pListBox->m_bNotifyOwner = true; | 522 m_pListBox->m_bNotifyOwner = true; |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
734 CFWL_EvtCmbPreDropDown preEvent; | 735 CFWL_EvtCmbPreDropDown preEvent; |
735 preEvent.m_pSrcTarget = this; | 736 preEvent.m_pSrcTarget = this; |
736 DispatchEvent(&preEvent); | 737 DispatchEvent(&preEvent); |
737 IFWL_ComboList* pComboList = m_pListBox.get(); | 738 IFWL_ComboList* pComboList = m_pListBox.get(); |
738 int32_t iItems = pComboList->CountItems(); | 739 int32_t iItems = pComboList->CountItems(); |
739 if (iItems < 1) { | 740 if (iItems < 1) { |
740 return; | 741 return; |
741 } | 742 } |
742 ReSetListItemAlignment(); | 743 ReSetListItemAlignment(); |
743 pComboList->ChangeSelected(m_iCurSel); | 744 pComboList->ChangeSelected(m_iCurSel); |
744 FX_FLOAT fItemHeight = pComboList->GetItemHeigt(); | 745 FX_FLOAT fItemHeight = pComboList->CalcItemHeight(); |
745 FX_FLOAT fBorder = GetBorderSize(); | 746 FX_FLOAT fBorder = GetBorderSize(); |
746 FX_FLOAT fPopupMin = 0.0f; | 747 FX_FLOAT fPopupMin = 0.0f; |
747 if (iItems > 3) { | 748 if (iItems > 3) { |
748 fPopupMin = fItemHeight * 3 + fBorder * 2; | 749 fPopupMin = fItemHeight * 3 + fBorder * 2; |
749 } | 750 } |
750 FX_FLOAT fPopupMax = fItemHeight * iItems + fBorder * 2; | 751 FX_FLOAT fPopupMax = fItemHeight * iItems + fBorder * 2; |
751 CFX_RectF rtList; | 752 CFX_RectF rtList; |
752 rtList.left = m_rtClient.left; | 753 rtList.left = m_rtClient.left; |
753 rtList.width = m_pProperties->m_rtWidget.width; | 754 rtList.width = m_pProperties->m_rtWidget.width; |
754 rtList.top = 0; | 755 rtList.top = 0; |
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1251 else | 1252 else |
1252 iCurSel++; | 1253 iCurSel++; |
1253 } | 1254 } |
1254 m_iCurSel = iCurSel; | 1255 m_iCurSel = iCurSel; |
1255 SynchrEditText(m_iCurSel); | 1256 SynchrEditText(m_iCurSel); |
1256 return; | 1257 return; |
1257 } | 1258 } |
1258 if (m_pEdit) | 1259 if (m_pEdit) |
1259 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); | 1260 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); |
1260 } | 1261 } |
OLD | NEW |