| 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/cfwl_combobox.h" | 7 #include "xfa/fwl/core/cfwl_combobox.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 if (!pThemeProvider) | 245 if (!pThemeProvider) |
| 246 return; | 246 return; |
| 247 | 247 |
| 248 m_pProperties->m_pThemeProvider = pThemeProvider; | 248 m_pProperties->m_pThemeProvider = pThemeProvider; |
| 249 if (m_pListBox) | 249 if (m_pListBox) |
| 250 m_pListBox->SetThemeProvider(pThemeProvider); | 250 m_pListBox->SetThemeProvider(pThemeProvider); |
| 251 if (m_pEdit) | 251 if (m_pEdit) |
| 252 m_pEdit->SetThemeProvider(pThemeProvider); | 252 m_pEdit->SetThemeProvider(pThemeProvider); |
| 253 } | 253 } |
| 254 | 254 |
| 255 void CFWL_ComboBox::GetTextByIndex(int32_t iIndex, | 255 CFX_WideString CFWL_ComboBox::GetTextByIndex(int32_t iIndex) const { |
| 256 CFX_WideString& wsText) const { | |
| 257 CFWL_ListItem* pItem = static_cast<CFWL_ListItem*>( | 256 CFWL_ListItem* pItem = static_cast<CFWL_ListItem*>( |
| 258 m_pListBox->GetItem(m_pListBox.get(), iIndex)); | 257 m_pListBox->GetItem(m_pListBox.get(), iIndex)); |
| 259 if (pItem) | 258 return pItem ? pItem->m_wsText : L""; |
| 260 wsText = pItem->m_wsText; | |
| 261 } | 259 } |
| 262 | 260 |
| 263 void CFWL_ComboBox::SetCurSel(int32_t iSel) { | 261 void CFWL_ComboBox::SetCurSel(int32_t iSel) { |
| 264 int32_t iCount = m_pListBox->CountItems(nullptr); | 262 int32_t iCount = m_pListBox->CountItems(nullptr); |
| 265 bool bClearSel = iSel < 0 || iSel >= iCount; | 263 bool bClearSel = iSel < 0 || iSel >= iCount; |
| 266 if (IsDropDownStyle() && m_pEdit) { | 264 if (IsDropDownStyle() && m_pEdit) { |
| 267 if (bClearSel) { | 265 if (bClearSel) { |
| 268 m_pEdit->SetText(CFX_WideString()); | 266 m_pEdit->SetText(CFX_WideString()); |
| 269 } else { | 267 } else { |
| 270 CFWL_ListItem* hItem = m_pListBox->GetItem(this, iSel); | 268 CFWL_ListItem* hItem = m_pListBox->GetItem(this, iSel); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 return L""; | 305 return L""; |
| 308 | 306 |
| 309 CFWL_ListItem* hItem = m_pListBox->GetItem(this, m_iCurSel); | 307 CFWL_ListItem* hItem = m_pListBox->GetItem(this, m_iCurSel); |
| 310 return m_pListBox->GetDataProviderItemText(hItem); | 308 return m_pListBox->GetDataProviderItemText(hItem); |
| 311 } | 309 } |
| 312 | 310 |
| 313 void CFWL_ComboBox::OpenDropDownList(bool bActivate) { | 311 void CFWL_ComboBox::OpenDropDownList(bool bActivate) { |
| 314 ShowDropList(bActivate); | 312 ShowDropList(bActivate); |
| 315 } | 313 } |
| 316 | 314 |
| 317 void CFWL_ComboBox::GetBBox(CFX_RectF& rect) const { | 315 CFX_RectF CFWL_ComboBox::GetBBox() const { |
| 318 if (m_pWidgetMgr->IsFormDisabled()) { | 316 if (m_pWidgetMgr->IsFormDisabled()) |
| 319 DisForm_GetBBox(rect); | 317 return DisForm_GetBBox(); |
| 320 return; | |
| 321 } | |
| 322 | 318 |
| 323 rect = m_pProperties->m_rtWidget; | 319 CFX_RectF rect = m_pProperties->m_rtWidget; |
| 324 if (!m_pListBox || !IsDropListVisible()) | 320 if (!m_pListBox || !IsDropListVisible()) |
| 325 return; | 321 return rect; |
| 326 | 322 |
| 327 CFX_RectF rtList; | 323 CFX_RectF rtList; |
| 328 m_pListBox->GetWidgetRect(rtList, false); | 324 m_pListBox->GetWidgetRect(rtList, false); |
| 329 rtList.Offset(rect.left, rect.top); | 325 rtList.Offset(rect.left, rect.top); |
| 330 rect.Union(rtList); | 326 rect.Union(rtList); |
| 327 return rect; |
| 331 } | 328 } |
| 332 | 329 |
| 333 void CFWL_ComboBox::EditModifyStylesEx(uint32_t dwStylesExAdded, | 330 void CFWL_ComboBox::EditModifyStylesEx(uint32_t dwStylesExAdded, |
| 334 uint32_t dwStylesExRemoved) { | 331 uint32_t dwStylesExRemoved) { |
| 335 if (m_pEdit) | 332 if (m_pEdit) |
| 336 m_pEdit->ModifyStylesEx(dwStylesExAdded, dwStylesExRemoved); | 333 m_pEdit->ModifyStylesEx(dwStylesExAdded, dwStylesExRemoved); |
| 337 } | 334 } |
| 338 | 335 |
| 339 void CFWL_ComboBox::DrawStretchHandler(CFX_Graphics* pGraphics, | 336 void CFWL_ComboBox::DrawStretchHandler(CFX_Graphics* pGraphics, |
| 340 const CFX_Matrix* pMatrix) { | 337 const CFX_Matrix* pMatrix) { |
| (...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 730 if (m_pListBox && DisForm_IsDropListVisible()) { | 727 if (m_pListBox && DisForm_IsDropListVisible()) { |
| 731 CFX_RectF rtList; | 728 CFX_RectF rtList; |
| 732 m_pListBox->GetWidgetRect(rtList, false); | 729 m_pListBox->GetWidgetRect(rtList, false); |
| 733 CFX_Matrix mt; | 730 CFX_Matrix mt; |
| 734 mt.Set(1, 0, 0, 1, rtList.left, rtList.top); | 731 mt.Set(1, 0, 0, 1, rtList.left, rtList.top); |
| 735 mt.Concat(mtOrg); | 732 mt.Concat(mtOrg); |
| 736 m_pListBox->DrawWidget(pGraphics, &mt); | 733 m_pListBox->DrawWidget(pGraphics, &mt); |
| 737 } | 734 } |
| 738 } | 735 } |
| 739 | 736 |
| 740 void CFWL_ComboBox::DisForm_GetBBox(CFX_RectF& rect) const { | 737 CFX_RectF CFWL_ComboBox::DisForm_GetBBox() const { |
| 741 rect = m_pProperties->m_rtWidget; | 738 CFX_RectF rect = m_pProperties->m_rtWidget; |
| 742 if (!m_pListBox || !DisForm_IsDropListVisible()) | 739 if (!m_pListBox || !DisForm_IsDropListVisible()) |
| 743 return; | 740 return rect; |
| 744 | 741 |
| 745 CFX_RectF rtList; | 742 CFX_RectF rtList; |
| 746 m_pListBox->GetWidgetRect(rtList, false); | 743 m_pListBox->GetWidgetRect(rtList, false); |
| 747 rtList.Offset(rect.left, rect.top); | 744 rtList.Offset(rect.left, rect.top); |
| 748 rect.Union(rtList); | 745 rect.Union(rtList); |
| 746 return rect; |
| 749 } | 747 } |
| 750 | 748 |
| 751 void CFWL_ComboBox::DisForm_Layout() { | 749 void CFWL_ComboBox::DisForm_Layout() { |
| 752 GetClientRect(m_rtClient); | 750 GetClientRect(m_rtClient); |
| 753 m_rtContent = m_rtClient; | 751 m_rtContent = m_rtClient; |
| 754 FX_FLOAT* pFWidth = static_cast<FX_FLOAT*>( | 752 FX_FLOAT* pFWidth = static_cast<FX_FLOAT*>( |
| 755 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); | 753 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); |
| 756 if (!pFWidth) | 754 if (!pFWidth) |
| 757 return; | 755 return; |
| 758 | 756 |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1101 else | 1099 else |
| 1102 iCurSel++; | 1100 iCurSel++; |
| 1103 } | 1101 } |
| 1104 m_iCurSel = iCurSel; | 1102 m_iCurSel = iCurSel; |
| 1105 SyncEditText(m_iCurSel); | 1103 SyncEditText(m_iCurSel); |
| 1106 return; | 1104 return; |
| 1107 } | 1105 } |
| 1108 if (m_pEdit) | 1106 if (m_pEdit) |
| 1109 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); | 1107 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); |
| 1110 } | 1108 } |
| OLD | NEW |