| 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" |
| 11 #include "xfa/fde/tto/fde_textout.h" | 11 #include "xfa/fde/tto/fde_textout.h" |
| 12 #include "xfa/fwl/core/cfwl_message.h" | 12 #include "xfa/fwl/core/cfwl_message.h" |
| 13 #include "xfa/fwl/core/cfwl_themebackground.h" | 13 #include "xfa/fwl/core/cfwl_themebackground.h" |
| 14 #include "xfa/fwl/core/cfwl_themepart.h" | 14 #include "xfa/fwl/core/cfwl_themepart.h" |
| 15 #include "xfa/fwl/core/cfwl_themetext.h" | 15 #include "xfa/fwl/core/cfwl_themetext.h" |
| 16 #include "xfa/fwl/core/cfwl_widgetmgr.h" | 16 #include "xfa/fwl/core/cfwl_widgetmgr.h" |
| 17 #include "xfa/fwl/core/fwl_noteimp.h" | 17 #include "xfa/fwl/core/fwl_noteimp.h" |
| 18 #include "xfa/fwl/core/ifwl_app.h" | 18 #include "xfa/fwl/core/ifwl_app.h" |
| 19 #include "xfa/fwl/core/ifwl_comboboxproxy.h" | 19 #include "xfa/fwl/core/ifwl_comboboxproxy.h" |
| 20 #include "xfa/fwl/core/ifwl_comboedit.h" | 20 #include "xfa/fwl/core/ifwl_comboedit.h" |
| 21 #include "xfa/fwl/core/ifwl_combolist.h" | 21 #include "xfa/fwl/core/ifwl_combolist.h" |
| 22 #include "xfa/fwl/core/ifwl_formproxy.h" | 22 #include "xfa/fwl/core/ifwl_formproxy.h" |
| 23 #include "xfa/fwl/core/ifwl_themeprovider.h" | 23 #include "xfa/fwl/core/ifwl_themeprovider.h" |
| 24 | 24 |
| 25 IFWL_ComboBox::IFWL_ComboBox(const IFWL_App* app, | 25 IFWL_ComboBox::IFWL_ComboBox(const IFWL_App* app, |
| 26 const CFWL_WidgetImpProperties& properties) | 26 const CFWL_WidgetImpProperties& properties) |
| 27 : IFWL_Widget(app, properties, nullptr), | 27 : IFWL_Widget(app, properties, nullptr), |
| 28 m_pComboBoxProxy(nullptr), | 28 m_pComboBoxProxy(nullptr), |
| 29 m_bLButtonDown(FALSE), | 29 m_bLButtonDown(false), |
| 30 m_iCurSel(-1), | 30 m_iCurSel(-1), |
| 31 m_iBtnState(CFWL_PartState_Normal), | 31 m_iBtnState(CFWL_PartState_Normal), |
| 32 m_fComboFormHandler(0), | 32 m_fComboFormHandler(0), |
| 33 m_bNeedShowList(FALSE) { | 33 m_bNeedShowList(false) { |
| 34 m_rtClient.Reset(); | 34 m_rtClient.Reset(); |
| 35 m_rtBtn.Reset(); | 35 m_rtBtn.Reset(); |
| 36 m_rtHandler.Reset(); | 36 m_rtHandler.Reset(); |
| 37 | 37 |
| 38 if (m_pWidgetMgr->IsFormDisabled()) { | 38 if (m_pWidgetMgr->IsFormDisabled()) { |
| 39 DisForm_InitComboList(); | 39 DisForm_InitComboList(); |
| 40 DisForm_InitComboEdit(); | 40 DisForm_InitComboEdit(); |
| 41 return; | 41 return; |
| 42 } | 42 } |
| 43 | 43 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 59 | 59 |
| 60 SetStates(m_pProperties->m_dwStates); | 60 SetStates(m_pProperties->m_dwStates); |
| 61 } | 61 } |
| 62 | 62 |
| 63 IFWL_ComboBox::~IFWL_ComboBox() {} | 63 IFWL_ComboBox::~IFWL_ComboBox() {} |
| 64 | 64 |
| 65 FWL_Type IFWL_ComboBox::GetClassID() const { | 65 FWL_Type IFWL_ComboBox::GetClassID() const { |
| 66 return FWL_Type::ComboBox; | 66 return FWL_Type::ComboBox; |
| 67 } | 67 } |
| 68 | 68 |
| 69 FWL_Error IFWL_ComboBox::GetWidgetRect(CFX_RectF& rect, FX_BOOL bAutoSize) { | 69 FWL_Error IFWL_ComboBox::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) { |
| 70 if (bAutoSize) { | 70 if (bAutoSize) { |
| 71 rect.Reset(); | 71 rect.Reset(); |
| 72 FX_BOOL bIsDropDown = IsDropDownStyle(); | 72 bool bIsDropDown = IsDropDownStyle(); |
| 73 if (bIsDropDown && m_pEdit) { | 73 if (bIsDropDown && m_pEdit) { |
| 74 m_pEdit->GetWidgetRect(rect, TRUE); | 74 m_pEdit->GetWidgetRect(rect, true); |
| 75 } else { | 75 } else { |
| 76 rect.width = 100; | 76 rect.width = 100; |
| 77 rect.height = 16; | 77 rect.height = 16; |
| 78 } | 78 } |
| 79 if (!m_pProperties->m_pThemeProvider) { | 79 if (!m_pProperties->m_pThemeProvider) { |
| 80 ReSetTheme(); | 80 ReSetTheme(); |
| 81 } | 81 } |
| 82 FX_FLOAT* pFWidth = static_cast<FX_FLOAT*>( | 82 FX_FLOAT* pFWidth = static_cast<FX_FLOAT*>( |
| 83 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); | 83 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); |
| 84 if (!pFWidth) | 84 if (!pFWidth) |
| 85 return FWL_Error::Indefinite; | 85 return FWL_Error::Indefinite; |
| 86 rect.Inflate(0, 0, *pFWidth, 0); | 86 rect.Inflate(0, 0, *pFWidth, 0); |
| 87 IFWL_Widget::GetWidgetRect(rect, TRUE); | 87 IFWL_Widget::GetWidgetRect(rect, true); |
| 88 } else { | 88 } else { |
| 89 rect = m_pProperties->m_rtWidget; | 89 rect = m_pProperties->m_rtWidget; |
| 90 } | 90 } |
| 91 return FWL_Error::Succeeded; | 91 return FWL_Error::Succeeded; |
| 92 } | 92 } |
| 93 | 93 |
| 94 FWL_Error IFWL_ComboBox::ModifyStylesEx(uint32_t dwStylesExAdded, | 94 FWL_Error IFWL_ComboBox::ModifyStylesEx(uint32_t dwStylesExAdded, |
| 95 uint32_t dwStylesExRemoved) { | 95 uint32_t dwStylesExRemoved) { |
| 96 if (m_pWidgetMgr->IsFormDisabled()) { | 96 if (m_pWidgetMgr->IsFormDisabled()) { |
| 97 return DisForm_ModifyStylesEx(dwStylesExAdded, dwStylesExRemoved); | 97 return DisForm_ModifyStylesEx(dwStylesExAdded, dwStylesExRemoved); |
| 98 } | 98 } |
| 99 bool bAddDropDown = !!(dwStylesExAdded & FWL_STYLEEXT_CMB_DropDown); | 99 bool bAddDropDown = !!(dwStylesExAdded & FWL_STYLEEXT_CMB_DropDown); |
| 100 bool bRemoveDropDown = !!(dwStylesExRemoved & FWL_STYLEEXT_CMB_DropDown); | 100 bool bRemoveDropDown = !!(dwStylesExRemoved & FWL_STYLEEXT_CMB_DropDown); |
| 101 if (bAddDropDown && !m_pEdit) { | 101 if (bAddDropDown && !m_pEdit) { |
| 102 CFWL_WidgetImpProperties prop; | 102 CFWL_WidgetImpProperties prop; |
| 103 m_pEdit.reset(new IFWL_ComboEdit(m_pOwnerApp, prop, nullptr)); | 103 m_pEdit.reset(new IFWL_ComboEdit(m_pOwnerApp, prop, nullptr)); |
| 104 m_pEdit->SetOuter(this); | 104 m_pEdit->SetOuter(this); |
| 105 m_pEdit->SetParent(this); | 105 m_pEdit->SetParent(this); |
| 106 } else if (bRemoveDropDown && m_pEdit) { | 106 } else if (bRemoveDropDown && m_pEdit) { |
| 107 m_pEdit->SetStates(FWL_WGTSTATE_Invisible, TRUE); | 107 m_pEdit->SetStates(FWL_WGTSTATE_Invisible, true); |
| 108 } | 108 } |
| 109 return IFWL_Widget::ModifyStylesEx(dwStylesExAdded, dwStylesExRemoved); | 109 return IFWL_Widget::ModifyStylesEx(dwStylesExAdded, dwStylesExRemoved); |
| 110 } | 110 } |
| 111 | 111 |
| 112 FWL_Error IFWL_ComboBox::Update() { | 112 FWL_Error IFWL_ComboBox::Update() { |
| 113 if (m_pWidgetMgr->IsFormDisabled()) { | 113 if (m_pWidgetMgr->IsFormDisabled()) { |
| 114 return DisForm_Update(); | 114 return DisForm_Update(); |
| 115 } | 115 } |
| 116 if (IsLocked()) { | 116 if (IsLocked()) { |
| 117 return FWL_Error::Indefinite; | 117 return FWL_Error::Indefinite; |
| 118 } | 118 } |
| 119 ReSetTheme(); | 119 ReSetTheme(); |
| 120 FX_BOOL bDropDown = IsDropDownStyle(); | 120 bool bDropDown = IsDropDownStyle(); |
| 121 if (bDropDown && m_pEdit) { | 121 if (bDropDown && m_pEdit) { |
| 122 ReSetEditAlignment(); | 122 ReSetEditAlignment(); |
| 123 } | 123 } |
| 124 if (!m_pProperties->m_pThemeProvider) { | 124 if (!m_pProperties->m_pThemeProvider) { |
| 125 m_pProperties->m_pThemeProvider = GetAvailableTheme(); | 125 m_pProperties->m_pThemeProvider = GetAvailableTheme(); |
| 126 } | 126 } |
| 127 Layout(); | 127 Layout(); |
| 128 CFWL_ThemePart part; | 128 CFWL_ThemePart part; |
| 129 part.m_pWidget = this; | 129 part.m_pWidget = this; |
| 130 m_fComboFormHandler = | 130 m_fComboFormHandler = |
| (...skipping 12 matching lines...) Expand all Loading... |
| 143 FWL_Error IFWL_ComboBox::DrawWidget(CFX_Graphics* pGraphics, | 143 FWL_Error IFWL_ComboBox::DrawWidget(CFX_Graphics* pGraphics, |
| 144 const CFX_Matrix* pMatrix) { | 144 const CFX_Matrix* pMatrix) { |
| 145 if (m_pWidgetMgr->IsFormDisabled()) { | 145 if (m_pWidgetMgr->IsFormDisabled()) { |
| 146 return DisForm_DrawWidget(pGraphics, pMatrix); | 146 return DisForm_DrawWidget(pGraphics, pMatrix); |
| 147 } | 147 } |
| 148 if (!pGraphics) | 148 if (!pGraphics) |
| 149 return FWL_Error::Indefinite; | 149 return FWL_Error::Indefinite; |
| 150 if (!m_pProperties->m_pThemeProvider) | 150 if (!m_pProperties->m_pThemeProvider) |
| 151 return FWL_Error::Indefinite; | 151 return FWL_Error::Indefinite; |
| 152 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; | 152 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; |
| 153 FX_BOOL bIsDropDown = IsDropDownStyle(); | 153 bool bIsDropDown = IsDropDownStyle(); |
| 154 if (HasBorder()) { | 154 if (HasBorder()) { |
| 155 DrawBorder(pGraphics, CFWL_Part::Border, pTheme, pMatrix); | 155 DrawBorder(pGraphics, CFWL_Part::Border, pTheme, pMatrix); |
| 156 } | 156 } |
| 157 if (HasEdge()) { | 157 if (HasEdge()) { |
| 158 DrawEdge(pGraphics, CFWL_Part::Edge, pTheme, pMatrix); | 158 DrawEdge(pGraphics, CFWL_Part::Edge, pTheme, pMatrix); |
| 159 } | 159 } |
| 160 if (!bIsDropDown) { | 160 if (!bIsDropDown) { |
| 161 CFX_RectF rtTextBk(m_rtClient); | 161 CFX_RectF rtTextBk(m_rtClient); |
| 162 rtTextBk.width -= m_rtBtn.width; | 162 rtTextBk.width -= m_rtBtn.width; |
| 163 CFWL_ThemeBackground param; | 163 CFWL_ThemeBackground param; |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 m_pEdit->SetThemeProvider(pThemeProvider); | 235 m_pEdit->SetThemeProvider(pThemeProvider); |
| 236 return FWL_Error::Succeeded; | 236 return FWL_Error::Succeeded; |
| 237 } | 237 } |
| 238 | 238 |
| 239 int32_t IFWL_ComboBox::GetCurSel() { | 239 int32_t IFWL_ComboBox::GetCurSel() { |
| 240 return m_iCurSel; | 240 return m_iCurSel; |
| 241 } | 241 } |
| 242 | 242 |
| 243 FWL_Error IFWL_ComboBox::SetCurSel(int32_t iSel) { | 243 FWL_Error IFWL_ComboBox::SetCurSel(int32_t iSel) { |
| 244 int32_t iCount = m_pListBox->CountItems(); | 244 int32_t iCount = m_pListBox->CountItems(); |
| 245 FX_BOOL bClearSel = iSel < 0 || iSel >= iCount; | 245 bool bClearSel = iSel < 0 || iSel >= iCount; |
| 246 FX_BOOL bDropDown = IsDropDownStyle(); | 246 bool bDropDown = IsDropDownStyle(); |
| 247 if (bDropDown && m_pEdit) { | 247 if (bDropDown && m_pEdit) { |
| 248 if (bClearSel) { | 248 if (bClearSel) { |
| 249 m_pEdit->SetText(CFX_WideString()); | 249 m_pEdit->SetText(CFX_WideString()); |
| 250 } else { | 250 } else { |
| 251 CFX_WideString wsText; | 251 CFX_WideString wsText; |
| 252 IFWL_ComboBoxDP* pData = | 252 IFWL_ComboBoxDP* pData = |
| 253 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); | 253 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); |
| 254 IFWL_ListItem* hItem = pData->GetItem(this, iSel); | 254 IFWL_ListItem* hItem = pData->GetItem(this, iSel); |
| 255 m_pListBox->GetItemText(hItem, wsText); | 255 m_pListBox->GetItemText(hItem, wsText); |
| 256 m_pEdit->SetText(wsText); | 256 m_pEdit->SetText(wsText); |
| 257 } | 257 } |
| 258 m_pEdit->Update(); | 258 m_pEdit->Update(); |
| 259 } | 259 } |
| 260 m_iCurSel = bClearSel ? -1 : iSel; | 260 m_iCurSel = bClearSel ? -1 : iSel; |
| 261 return FWL_Error::Succeeded; | 261 return FWL_Error::Succeeded; |
| 262 } | 262 } |
| 263 | 263 |
| 264 void IFWL_ComboBox::SetStates(uint32_t dwStates, FX_BOOL bSet) { | 264 void IFWL_ComboBox::SetStates(uint32_t dwStates, bool bSet) { |
| 265 FX_BOOL bIsDropDown = IsDropDownStyle(); | 265 bool bIsDropDown = IsDropDownStyle(); |
| 266 if (bIsDropDown && m_pEdit) | 266 if (bIsDropDown && m_pEdit) |
| 267 m_pEdit->SetStates(dwStates, bSet); | 267 m_pEdit->SetStates(dwStates, bSet); |
| 268 if (m_pListBox) | 268 if (m_pListBox) |
| 269 m_pListBox->SetStates(dwStates, bSet); | 269 m_pListBox->SetStates(dwStates, bSet); |
| 270 IFWL_Widget::SetStates(dwStates, bSet); | 270 IFWL_Widget::SetStates(dwStates, bSet); |
| 271 } | 271 } |
| 272 | 272 |
| 273 FWL_Error IFWL_ComboBox::SetEditText(const CFX_WideString& wsText) { | 273 FWL_Error IFWL_ComboBox::SetEditText(const CFX_WideString& wsText) { |
| 274 if (!m_pEdit) | 274 if (!m_pEdit) |
| 275 return FWL_Error::Indefinite; | 275 return FWL_Error::Indefinite; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 return FWL_Error::Indefinite; | 322 return FWL_Error::Indefinite; |
| 323 return m_pEdit->SetLimit(nLimit); | 323 return m_pEdit->SetLimit(nLimit); |
| 324 } | 324 } |
| 325 | 325 |
| 326 FWL_Error IFWL_ComboBox::EditDoClipboard(int32_t iCmd) { | 326 FWL_Error IFWL_ComboBox::EditDoClipboard(int32_t iCmd) { |
| 327 if (!m_pEdit) | 327 if (!m_pEdit) |
| 328 return FWL_Error::Indefinite; | 328 return FWL_Error::Indefinite; |
| 329 return m_pEdit->DoClipboard(iCmd); | 329 return m_pEdit->DoClipboard(iCmd); |
| 330 } | 330 } |
| 331 | 331 |
| 332 FX_BOOL IFWL_ComboBox::EditRedo(const IFDE_TxtEdtDoRecord* pRecord) { | 332 bool IFWL_ComboBox::EditRedo(const IFDE_TxtEdtDoRecord* pRecord) { |
| 333 return m_pEdit && m_pEdit->Redo(pRecord); | 333 return m_pEdit && m_pEdit->Redo(pRecord); |
| 334 } | 334 } |
| 335 | 335 |
| 336 FX_BOOL IFWL_ComboBox::EditUndo(const IFDE_TxtEdtDoRecord* pRecord) { | 336 bool IFWL_ComboBox::EditUndo(const IFDE_TxtEdtDoRecord* pRecord) { |
| 337 return m_pEdit && m_pEdit->Undo(pRecord); | 337 return m_pEdit && m_pEdit->Undo(pRecord); |
| 338 } | 338 } |
| 339 | 339 |
| 340 IFWL_ListBox* IFWL_ComboBox::GetListBoxt() { | 340 IFWL_ListBox* IFWL_ComboBox::GetListBoxt() { |
| 341 return m_pListBox.get(); | 341 return m_pListBox.get(); |
| 342 } | 342 } |
| 343 | 343 |
| 344 FX_BOOL IFWL_ComboBox::AfterFocusShowDropList() { | 344 bool IFWL_ComboBox::AfterFocusShowDropList() { |
| 345 if (!m_bNeedShowList) { | 345 if (!m_bNeedShowList) { |
| 346 return FALSE; | 346 return false; |
| 347 } | 347 } |
| 348 if (m_pEdit) { | 348 if (m_pEdit) { |
| 349 MatchEditText(); | 349 MatchEditText(); |
| 350 } | 350 } |
| 351 ShowDropList(TRUE); | 351 ShowDropList(true); |
| 352 m_bNeedShowList = FALSE; | 352 m_bNeedShowList = false; |
| 353 return TRUE; | 353 return true; |
| 354 } | 354 } |
| 355 | 355 |
| 356 FWL_Error IFWL_ComboBox::OpenDropDownList(FX_BOOL bActivate) { | 356 FWL_Error IFWL_ComboBox::OpenDropDownList(bool bActivate) { |
| 357 ShowDropList(bActivate); | 357 ShowDropList(bActivate); |
| 358 return FWL_Error::Succeeded; | 358 return FWL_Error::Succeeded; |
| 359 } | 359 } |
| 360 | 360 |
| 361 FX_BOOL IFWL_ComboBox::EditCanUndo() { | 361 bool IFWL_ComboBox::EditCanUndo() { |
| 362 return m_pEdit->CanUndo(); | 362 return m_pEdit->CanUndo(); |
| 363 } | 363 } |
| 364 | 364 |
| 365 FX_BOOL IFWL_ComboBox::EditCanRedo() { | 365 bool IFWL_ComboBox::EditCanRedo() { |
| 366 return m_pEdit->CanRedo(); | 366 return m_pEdit->CanRedo(); |
| 367 } | 367 } |
| 368 | 368 |
| 369 FX_BOOL IFWL_ComboBox::EditUndo() { | 369 bool IFWL_ComboBox::EditUndo() { |
| 370 return m_pEdit->Undo(); | 370 return m_pEdit->Undo(); |
| 371 } | 371 } |
| 372 | 372 |
| 373 FX_BOOL IFWL_ComboBox::EditRedo() { | 373 bool IFWL_ComboBox::EditRedo() { |
| 374 return m_pEdit->Redo(); | 374 return m_pEdit->Redo(); |
| 375 } | 375 } |
| 376 | 376 |
| 377 FX_BOOL IFWL_ComboBox::EditCanCopy() { | 377 bool IFWL_ComboBox::EditCanCopy() { |
| 378 return m_pEdit->CountSelRanges() > 0; | 378 return m_pEdit->CountSelRanges() > 0; |
| 379 } | 379 } |
| 380 | 380 |
| 381 FX_BOOL IFWL_ComboBox::EditCanCut() { | 381 bool IFWL_ComboBox::EditCanCut() { |
| 382 if (m_pEdit->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly) { | 382 if (m_pEdit->GetStylesEx() & FWL_STYLEEXT_EDT_ReadOnly) { |
| 383 return FALSE; | 383 return false; |
| 384 } | 384 } |
| 385 return m_pEdit->CountSelRanges() > 0; | 385 return m_pEdit->CountSelRanges() > 0; |
| 386 } | 386 } |
| 387 | 387 |
| 388 FX_BOOL IFWL_ComboBox::EditCanSelectAll() { | 388 bool IFWL_ComboBox::EditCanSelectAll() { |
| 389 return m_pEdit->GetTextLength() > 0; | 389 return m_pEdit->GetTextLength() > 0; |
| 390 } | 390 } |
| 391 | 391 |
| 392 FX_BOOL IFWL_ComboBox::EditCopy(CFX_WideString& wsCopy) { | 392 bool IFWL_ComboBox::EditCopy(CFX_WideString& wsCopy) { |
| 393 return m_pEdit->Copy(wsCopy); | 393 return m_pEdit->Copy(wsCopy); |
| 394 } | 394 } |
| 395 | 395 |
| 396 FX_BOOL IFWL_ComboBox::EditCut(CFX_WideString& wsCut) { | 396 bool IFWL_ComboBox::EditCut(CFX_WideString& wsCut) { |
| 397 return m_pEdit->Cut(wsCut); | 397 return m_pEdit->Cut(wsCut); |
| 398 } | 398 } |
| 399 | 399 |
| 400 FX_BOOL IFWL_ComboBox::EditPaste(const CFX_WideString& wsPaste) { | 400 bool IFWL_ComboBox::EditPaste(const CFX_WideString& wsPaste) { |
| 401 return m_pEdit->Paste(wsPaste); | 401 return m_pEdit->Paste(wsPaste); |
| 402 } | 402 } |
| 403 | 403 |
| 404 FX_BOOL IFWL_ComboBox::EditSelectAll() { | 404 bool IFWL_ComboBox::EditSelectAll() { |
| 405 return m_pEdit->AddSelRange(0) == FWL_Error::Succeeded; | 405 return m_pEdit->AddSelRange(0) == FWL_Error::Succeeded; |
| 406 } | 406 } |
| 407 | 407 |
| 408 FX_BOOL IFWL_ComboBox::EditDelete() { | 408 bool IFWL_ComboBox::EditDelete() { |
| 409 return m_pEdit->ClearText() == FWL_Error::Succeeded; | 409 return m_pEdit->ClearText() == FWL_Error::Succeeded; |
| 410 } | 410 } |
| 411 | 411 |
| 412 FX_BOOL IFWL_ComboBox::EditDeSelect() { | 412 bool IFWL_ComboBox::EditDeSelect() { |
| 413 return m_pEdit->ClearSelections() == FWL_Error::Succeeded; | 413 return m_pEdit->ClearSelections() == FWL_Error::Succeeded; |
| 414 } | 414 } |
| 415 | 415 |
| 416 FWL_Error IFWL_ComboBox::GetBBox(CFX_RectF& rect) { | 416 FWL_Error IFWL_ComboBox::GetBBox(CFX_RectF& rect) { |
| 417 if (m_pWidgetMgr->IsFormDisabled()) { | 417 if (m_pWidgetMgr->IsFormDisabled()) { |
| 418 return DisForm_GetBBox(rect); | 418 return DisForm_GetBBox(rect); |
| 419 } | 419 } |
| 420 rect = m_pProperties->m_rtWidget; | 420 rect = m_pProperties->m_rtWidget; |
| 421 if (m_pListBox && IsDropListShowed()) { | 421 if (m_pListBox && IsDropListShowed()) { |
| 422 CFX_RectF rtList; | 422 CFX_RectF rtList; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 446 param.m_iPart = CFWL_Part::StretchHandler; | 446 param.m_iPart = CFWL_Part::StretchHandler; |
| 447 param.m_dwStates = CFWL_PartState_Normal; | 447 param.m_dwStates = CFWL_PartState_Normal; |
| 448 param.m_pWidget = this; | 448 param.m_pWidget = this; |
| 449 if (pMatrix) { | 449 if (pMatrix) { |
| 450 param.m_matrix.Concat(*pMatrix); | 450 param.m_matrix.Concat(*pMatrix); |
| 451 } | 451 } |
| 452 param.m_rtPart = m_rtHandler; | 452 param.m_rtPart = m_rtHandler; |
| 453 m_pProperties->m_pThemeProvider->DrawBackground(¶m); | 453 m_pProperties->m_pThemeProvider->DrawBackground(¶m); |
| 454 } | 454 } |
| 455 | 455 |
| 456 void IFWL_ComboBox::ShowDropList(FX_BOOL bActivate) { | 456 void IFWL_ComboBox::ShowDropList(bool bActivate) { |
| 457 if (m_pWidgetMgr->IsFormDisabled()) | 457 if (m_pWidgetMgr->IsFormDisabled()) |
| 458 return DisForm_ShowDropList(bActivate); | 458 return DisForm_ShowDropList(bActivate); |
| 459 | 459 |
| 460 FX_BOOL bDropList = IsDropListShowed(); | 460 bool bDropList = IsDropListShowed(); |
| 461 if (bDropList == bActivate) | 461 if (bDropList == bActivate) |
| 462 return; | 462 return; |
| 463 if (!m_pComboBoxProxy) | 463 if (!m_pComboBoxProxy) |
| 464 InitProxyForm(); | 464 InitProxyForm(); |
| 465 | 465 |
| 466 m_pComboBoxProxy->Reset(); | 466 m_pComboBoxProxy->Reset(); |
| 467 if (bActivate) { | 467 if (bActivate) { |
| 468 m_pListBox->ChangeSelected(m_iCurSel); | 468 m_pListBox->ChangeSelected(m_iCurSel); |
| 469 ReSetListItemAlignment(); | 469 ReSetListItemAlignment(); |
| 470 uint32_t dwStyleAdd = m_pProperties->m_dwStyleExes & | 470 uint32_t dwStyleAdd = m_pProperties->m_dwStyleExes & |
| 471 (FWL_STYLEEXT_CMB_Sort | FWL_STYLEEXT_CMB_OwnerDraw); | 471 (FWL_STYLEEXT_CMB_Sort | FWL_STYLEEXT_CMB_OwnerDraw); |
| 472 m_pListBox->ModifyStylesEx(dwStyleAdd, 0); | 472 m_pListBox->ModifyStylesEx(dwStyleAdd, 0); |
| 473 m_pListBox->GetWidgetRect(m_rtList, TRUE); | 473 m_pListBox->GetWidgetRect(m_rtList, true); |
| 474 FX_FLOAT fHeight = GetListHeight(); | 474 FX_FLOAT fHeight = GetListHeight(); |
| 475 if (fHeight > 0) { | 475 if (fHeight > 0) { |
| 476 if (m_rtList.height > GetListHeight()) { | 476 if (m_rtList.height > GetListHeight()) { |
| 477 m_rtList.height = GetListHeight(); | 477 m_rtList.height = GetListHeight(); |
| 478 m_pListBox->ModifyStyles(FWL_WGTSTYLE_VScroll, 0); | 478 m_pListBox->ModifyStyles(FWL_WGTSTYLE_VScroll, 0); |
| 479 } | 479 } |
| 480 } | 480 } |
| 481 CFX_RectF rtAnchor; | 481 CFX_RectF rtAnchor; |
| 482 rtAnchor.Set(0, 0, m_pProperties->m_rtWidget.width, | 482 rtAnchor.Set(0, 0, m_pProperties->m_rtWidget.width, |
| 483 m_pProperties->m_rtWidget.height); | 483 m_pProperties->m_rtWidget.height); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 504 } | 504 } |
| 505 } | 505 } |
| 506 m_pComboBoxProxy->SetWidgetRect(m_rtProxy); | 506 m_pComboBoxProxy->SetWidgetRect(m_rtProxy); |
| 507 m_pComboBoxProxy->Update(); | 507 m_pComboBoxProxy->Update(); |
| 508 m_pListBox->SetWidgetRect(m_rtList); | 508 m_pListBox->SetWidgetRect(m_rtList); |
| 509 m_pListBox->Update(); | 509 m_pListBox->Update(); |
| 510 CFWL_EvtCmbPreDropDown ev; | 510 CFWL_EvtCmbPreDropDown ev; |
| 511 ev.m_pSrcTarget = this; | 511 ev.m_pSrcTarget = this; |
| 512 DispatchEvent(&ev); | 512 DispatchEvent(&ev); |
| 513 m_fItemHeight = m_pListBox->m_fItemHeight; | 513 m_fItemHeight = m_pListBox->m_fItemHeight; |
| 514 m_pListBox->SetFocus(TRUE); | 514 m_pListBox->SetFocus(true); |
| 515 m_pComboBoxProxy->DoModal(); | 515 m_pComboBoxProxy->DoModal(); |
| 516 m_pListBox->SetFocus(FALSE); | 516 m_pListBox->SetFocus(false); |
| 517 } else { | 517 } else { |
| 518 m_pComboBoxProxy->EndDoModal(); | 518 m_pComboBoxProxy->EndDoModal(); |
| 519 CFWL_EvtCmbCloseUp ev; | 519 CFWL_EvtCmbCloseUp ev; |
| 520 ev.m_pSrcTarget = this; | 520 ev.m_pSrcTarget = this; |
| 521 DispatchEvent(&ev); | 521 DispatchEvent(&ev); |
| 522 m_bLButtonDown = FALSE; | 522 m_bLButtonDown = false; |
| 523 m_pListBox->m_bNotifyOwner = TRUE; | 523 m_pListBox->m_bNotifyOwner = true; |
| 524 SetFocus(TRUE); | 524 SetFocus(true); |
| 525 } | 525 } |
| 526 } | 526 } |
| 527 | 527 |
| 528 FX_BOOL IFWL_ComboBox::IsDropListShowed() { | 528 bool IFWL_ComboBox::IsDropListShowed() { |
| 529 return m_pComboBoxProxy && | 529 return m_pComboBoxProxy && |
| 530 !(m_pComboBoxProxy->GetStates() & FWL_WGTSTATE_Invisible); | 530 !(m_pComboBoxProxy->GetStates() & FWL_WGTSTATE_Invisible); |
| 531 } | 531 } |
| 532 | 532 |
| 533 FX_BOOL IFWL_ComboBox::IsDropDownStyle() const { | 533 bool IFWL_ComboBox::IsDropDownStyle() const { |
| 534 return m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CMB_DropDown; | 534 return m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CMB_DropDown; |
| 535 } | 535 } |
| 536 | 536 |
| 537 void IFWL_ComboBox::MatchEditText() { | 537 void IFWL_ComboBox::MatchEditText() { |
| 538 CFX_WideString wsText; | 538 CFX_WideString wsText; |
| 539 m_pEdit->GetText(wsText); | 539 m_pEdit->GetText(wsText); |
| 540 int32_t iMatch = m_pListBox->MatchItem(wsText); | 540 int32_t iMatch = m_pListBox->MatchItem(wsText); |
| 541 if (iMatch != m_iCurSel) { | 541 if (iMatch != m_iCurSel) { |
| 542 m_pListBox->ChangeSelected(iMatch); | 542 m_pListBox->ChangeSelected(iMatch); |
| 543 if (iMatch >= 0) { | 543 if (iMatch >= 0) { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 565 return DisForm_Layout(); | 565 return DisForm_Layout(); |
| 566 } | 566 } |
| 567 GetClientRect(m_rtClient); | 567 GetClientRect(m_rtClient); |
| 568 FX_FLOAT* pFWidth = static_cast<FX_FLOAT*>( | 568 FX_FLOAT* pFWidth = static_cast<FX_FLOAT*>( |
| 569 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); | 569 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); |
| 570 if (!pFWidth) | 570 if (!pFWidth) |
| 571 return; | 571 return; |
| 572 FX_FLOAT fBtn = *pFWidth; | 572 FX_FLOAT fBtn = *pFWidth; |
| 573 m_rtBtn.Set(m_rtClient.right() - fBtn, m_rtClient.top, fBtn, | 573 m_rtBtn.Set(m_rtClient.right() - fBtn, m_rtClient.top, fBtn, |
| 574 m_rtClient.height); | 574 m_rtClient.height); |
| 575 FX_BOOL bIsDropDown = IsDropDownStyle(); | 575 bool bIsDropDown = IsDropDownStyle(); |
| 576 if (bIsDropDown && m_pEdit) { | 576 if (bIsDropDown && m_pEdit) { |
| 577 CFX_RectF rtEdit; | 577 CFX_RectF rtEdit; |
| 578 rtEdit.Set(m_rtClient.left, m_rtClient.top, m_rtClient.width - fBtn, | 578 rtEdit.Set(m_rtClient.left, m_rtClient.top, m_rtClient.width - fBtn, |
| 579 m_rtClient.height); | 579 m_rtClient.height); |
| 580 m_pEdit->SetWidgetRect(rtEdit); | 580 m_pEdit->SetWidgetRect(rtEdit); |
| 581 if (m_iCurSel >= 0) { | 581 if (m_iCurSel >= 0) { |
| 582 CFX_WideString wsText; | 582 CFX_WideString wsText; |
| 583 IFWL_ComboBoxDP* pData = | 583 IFWL_ComboBoxDP* pData = |
| 584 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); | 584 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); |
| 585 IFWL_ListItem* hItem = pData->GetItem(this, m_iCurSel); | 585 IFWL_ListItem* hItem = pData->GetItem(this, m_iCurSel); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 652 dwAdd |= FWL_STYLEEXT_LTB_CenterAlign; | 652 dwAdd |= FWL_STYLEEXT_LTB_CenterAlign; |
| 653 } | 653 } |
| 654 case FWL_STYLEEXT_CMB_ListItemRightAlign: { | 654 case FWL_STYLEEXT_CMB_ListItemRightAlign: { |
| 655 dwAdd |= FWL_STYLEEXT_LTB_RightAlign; | 655 dwAdd |= FWL_STYLEEXT_LTB_RightAlign; |
| 656 } | 656 } |
| 657 default: { dwAdd |= FWL_STYLEEXT_LTB_LeftAlign; } | 657 default: { dwAdd |= FWL_STYLEEXT_LTB_LeftAlign; } |
| 658 } | 658 } |
| 659 m_pListBox->ModifyStylesEx(dwAdd, FWL_STYLEEXT_CMB_ListItemAlignMask); | 659 m_pListBox->ModifyStylesEx(dwAdd, FWL_STYLEEXT_CMB_ListItemAlignMask); |
| 660 } | 660 } |
| 661 | 661 |
| 662 void IFWL_ComboBox::ProcessSelChanged(FX_BOOL bLButtonUp) { | 662 void IFWL_ComboBox::ProcessSelChanged(bool bLButtonUp) { |
| 663 IFWL_ComboBoxDP* pDatas = | 663 IFWL_ComboBoxDP* pDatas = |
| 664 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); | 664 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); |
| 665 m_iCurSel = pDatas->GetItemIndex(this, m_pListBox->GetSelItem(0)); | 665 m_iCurSel = pDatas->GetItemIndex(this, m_pListBox->GetSelItem(0)); |
| 666 FX_BOOL bDropDown = IsDropDownStyle(); | 666 bool bDropDown = IsDropDownStyle(); |
| 667 if (bDropDown) { | 667 if (bDropDown) { |
| 668 IFWL_ComboBoxDP* pData = | 668 IFWL_ComboBoxDP* pData = |
| 669 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); | 669 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); |
| 670 IFWL_ListItem* hItem = pData->GetItem(this, m_iCurSel); | 670 IFWL_ListItem* hItem = pData->GetItem(this, m_iCurSel); |
| 671 if (hItem) { | 671 if (hItem) { |
| 672 CFX_WideString wsText; | 672 CFX_WideString wsText; |
| 673 pData->GetItemText(this, hItem, wsText); | 673 pData->GetItemText(this, hItem, wsText); |
| 674 if (m_pEdit) { | 674 if (m_pEdit) { |
| 675 m_pEdit->SetText(wsText); | 675 m_pEdit->SetText(wsText); |
| 676 m_pEdit->Update(); | 676 m_pEdit->Update(); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 720 if (m_pEdit) | 720 if (m_pEdit) |
| 721 return; | 721 return; |
| 722 | 722 |
| 723 CFWL_WidgetImpProperties prop; | 723 CFWL_WidgetImpProperties prop; |
| 724 prop.m_pParent = this; | 724 prop.m_pParent = this; |
| 725 prop.m_pThemeProvider = m_pProperties->m_pThemeProvider; | 725 prop.m_pThemeProvider = m_pProperties->m_pThemeProvider; |
| 726 m_pEdit.reset(new IFWL_ComboEdit(m_pOwnerApp, prop, this)); | 726 m_pEdit.reset(new IFWL_ComboEdit(m_pOwnerApp, prop, this)); |
| 727 m_pEdit->SetOuter(this); | 727 m_pEdit->SetOuter(this); |
| 728 } | 728 } |
| 729 | 729 |
| 730 void IFWL_ComboBox::DisForm_ShowDropList(FX_BOOL bActivate) { | 730 void IFWL_ComboBox::DisForm_ShowDropList(bool bActivate) { |
| 731 FX_BOOL bDropList = DisForm_IsDropListShowed(); | 731 bool bDropList = DisForm_IsDropListShowed(); |
| 732 if (bDropList == bActivate) { | 732 if (bDropList == bActivate) { |
| 733 return; | 733 return; |
| 734 } | 734 } |
| 735 if (bActivate) { | 735 if (bActivate) { |
| 736 CFWL_EvtCmbPreDropDown preEvent; | 736 CFWL_EvtCmbPreDropDown preEvent; |
| 737 preEvent.m_pSrcTarget = this; | 737 preEvent.m_pSrcTarget = this; |
| 738 DispatchEvent(&preEvent); | 738 DispatchEvent(&preEvent); |
| 739 IFWL_ComboList* pComboList = m_pListBox.get(); | 739 IFWL_ComboList* pComboList = m_pListBox.get(); |
| 740 int32_t iItems = pComboList->CountItems(); | 740 int32_t iItems = pComboList->CountItems(); |
| 741 if (iItems < 1) { | 741 if (iItems < 1) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 752 FX_FLOAT fPopupMax = fItemHeight * iItems + fBorder * 2; | 752 FX_FLOAT fPopupMax = fItemHeight * iItems + fBorder * 2; |
| 753 CFX_RectF rtList; | 753 CFX_RectF rtList; |
| 754 rtList.left = m_rtClient.left; | 754 rtList.left = m_rtClient.left; |
| 755 rtList.width = m_pProperties->m_rtWidget.width; | 755 rtList.width = m_pProperties->m_rtWidget.width; |
| 756 rtList.top = 0; | 756 rtList.top = 0; |
| 757 rtList.height = 0; | 757 rtList.height = 0; |
| 758 GetPopupPos(fPopupMin, fPopupMax, m_pProperties->m_rtWidget, rtList); | 758 GetPopupPos(fPopupMin, fPopupMax, m_pProperties->m_rtWidget, rtList); |
| 759 m_pListBox->SetWidgetRect(rtList); | 759 m_pListBox->SetWidgetRect(rtList); |
| 760 m_pListBox->Update(); | 760 m_pListBox->Update(); |
| 761 } else { | 761 } else { |
| 762 SetFocus(TRUE); | 762 SetFocus(true); |
| 763 } | 763 } |
| 764 m_pListBox->SetStates(FWL_WGTSTATE_Invisible, !bActivate); | 764 m_pListBox->SetStates(FWL_WGTSTATE_Invisible, !bActivate); |
| 765 if (bActivate) { | 765 if (bActivate) { |
| 766 CFWL_EvtCmbPostDropDown postEvent; | 766 CFWL_EvtCmbPostDropDown postEvent; |
| 767 postEvent.m_pSrcTarget = this; | 767 postEvent.m_pSrcTarget = this; |
| 768 DispatchEvent(&postEvent); | 768 DispatchEvent(&postEvent); |
| 769 } | 769 } |
| 770 CFX_RectF rect; | 770 CFX_RectF rect; |
| 771 m_pListBox->GetWidgetRect(rect); | 771 m_pListBox->GetWidgetRect(rect); |
| 772 rect.Inflate(2, 2); | 772 rect.Inflate(2, 2); |
| 773 Repaint(&rect); | 773 Repaint(&rect); |
| 774 } | 774 } |
| 775 | 775 |
| 776 FX_BOOL IFWL_ComboBox::DisForm_IsDropListShowed() { | 776 bool IFWL_ComboBox::DisForm_IsDropListShowed() { |
| 777 return !(m_pListBox->GetStates() & FWL_WGTSTATE_Invisible); | 777 return !(m_pListBox->GetStates() & FWL_WGTSTATE_Invisible); |
| 778 } | 778 } |
| 779 | 779 |
| 780 FWL_Error IFWL_ComboBox::DisForm_ModifyStylesEx(uint32_t dwStylesExAdded, | 780 FWL_Error IFWL_ComboBox::DisForm_ModifyStylesEx(uint32_t dwStylesExAdded, |
| 781 uint32_t dwStylesExRemoved) { | 781 uint32_t dwStylesExRemoved) { |
| 782 if (!m_pEdit) | 782 if (!m_pEdit) |
| 783 DisForm_InitComboEdit(); | 783 DisForm_InitComboEdit(); |
| 784 | 784 |
| 785 bool bAddDropDown = !!(dwStylesExAdded & FWL_STYLEEXT_CMB_DropDown); | 785 bool bAddDropDown = !!(dwStylesExAdded & FWL_STYLEEXT_CMB_DropDown); |
| 786 bool bDelDropDown = !!(dwStylesExRemoved & FWL_STYLEEXT_CMB_DropDown); | 786 bool bDelDropDown = !!(dwStylesExRemoved & FWL_STYLEEXT_CMB_DropDown); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 823 } | 823 } |
| 824 | 824 |
| 825 FWL_Error IFWL_ComboBox::DisForm_DrawWidget(CFX_Graphics* pGraphics, | 825 FWL_Error IFWL_ComboBox::DisForm_DrawWidget(CFX_Graphics* pGraphics, |
| 826 const CFX_Matrix* pMatrix) { | 826 const CFX_Matrix* pMatrix) { |
| 827 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; | 827 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; |
| 828 CFX_Matrix mtOrg; | 828 CFX_Matrix mtOrg; |
| 829 mtOrg.Set(1, 0, 0, 1, 0, 0); | 829 mtOrg.Set(1, 0, 0, 1, 0, 0); |
| 830 if (pMatrix) { | 830 if (pMatrix) { |
| 831 mtOrg = *pMatrix; | 831 mtOrg = *pMatrix; |
| 832 } | 832 } |
| 833 FX_BOOL bListShowed = m_pListBox && DisForm_IsDropListShowed(); | 833 bool bListShowed = m_pListBox && DisForm_IsDropListShowed(); |
| 834 pGraphics->SaveGraphState(); | 834 pGraphics->SaveGraphState(); |
| 835 pGraphics->ConcatMatrix(&mtOrg); | 835 pGraphics->ConcatMatrix(&mtOrg); |
| 836 if (!m_rtBtn.IsEmpty(0.1f)) { | 836 if (!m_rtBtn.IsEmpty(0.1f)) { |
| 837 CFWL_ThemeBackground param; | 837 CFWL_ThemeBackground param; |
| 838 param.m_pWidget = this; | 838 param.m_pWidget = this; |
| 839 param.m_iPart = CFWL_Part::DropDownButton; | 839 param.m_iPart = CFWL_Part::DropDownButton; |
| 840 param.m_dwStates = m_iBtnState; | 840 param.m_dwStates = m_iBtnState; |
| 841 param.m_pGraphics = pGraphics; | 841 param.m_pGraphics = pGraphics; |
| 842 param.m_rtPart = m_rtBtn; | 842 param.m_rtPart = m_rtBtn; |
| 843 pTheme->DrawBackground(¶m); | 843 pTheme->DrawBackground(¶m); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 885 if (!(GetStylesEx() & FWL_STYLEEXT_CMB_ReadOnly)) { | 885 if (!(GetStylesEx() & FWL_STYLEEXT_CMB_ReadOnly)) { |
| 886 m_rtBtn.Set(m_rtClient.right() - fBtn, m_rtClient.top + borderWidth, | 886 m_rtBtn.Set(m_rtClient.right() - fBtn, m_rtClient.top + borderWidth, |
| 887 fBtn - borderWidth, m_rtClient.height - 2 * borderWidth); | 887 fBtn - borderWidth, m_rtClient.height - 2 * borderWidth); |
| 888 } | 888 } |
| 889 CFX_RectF* pUIMargin = | 889 CFX_RectF* pUIMargin = |
| 890 static_cast<CFX_RectF*>(GetThemeCapacity(CFWL_WidgetCapacity::UIMargin)); | 890 static_cast<CFX_RectF*>(GetThemeCapacity(CFWL_WidgetCapacity::UIMargin)); |
| 891 if (pUIMargin) { | 891 if (pUIMargin) { |
| 892 m_rtContent.Deflate(pUIMargin->left, pUIMargin->top, pUIMargin->width, | 892 m_rtContent.Deflate(pUIMargin->left, pUIMargin->top, pUIMargin->width, |
| 893 pUIMargin->height); | 893 pUIMargin->height); |
| 894 } | 894 } |
| 895 FX_BOOL bIsDropDown = IsDropDownStyle(); | 895 bool bIsDropDown = IsDropDownStyle(); |
| 896 if (bIsDropDown && m_pEdit) { | 896 if (bIsDropDown && m_pEdit) { |
| 897 CFX_RectF rtEdit; | 897 CFX_RectF rtEdit; |
| 898 rtEdit.Set(m_rtContent.left, m_rtContent.top, m_rtContent.width - fBtn, | 898 rtEdit.Set(m_rtContent.left, m_rtContent.top, m_rtContent.width - fBtn, |
| 899 m_rtContent.height); | 899 m_rtContent.height); |
| 900 m_pEdit->SetWidgetRect(rtEdit); | 900 m_pEdit->SetWidgetRect(rtEdit); |
| 901 if (m_iCurSel >= 0) { | 901 if (m_iCurSel >= 0) { |
| 902 CFX_WideString wsText; | 902 CFX_WideString wsText; |
| 903 IFWL_ComboBoxDP* pData = | 903 IFWL_ComboBoxDP* pData = |
| 904 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); | 904 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); |
| 905 IFWL_ListItem* hItem = pData->GetItem(this, m_iCurSel); | 905 IFWL_ListItem* hItem = pData->GetItem(this, m_iCurSel); |
| 906 m_pListBox->GetItemText(hItem, wsText); | 906 m_pListBox->GetItemText(hItem, wsText); |
| 907 m_pEdit->LockUpdate(); | 907 m_pEdit->LockUpdate(); |
| 908 m_pEdit->SetText(wsText); | 908 m_pEdit->SetText(wsText); |
| 909 m_pEdit->UnlockUpdate(); | 909 m_pEdit->UnlockUpdate(); |
| 910 } | 910 } |
| 911 m_pEdit->Update(); | 911 m_pEdit->Update(); |
| 912 } | 912 } |
| 913 } | 913 } |
| 914 | 914 |
| 915 void IFWL_ComboBox::OnProcessMessage(CFWL_Message* pMessage) { | 915 void IFWL_ComboBox::OnProcessMessage(CFWL_Message* pMessage) { |
| 916 if (m_pWidgetMgr->IsFormDisabled()) { | 916 if (m_pWidgetMgr->IsFormDisabled()) { |
| 917 DisForm_OnProcessMessage(pMessage); | 917 DisForm_OnProcessMessage(pMessage); |
| 918 return; | 918 return; |
| 919 } | 919 } |
| 920 if (!pMessage) | 920 if (!pMessage) |
| 921 return; | 921 return; |
| 922 | 922 |
| 923 switch (pMessage->GetClassID()) { | 923 switch (pMessage->GetClassID()) { |
| 924 case CFWL_MessageType::SetFocus: | 924 case CFWL_MessageType::SetFocus: |
| 925 OnFocusChanged(pMessage, TRUE); | 925 OnFocusChanged(pMessage, true); |
| 926 break; | 926 break; |
| 927 case CFWL_MessageType::KillFocus: | 927 case CFWL_MessageType::KillFocus: |
| 928 OnFocusChanged(pMessage, FALSE); | 928 OnFocusChanged(pMessage, false); |
| 929 break; | 929 break; |
| 930 case CFWL_MessageType::Mouse: { | 930 case CFWL_MessageType::Mouse: { |
| 931 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); | 931 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); |
| 932 switch (pMsg->m_dwCmd) { | 932 switch (pMsg->m_dwCmd) { |
| 933 case FWL_MouseCommand::LeftButtonDown: | 933 case FWL_MouseCommand::LeftButtonDown: |
| 934 OnLButtonDown(pMsg); | 934 OnLButtonDown(pMsg); |
| 935 break; | 935 break; |
| 936 case FWL_MouseCommand::LeftButtonUp: | 936 case FWL_MouseCommand::LeftButtonUp: |
| 937 OnLButtonUp(pMsg); | 937 OnLButtonUp(pMsg); |
| 938 break; | 938 break; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 985 pTemp.nChangeType = pTextChangedEvent->nChangeType; | 985 pTemp.nChangeType = pTextChangedEvent->nChangeType; |
| 986 DispatchEvent(&pTemp); | 986 DispatchEvent(&pTemp); |
| 987 } | 987 } |
| 988 } | 988 } |
| 989 | 989 |
| 990 void IFWL_ComboBox::OnDrawWidget(CFX_Graphics* pGraphics, | 990 void IFWL_ComboBox::OnDrawWidget(CFX_Graphics* pGraphics, |
| 991 const CFX_Matrix* pMatrix) { | 991 const CFX_Matrix* pMatrix) { |
| 992 DrawWidget(pGraphics, pMatrix); | 992 DrawWidget(pGraphics, pMatrix); |
| 993 } | 993 } |
| 994 | 994 |
| 995 void IFWL_ComboBox::OnFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet) { | 995 void IFWL_ComboBox::OnFocusChanged(CFWL_Message* pMsg, bool bSet) { |
| 996 IFWL_Widget* pDstTarget = pMsg->m_pDstTarget; | 996 IFWL_Widget* pDstTarget = pMsg->m_pDstTarget; |
| 997 IFWL_Widget* pSrcTarget = pMsg->m_pSrcTarget; | 997 IFWL_Widget* pSrcTarget = pMsg->m_pSrcTarget; |
| 998 FX_BOOL bDropDown = IsDropDownStyle(); | 998 bool bDropDown = IsDropDownStyle(); |
| 999 if (bSet) { | 999 if (bSet) { |
| 1000 m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; | 1000 m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; |
| 1001 if (bDropDown && pSrcTarget != m_pListBox.get()) { | 1001 if (bDropDown && pSrcTarget != m_pListBox.get()) { |
| 1002 if (!m_pEdit) | 1002 if (!m_pEdit) |
| 1003 return; | 1003 return; |
| 1004 m_pEdit->SetSelected(); | 1004 m_pEdit->SetSelected(); |
| 1005 } else { | 1005 } else { |
| 1006 Repaint(&m_rtClient); | 1006 Repaint(&m_rtClient); |
| 1007 } | 1007 } |
| 1008 } else { | 1008 } else { |
| 1009 m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; | 1009 m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; |
| 1010 if (bDropDown && pDstTarget != m_pListBox.get()) { | 1010 if (bDropDown && pDstTarget != m_pListBox.get()) { |
| 1011 if (!m_pEdit) | 1011 if (!m_pEdit) |
| 1012 return; | 1012 return; |
| 1013 m_pEdit->FlagFocus(FALSE); | 1013 m_pEdit->FlagFocus(false); |
| 1014 m_pEdit->ClearSelected(); | 1014 m_pEdit->ClearSelected(); |
| 1015 } else { | 1015 } else { |
| 1016 Repaint(&m_rtClient); | 1016 Repaint(&m_rtClient); |
| 1017 } | 1017 } |
| 1018 } | 1018 } |
| 1019 } | 1019 } |
| 1020 | 1020 |
| 1021 void IFWL_ComboBox::OnLButtonDown(CFWL_MsgMouse* pMsg) { | 1021 void IFWL_ComboBox::OnLButtonDown(CFWL_MsgMouse* pMsg) { |
| 1022 if (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled) | 1022 if (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled) |
| 1023 return; | 1023 return; |
| 1024 | 1024 |
| 1025 FX_BOOL bDropDown = IsDropDownStyle(); | 1025 bool bDropDown = IsDropDownStyle(); |
| 1026 CFX_RectF& rtBtn = bDropDown ? m_rtBtn : m_rtClient; | 1026 CFX_RectF& rtBtn = bDropDown ? m_rtBtn : m_rtClient; |
| 1027 FX_BOOL bClickBtn = rtBtn.Contains(pMsg->m_fx, pMsg->m_fy); | 1027 bool bClickBtn = rtBtn.Contains(pMsg->m_fx, pMsg->m_fy); |
| 1028 if (!bClickBtn) | 1028 if (!bClickBtn) |
| 1029 return; | 1029 return; |
| 1030 | 1030 |
| 1031 if (bDropDown && m_pEdit) | 1031 if (bDropDown && m_pEdit) |
| 1032 MatchEditText(); | 1032 MatchEditText(); |
| 1033 | 1033 |
| 1034 m_bLButtonDown = TRUE; | 1034 m_bLButtonDown = true; |
| 1035 m_iBtnState = CFWL_PartState_Pressed; | 1035 m_iBtnState = CFWL_PartState_Pressed; |
| 1036 Repaint(&m_rtClient); | 1036 Repaint(&m_rtClient); |
| 1037 ShowDropList(TRUE); | 1037 ShowDropList(true); |
| 1038 m_iBtnState = CFWL_PartState_Normal; | 1038 m_iBtnState = CFWL_PartState_Normal; |
| 1039 Repaint(&m_rtClient); | 1039 Repaint(&m_rtClient); |
| 1040 } | 1040 } |
| 1041 | 1041 |
| 1042 void IFWL_ComboBox::OnLButtonUp(CFWL_MsgMouse* pMsg) { | 1042 void IFWL_ComboBox::OnLButtonUp(CFWL_MsgMouse* pMsg) { |
| 1043 m_bLButtonDown = FALSE; | 1043 m_bLButtonDown = false; |
| 1044 if (m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) | 1044 if (m_rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) |
| 1045 m_iBtnState = CFWL_PartState_Hovered; | 1045 m_iBtnState = CFWL_PartState_Hovered; |
| 1046 else | 1046 else |
| 1047 m_iBtnState = CFWL_PartState_Normal; | 1047 m_iBtnState = CFWL_PartState_Normal; |
| 1048 | 1048 |
| 1049 Repaint(&m_rtBtn); | 1049 Repaint(&m_rtBtn); |
| 1050 } | 1050 } |
| 1051 | 1051 |
| 1052 void IFWL_ComboBox::OnMouseMove(CFWL_MsgMouse* pMsg) { | 1052 void IFWL_ComboBox::OnMouseMove(CFWL_MsgMouse* pMsg) { |
| 1053 int32_t iOldState = m_iBtnState; | 1053 int32_t iOldState = m_iBtnState; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1085 | 1085 |
| 1086 void IFWL_ComboBox::DoSubCtrlKey(CFWL_MsgKey* pMsg) { | 1086 void IFWL_ComboBox::DoSubCtrlKey(CFWL_MsgKey* pMsg) { |
| 1087 uint32_t dwKeyCode = pMsg->m_dwKeyCode; | 1087 uint32_t dwKeyCode = pMsg->m_dwKeyCode; |
| 1088 const bool bUp = dwKeyCode == FWL_VKEY_Up; | 1088 const bool bUp = dwKeyCode == FWL_VKEY_Up; |
| 1089 const bool bDown = dwKeyCode == FWL_VKEY_Down; | 1089 const bool bDown = dwKeyCode == FWL_VKEY_Down; |
| 1090 if (bUp || bDown) { | 1090 if (bUp || bDown) { |
| 1091 int32_t iCount = m_pListBox->CountItems(); | 1091 int32_t iCount = m_pListBox->CountItems(); |
| 1092 if (iCount < 1) | 1092 if (iCount < 1) |
| 1093 return; | 1093 return; |
| 1094 | 1094 |
| 1095 FX_BOOL bMatchEqual = FALSE; | 1095 bool bMatchEqual = false; |
| 1096 int32_t iCurSel = m_iCurSel; | 1096 int32_t iCurSel = m_iCurSel; |
| 1097 FX_BOOL bDropDown = IsDropDownStyle(); | 1097 bool bDropDown = IsDropDownStyle(); |
| 1098 if (bDropDown && m_pEdit) { | 1098 if (bDropDown && m_pEdit) { |
| 1099 CFX_WideString wsText; | 1099 CFX_WideString wsText; |
| 1100 m_pEdit->GetText(wsText); | 1100 m_pEdit->GetText(wsText); |
| 1101 iCurSel = m_pListBox->MatchItem(wsText); | 1101 iCurSel = m_pListBox->MatchItem(wsText); |
| 1102 if (iCurSel >= 0) { | 1102 if (iCurSel >= 0) { |
| 1103 CFX_WideString wsTemp; | 1103 CFX_WideString wsTemp; |
| 1104 IFWL_ComboBoxDP* pData = | 1104 IFWL_ComboBoxDP* pData = |
| 1105 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); | 1105 static_cast<IFWL_ComboBoxDP*>(m_pProperties->m_pDataProvider); |
| 1106 IFWL_ListItem* hItem = pData->GetItem(this, iCurSel); | 1106 IFWL_ListItem* hItem = pData->GetItem(this, iCurSel); |
| 1107 m_pListBox->GetItemText(hItem, wsTemp); | 1107 m_pListBox->GetItemText(hItem, wsTemp); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1119 iCurSel++; | 1119 iCurSel++; |
| 1120 } | 1120 } |
| 1121 m_iCurSel = iCurSel; | 1121 m_iCurSel = iCurSel; |
| 1122 if (bDropDown && m_pEdit) | 1122 if (bDropDown && m_pEdit) |
| 1123 SynchrEditText(m_iCurSel); | 1123 SynchrEditText(m_iCurSel); |
| 1124 else | 1124 else |
| 1125 Repaint(&m_rtClient); | 1125 Repaint(&m_rtClient); |
| 1126 return; | 1126 return; |
| 1127 } | 1127 } |
| 1128 | 1128 |
| 1129 FX_BOOL bDropDown = IsDropDownStyle(); | 1129 bool bDropDown = IsDropDownStyle(); |
| 1130 if (bDropDown) | 1130 if (bDropDown) |
| 1131 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); | 1131 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); |
| 1132 } | 1132 } |
| 1133 | 1133 |
| 1134 void IFWL_ComboBox::DisForm_OnProcessMessage(CFWL_Message* pMessage) { | 1134 void IFWL_ComboBox::DisForm_OnProcessMessage(CFWL_Message* pMessage) { |
| 1135 if (!pMessage) | 1135 if (!pMessage) |
| 1136 return; | 1136 return; |
| 1137 | 1137 |
| 1138 FX_BOOL backDefault = TRUE; | 1138 bool backDefault = true; |
| 1139 switch (pMessage->GetClassID()) { | 1139 switch (pMessage->GetClassID()) { |
| 1140 case CFWL_MessageType::SetFocus: { | 1140 case CFWL_MessageType::SetFocus: { |
| 1141 backDefault = FALSE; | 1141 backDefault = false; |
| 1142 DisForm_OnFocusChanged(pMessage, TRUE); | 1142 DisForm_OnFocusChanged(pMessage, true); |
| 1143 break; | 1143 break; |
| 1144 } | 1144 } |
| 1145 case CFWL_MessageType::KillFocus: { | 1145 case CFWL_MessageType::KillFocus: { |
| 1146 backDefault = FALSE; | 1146 backDefault = false; |
| 1147 DisForm_OnFocusChanged(pMessage, FALSE); | 1147 DisForm_OnFocusChanged(pMessage, false); |
| 1148 break; | 1148 break; |
| 1149 } | 1149 } |
| 1150 case CFWL_MessageType::Mouse: { | 1150 case CFWL_MessageType::Mouse: { |
| 1151 backDefault = FALSE; | 1151 backDefault = false; |
| 1152 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); | 1152 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); |
| 1153 switch (pMsg->m_dwCmd) { | 1153 switch (pMsg->m_dwCmd) { |
| 1154 case FWL_MouseCommand::LeftButtonDown: | 1154 case FWL_MouseCommand::LeftButtonDown: |
| 1155 DisForm_OnLButtonDown(pMsg); | 1155 DisForm_OnLButtonDown(pMsg); |
| 1156 break; | 1156 break; |
| 1157 case FWL_MouseCommand::LeftButtonUp: | 1157 case FWL_MouseCommand::LeftButtonUp: |
| 1158 OnLButtonUp(pMsg); | 1158 OnLButtonUp(pMsg); |
| 1159 break; | 1159 break; |
| 1160 default: | 1160 default: |
| 1161 break; | 1161 break; |
| 1162 } | 1162 } |
| 1163 break; | 1163 break; |
| 1164 } | 1164 } |
| 1165 case CFWL_MessageType::Key: { | 1165 case CFWL_MessageType::Key: { |
| 1166 backDefault = FALSE; | 1166 backDefault = false; |
| 1167 CFWL_MsgKey* pKey = static_cast<CFWL_MsgKey*>(pMessage); | 1167 CFWL_MsgKey* pKey = static_cast<CFWL_MsgKey*>(pMessage); |
| 1168 if (pKey->m_dwCmd == FWL_KeyCommand::KeyUp) | 1168 if (pKey->m_dwCmd == FWL_KeyCommand::KeyUp) |
| 1169 break; | 1169 break; |
| 1170 if (DisForm_IsDropListShowed() && | 1170 if (DisForm_IsDropListShowed() && |
| 1171 pKey->m_dwCmd == FWL_KeyCommand::KeyDown) { | 1171 pKey->m_dwCmd == FWL_KeyCommand::KeyDown) { |
| 1172 FX_BOOL bListKey = pKey->m_dwKeyCode == FWL_VKEY_Up || | 1172 bool bListKey = pKey->m_dwKeyCode == FWL_VKEY_Up || |
| 1173 pKey->m_dwKeyCode == FWL_VKEY_Down || | 1173 pKey->m_dwKeyCode == FWL_VKEY_Down || |
| 1174 pKey->m_dwKeyCode == FWL_VKEY_Return || | 1174 pKey->m_dwKeyCode == FWL_VKEY_Return || |
| 1175 pKey->m_dwKeyCode == FWL_VKEY_Escape; | 1175 pKey->m_dwKeyCode == FWL_VKEY_Escape; |
| 1176 if (bListKey) { | 1176 if (bListKey) { |
| 1177 m_pListBox->GetDelegate()->OnProcessMessage(pMessage); | 1177 m_pListBox->GetDelegate()->OnProcessMessage(pMessage); |
| 1178 break; | 1178 break; |
| 1179 } | 1179 } |
| 1180 } | 1180 } |
| 1181 DisForm_OnKey(pKey); | 1181 DisForm_OnKey(pKey); |
| 1182 break; | 1182 break; |
| 1183 } | 1183 } |
| 1184 default: | 1184 default: |
| 1185 break; | 1185 break; |
| 1186 } | 1186 } |
| 1187 if (backDefault) | 1187 if (backDefault) |
| 1188 IFWL_Widget::OnProcessMessage(pMessage); | 1188 IFWL_Widget::OnProcessMessage(pMessage); |
| 1189 } | 1189 } |
| 1190 | 1190 |
| 1191 void IFWL_ComboBox::DisForm_OnLButtonDown(CFWL_MsgMouse* pMsg) { | 1191 void IFWL_ComboBox::DisForm_OnLButtonDown(CFWL_MsgMouse* pMsg) { |
| 1192 FX_BOOL bDropDown = DisForm_IsDropListShowed(); | 1192 bool bDropDown = DisForm_IsDropListShowed(); |
| 1193 CFX_RectF& rtBtn = bDropDown ? m_rtBtn : m_rtClient; | 1193 CFX_RectF& rtBtn = bDropDown ? m_rtBtn : m_rtClient; |
| 1194 if (!rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) | 1194 if (!rtBtn.Contains(pMsg->m_fx, pMsg->m_fy)) |
| 1195 return; | 1195 return; |
| 1196 | 1196 |
| 1197 if (DisForm_IsDropListShowed()) { | 1197 if (DisForm_IsDropListShowed()) { |
| 1198 DisForm_ShowDropList(FALSE); | 1198 DisForm_ShowDropList(false); |
| 1199 return; | 1199 return; |
| 1200 } | 1200 } |
| 1201 if (m_pEdit) | 1201 if (m_pEdit) |
| 1202 MatchEditText(); | 1202 MatchEditText(); |
| 1203 DisForm_ShowDropList(TRUE); | 1203 DisForm_ShowDropList(true); |
| 1204 } | 1204 } |
| 1205 | 1205 |
| 1206 void IFWL_ComboBox::DisForm_OnFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet) { | 1206 void IFWL_ComboBox::DisForm_OnFocusChanged(CFWL_Message* pMsg, bool bSet) { |
| 1207 if (bSet) { | 1207 if (bSet) { |
| 1208 m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; | 1208 m_pProperties->m_dwStates |= FWL_WGTSTATE_Focused; |
| 1209 if ((m_pEdit->GetStates() & FWL_WGTSTATE_Focused) == 0) { | 1209 if ((m_pEdit->GetStates() & FWL_WGTSTATE_Focused) == 0) { |
| 1210 CFWL_MsgSetFocus msg; | 1210 CFWL_MsgSetFocus msg; |
| 1211 msg.m_pDstTarget = m_pEdit.get(); | 1211 msg.m_pDstTarget = m_pEdit.get(); |
| 1212 msg.m_pSrcTarget = nullptr; | 1212 msg.m_pSrcTarget = nullptr; |
| 1213 m_pEdit->GetDelegate()->OnProcessMessage(&msg); | 1213 m_pEdit->GetDelegate()->OnProcessMessage(&msg); |
| 1214 } | 1214 } |
| 1215 } else { | 1215 } else { |
| 1216 m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; | 1216 m_pProperties->m_dwStates &= ~FWL_WGTSTATE_Focused; |
| 1217 DisForm_ShowDropList(FALSE); | 1217 DisForm_ShowDropList(false); |
| 1218 CFWL_MsgKillFocus msg; | 1218 CFWL_MsgKillFocus msg; |
| 1219 msg.m_pDstTarget = nullptr; | 1219 msg.m_pDstTarget = nullptr; |
| 1220 msg.m_pSrcTarget = m_pEdit.get(); | 1220 msg.m_pSrcTarget = m_pEdit.get(); |
| 1221 m_pEdit->GetDelegate()->OnProcessMessage(&msg); | 1221 m_pEdit->GetDelegate()->OnProcessMessage(&msg); |
| 1222 } | 1222 } |
| 1223 } | 1223 } |
| 1224 | 1224 |
| 1225 void IFWL_ComboBox::DisForm_OnKey(CFWL_MsgKey* pMsg) { | 1225 void IFWL_ComboBox::DisForm_OnKey(CFWL_MsgKey* pMsg) { |
| 1226 uint32_t dwKeyCode = pMsg->m_dwKeyCode; | 1226 uint32_t dwKeyCode = pMsg->m_dwKeyCode; |
| 1227 const bool bUp = dwKeyCode == FWL_VKEY_Up; | 1227 const bool bUp = dwKeyCode == FWL_VKEY_Up; |
| 1228 const bool bDown = dwKeyCode == FWL_VKEY_Down; | 1228 const bool bDown = dwKeyCode == FWL_VKEY_Down; |
| 1229 if (bUp || bDown) { | 1229 if (bUp || bDown) { |
| 1230 IFWL_ComboList* pComboList = m_pListBox.get(); | 1230 IFWL_ComboList* pComboList = m_pListBox.get(); |
| 1231 int32_t iCount = pComboList->CountItems(); | 1231 int32_t iCount = pComboList->CountItems(); |
| 1232 if (iCount < 1) | 1232 if (iCount < 1) |
| 1233 return; | 1233 return; |
| 1234 | 1234 |
| 1235 FX_BOOL bMatchEqual = FALSE; | 1235 bool bMatchEqual = false; |
| 1236 int32_t iCurSel = m_iCurSel; | 1236 int32_t iCurSel = m_iCurSel; |
| 1237 if (m_pEdit) { | 1237 if (m_pEdit) { |
| 1238 CFX_WideString wsText; | 1238 CFX_WideString wsText; |
| 1239 m_pEdit->GetText(wsText); | 1239 m_pEdit->GetText(wsText); |
| 1240 iCurSel = pComboList->MatchItem(wsText); | 1240 iCurSel = pComboList->MatchItem(wsText); |
| 1241 if (iCurSel >= 0) { | 1241 if (iCurSel >= 0) { |
| 1242 CFX_WideString wsTemp; | 1242 CFX_WideString wsTemp; |
| 1243 IFWL_ListItem* item = m_pListBox->GetSelItem(iCurSel); | 1243 IFWL_ListItem* item = m_pListBox->GetSelItem(iCurSel); |
| 1244 m_pListBox->GetItemText(item, wsTemp); | 1244 m_pListBox->GetItemText(item, wsTemp); |
| 1245 bMatchEqual = wsText == wsTemp; | 1245 bMatchEqual = wsText == wsTemp; |
| 1246 } | 1246 } |
| 1247 } | 1247 } |
| 1248 if (iCurSel < 0) { | 1248 if (iCurSel < 0) { |
| 1249 iCurSel = 0; | 1249 iCurSel = 0; |
| 1250 } else if (bMatchEqual) { | 1250 } else if (bMatchEqual) { |
| 1251 if ((bUp && iCurSel == 0) || (bDown && iCurSel == iCount - 1)) | 1251 if ((bUp && iCurSel == 0) || (bDown && iCurSel == iCount - 1)) |
| 1252 return; | 1252 return; |
| 1253 if (bUp) | 1253 if (bUp) |
| 1254 iCurSel--; | 1254 iCurSel--; |
| 1255 else | 1255 else |
| 1256 iCurSel++; | 1256 iCurSel++; |
| 1257 } | 1257 } |
| 1258 m_iCurSel = iCurSel; | 1258 m_iCurSel = iCurSel; |
| 1259 SynchrEditText(m_iCurSel); | 1259 SynchrEditText(m_iCurSel); |
| 1260 return; | 1260 return; |
| 1261 } | 1261 } |
| 1262 if (m_pEdit) | 1262 if (m_pEdit) |
| 1263 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); | 1263 m_pEdit->GetDelegate()->OnProcessMessage(pMsg); |
| 1264 } | 1264 } |
| OLD | NEW |