| 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/basewidget/fwl_listboximp.h" | 7 #include "xfa/fwl/basewidget/fwl_listboximp.h" |
| 8 | 8 |
| 9 #include "xfa/fde/tto/fde_textout.h" | 9 #include "xfa/fde/tto/fde_textout.h" |
| 10 #include "xfa/fwl/basewidget/fwl_comboboximp.h" | 10 #include "xfa/fwl/basewidget/fwl_comboboximp.h" |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 m_pScrollBarTP(NULL) { | 73 m_pScrollBarTP(NULL) { |
| 74 m_rtClient.Reset(); | 74 m_rtClient.Reset(); |
| 75 m_rtConent.Reset(); | 75 m_rtConent.Reset(); |
| 76 m_rtStatic.Reset(); | 76 m_rtStatic.Reset(); |
| 77 } | 77 } |
| 78 CFWL_ListBoxImp::~CFWL_ListBoxImp() {} | 78 CFWL_ListBoxImp::~CFWL_ListBoxImp() {} |
| 79 FWL_ERR CFWL_ListBoxImp::GetClassName(CFX_WideString& wsClass) const { | 79 FWL_ERR CFWL_ListBoxImp::GetClassName(CFX_WideString& wsClass) const { |
| 80 wsClass = FWL_CLASS_ListBox; | 80 wsClass = FWL_CLASS_ListBox; |
| 81 return FWL_ERR_Succeeded; | 81 return FWL_ERR_Succeeded; |
| 82 } | 82 } |
| 83 FX_DWORD CFWL_ListBoxImp::GetClassID() const { | 83 uint32_t CFWL_ListBoxImp::GetClassID() const { |
| 84 return FWL_CLASSHASH_ListBox; | 84 return FWL_CLASSHASH_ListBox; |
| 85 } | 85 } |
| 86 FWL_ERR CFWL_ListBoxImp::Initialize() { | 86 FWL_ERR CFWL_ListBoxImp::Initialize() { |
| 87 if (CFWL_WidgetImp::Initialize() != FWL_ERR_Succeeded) | 87 if (CFWL_WidgetImp::Initialize() != FWL_ERR_Succeeded) |
| 88 return FWL_ERR_Indefinite; | 88 return FWL_ERR_Indefinite; |
| 89 m_pDelegate = new CFWL_ListBoxImpDelegate(this); | 89 m_pDelegate = new CFWL_ListBoxImpDelegate(this); |
| 90 return FWL_ERR_Succeeded; | 90 return FWL_ERR_Succeeded; |
| 91 } | 91 } |
| 92 FWL_ERR CFWL_ListBoxImp::Finalize() { | 92 FWL_ERR CFWL_ListBoxImp::Finalize() { |
| 93 if (m_pVertScrollBar) { | 93 if (m_pVertScrollBar) { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 } | 136 } |
| 137 if (m_pProperties->m_dwStyleExes & FWL_WGTSTYLE_RTLReading) { | 137 if (m_pProperties->m_dwStyleExes & FWL_WGTSTYLE_RTLReading) { |
| 138 m_dwTTOStyles |= FDE_TTOSTYLE_RTL; | 138 m_dwTTOStyles |= FDE_TTOSTYLE_RTL; |
| 139 } | 139 } |
| 140 m_dwTTOStyles |= FDE_TTOSTYLE_SingleLine; | 140 m_dwTTOStyles |= FDE_TTOSTYLE_SingleLine; |
| 141 m_fScorllBarWidth = GetScrollWidth(); | 141 m_fScorllBarWidth = GetScrollWidth(); |
| 142 SortItem(); | 142 SortItem(); |
| 143 CalcSize(); | 143 CalcSize(); |
| 144 return FWL_ERR_Succeeded; | 144 return FWL_ERR_Succeeded; |
| 145 } | 145 } |
| 146 FX_DWORD CFWL_ListBoxImp::HitTest(FX_FLOAT fx, FX_FLOAT fy) { | 146 uint32_t CFWL_ListBoxImp::HitTest(FX_FLOAT fx, FX_FLOAT fy) { |
| 147 if (IsShowScrollBar(FALSE)) { | 147 if (IsShowScrollBar(FALSE)) { |
| 148 CFX_RectF rect; | 148 CFX_RectF rect; |
| 149 m_pHorzScrollBar->GetWidgetRect(rect); | 149 m_pHorzScrollBar->GetWidgetRect(rect); |
| 150 if (rect.Contains(fx, fy)) { | 150 if (rect.Contains(fx, fy)) { |
| 151 return FWL_WGTHITTEST_HScrollBar; | 151 return FWL_WGTHITTEST_HScrollBar; |
| 152 } | 152 } |
| 153 } | 153 } |
| 154 if (IsShowScrollBar(TRUE)) { | 154 if (IsShowScrollBar(TRUE)) { |
| 155 CFX_RectF rect; | 155 CFX_RectF rect; |
| 156 m_pVertScrollBar->GetWidgetRect(rect); | 156 m_pVertScrollBar->GetWidgetRect(rect); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 return 0; | 210 return 0; |
| 211 int32_t iRet = 0; | 211 int32_t iRet = 0; |
| 212 IFWL_ListBoxDP* pData = | 212 IFWL_ListBoxDP* pData = |
| 213 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); | 213 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); |
| 214 int32_t iCount = pData->CountItems(m_pInterface); | 214 int32_t iCount = pData->CountItems(m_pInterface); |
| 215 for (int32_t i = 0; i < iCount; i++) { | 215 for (int32_t i = 0; i < iCount; i++) { |
| 216 FWL_HLISTITEM hItem = pData->GetItem(m_pInterface, i); | 216 FWL_HLISTITEM hItem = pData->GetItem(m_pInterface, i); |
| 217 if (!hItem) { | 217 if (!hItem) { |
| 218 continue; | 218 continue; |
| 219 } | 219 } |
| 220 FX_DWORD dwStyle = pData->GetItemStyles(m_pInterface, hItem); | 220 uint32_t dwStyle = pData->GetItemStyles(m_pInterface, hItem); |
| 221 if (dwStyle & FWL_ITEMSTATE_LTB_Selected) { | 221 if (dwStyle & FWL_ITEMSTATE_LTB_Selected) { |
| 222 iRet++; | 222 iRet++; |
| 223 } | 223 } |
| 224 } | 224 } |
| 225 return iRet; | 225 return iRet; |
| 226 } | 226 } |
| 227 FWL_HLISTITEM CFWL_ListBoxImp::GetSelItem(int32_t nIndexSel) { | 227 FWL_HLISTITEM CFWL_ListBoxImp::GetSelItem(int32_t nIndexSel) { |
| 228 if (!m_pProperties->m_pDataProvider) | 228 if (!m_pProperties->m_pDataProvider) |
| 229 return NULL; | 229 return NULL; |
| 230 int32_t index = 0; | 230 int32_t index = 0; |
| 231 IFWL_ListBoxDP* pData = | 231 IFWL_ListBoxDP* pData = |
| 232 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); | 232 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); |
| 233 int32_t iCount = pData->CountItems(m_pInterface); | 233 int32_t iCount = pData->CountItems(m_pInterface); |
| 234 for (int32_t i = 0; i < iCount; i++) { | 234 for (int32_t i = 0; i < iCount; i++) { |
| 235 FWL_HLISTITEM hItem = pData->GetItem(m_pInterface, i); | 235 FWL_HLISTITEM hItem = pData->GetItem(m_pInterface, i); |
| 236 if (!hItem) { | 236 if (!hItem) { |
| 237 return NULL; | 237 return NULL; |
| 238 } | 238 } |
| 239 FX_DWORD dwStyle = pData->GetItemStyles(m_pInterface, hItem); | 239 uint32_t dwStyle = pData->GetItemStyles(m_pInterface, hItem); |
| 240 if (dwStyle & FWL_ITEMSTATE_LTB_Selected) { | 240 if (dwStyle & FWL_ITEMSTATE_LTB_Selected) { |
| 241 if (index == nIndexSel) { | 241 if (index == nIndexSel) { |
| 242 return hItem; | 242 return hItem; |
| 243 } else { | 243 } else { |
| 244 index++; | 244 index++; |
| 245 } | 245 } |
| 246 } | 246 } |
| 247 } | 247 } |
| 248 return NULL; | 248 return NULL; |
| 249 } | 249 } |
| 250 int32_t CFWL_ListBoxImp::GetSelIndex(int32_t nIndex) { | 250 int32_t CFWL_ListBoxImp::GetSelIndex(int32_t nIndex) { |
| 251 if (!m_pProperties->m_pDataProvider) | 251 if (!m_pProperties->m_pDataProvider) |
| 252 return -1; | 252 return -1; |
| 253 int32_t index = 0; | 253 int32_t index = 0; |
| 254 IFWL_ListBoxDP* pData = | 254 IFWL_ListBoxDP* pData = |
| 255 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); | 255 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); |
| 256 int32_t iCount = pData->CountItems(m_pInterface); | 256 int32_t iCount = pData->CountItems(m_pInterface); |
| 257 for (int32_t i = 0; i < iCount; i++) { | 257 for (int32_t i = 0; i < iCount; i++) { |
| 258 FWL_HLISTITEM hItem = pData->GetItem(m_pInterface, i); | 258 FWL_HLISTITEM hItem = pData->GetItem(m_pInterface, i); |
| 259 if (!hItem) { | 259 if (!hItem) { |
| 260 return -1; | 260 return -1; |
| 261 } | 261 } |
| 262 FX_DWORD dwStyle = pData->GetItemStyles(m_pInterface, hItem); | 262 uint32_t dwStyle = pData->GetItemStyles(m_pInterface, hItem); |
| 263 if (dwStyle & FWL_ITEMSTATE_LTB_Selected) { | 263 if (dwStyle & FWL_ITEMSTATE_LTB_Selected) { |
| 264 if (index == nIndex) { | 264 if (index == nIndex) { |
| 265 return i; | 265 return i; |
| 266 } else { | 266 } else { |
| 267 index++; | 267 index++; |
| 268 } | 268 } |
| 269 } | 269 } |
| 270 } | 270 } |
| 271 return -1; | 271 return -1; |
| 272 } | 272 } |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 pData->GetItem(m_pInterface, j)) > 0) { | 320 pData->GetItem(m_pInterface, j)) > 0) { |
| 321 hTemp = pData->GetItem(m_pInterface, i); | 321 hTemp = pData->GetItem(m_pInterface, i); |
| 322 pData->SetItemIndex(m_pInterface, pData->GetItem(m_pInterface, j), i); | 322 pData->SetItemIndex(m_pInterface, pData->GetItem(m_pInterface, j), i); |
| 323 pData->SetItemIndex(m_pInterface, hTemp, j); | 323 pData->SetItemIndex(m_pInterface, hTemp, j); |
| 324 } | 324 } |
| 325 } | 325 } |
| 326 } | 326 } |
| 327 return FWL_ERR_Succeeded; | 327 return FWL_ERR_Succeeded; |
| 328 } | 328 } |
| 329 FWL_HLISTITEM CFWL_ListBoxImp::GetItem(FWL_HLISTITEM hItem, | 329 FWL_HLISTITEM CFWL_ListBoxImp::GetItem(FWL_HLISTITEM hItem, |
| 330 FX_DWORD dwKeyCode) { | 330 uint32_t dwKeyCode) { |
| 331 FWL_HLISTITEM hRet = NULL; | 331 FWL_HLISTITEM hRet = NULL; |
| 332 switch (dwKeyCode) { | 332 switch (dwKeyCode) { |
| 333 case FWL_VKEY_Up: | 333 case FWL_VKEY_Up: |
| 334 case FWL_VKEY_Down: | 334 case FWL_VKEY_Down: |
| 335 case FWL_VKEY_Home: | 335 case FWL_VKEY_Home: |
| 336 case FWL_VKEY_End: { | 336 case FWL_VKEY_End: { |
| 337 const bool bUp = dwKeyCode == FWL_VKEY_Up; | 337 const bool bUp = dwKeyCode == FWL_VKEY_Up; |
| 338 const bool bDown = dwKeyCode == FWL_VKEY_Down; | 338 const bool bDown = dwKeyCode == FWL_VKEY_Down; |
| 339 const bool bHome = dwKeyCode == FWL_VKEY_Home; | 339 const bool bHome = dwKeyCode == FWL_VKEY_Home; |
| 340 IFWL_ListBoxDP* pData = | 340 IFWL_ListBoxDP* pData = |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 } | 376 } |
| 377 } | 377 } |
| 378 for (; iStart <= iEnd; iStart++) { | 378 for (; iStart <= iEnd; iStart++) { |
| 379 FWL_HLISTITEM hItem = pData->GetItem(m_pInterface, iStart); | 379 FWL_HLISTITEM hItem = pData->GetItem(m_pInterface, iStart); |
| 380 SetSelectionDirect(hItem, bSelected); | 380 SetSelectionDirect(hItem, bSelected); |
| 381 } | 381 } |
| 382 } | 382 } |
| 383 void CFWL_ListBoxImp::SetSelectionDirect(FWL_HLISTITEM hItem, FX_BOOL bSelect) { | 383 void CFWL_ListBoxImp::SetSelectionDirect(FWL_HLISTITEM hItem, FX_BOOL bSelect) { |
| 384 IFWL_ListBoxDP* pData = | 384 IFWL_ListBoxDP* pData = |
| 385 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); | 385 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); |
| 386 FX_DWORD dwOldStyle = pData->GetItemStyles(m_pInterface, hItem); | 386 uint32_t dwOldStyle = pData->GetItemStyles(m_pInterface, hItem); |
| 387 bSelect ? dwOldStyle |= FWL_ITEMSTATE_LTB_Selected | 387 bSelect ? dwOldStyle |= FWL_ITEMSTATE_LTB_Selected |
| 388 : dwOldStyle &= ~FWL_ITEMSTATE_LTB_Selected; | 388 : dwOldStyle &= ~FWL_ITEMSTATE_LTB_Selected; |
| 389 pData->SetItemStyles(m_pInterface, hItem, dwOldStyle); | 389 pData->SetItemStyles(m_pInterface, hItem, dwOldStyle); |
| 390 } | 390 } |
| 391 FX_BOOL CFWL_ListBoxImp::IsItemSelected(FWL_HLISTITEM hItem) { | 391 FX_BOOL CFWL_ListBoxImp::IsItemSelected(FWL_HLISTITEM hItem) { |
| 392 IFWL_ListBoxDP* pData = | 392 IFWL_ListBoxDP* pData = |
| 393 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); | 393 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); |
| 394 FX_DWORD dwState = pData->GetItemStyles(m_pInterface, hItem); | 394 uint32_t dwState = pData->GetItemStyles(m_pInterface, hItem); |
| 395 return (dwState & FWL_ITEMSTATE_LTB_Selected) != 0; | 395 return (dwState & FWL_ITEMSTATE_LTB_Selected) != 0; |
| 396 } | 396 } |
| 397 void CFWL_ListBoxImp::ClearSelection() { | 397 void CFWL_ListBoxImp::ClearSelection() { |
| 398 FX_BOOL bMulti = | 398 FX_BOOL bMulti = |
| 399 m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection; | 399 m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection; |
| 400 IFWL_ListBoxDP* pData = | 400 IFWL_ListBoxDP* pData = |
| 401 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); | 401 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); |
| 402 int32_t iCount = pData->CountItems(m_pInterface); | 402 int32_t iCount = pData->CountItems(m_pInterface); |
| 403 for (int32_t i = 0; i < iCount; i++) { | 403 for (int32_t i = 0; i < iCount; i++) { |
| 404 FWL_HLISTITEM hItem = pData->GetItem(m_pInterface, i); | 404 FWL_HLISTITEM hItem = pData->GetItem(m_pInterface, i); |
| 405 FX_DWORD dwState = pData->GetItemStyles(m_pInterface, hItem); | 405 uint32_t dwState = pData->GetItemStyles(m_pInterface, hItem); |
| 406 FX_BOOL bFindSel = dwState & FWL_ITEMSTATE_LTB_Selected; | 406 FX_BOOL bFindSel = dwState & FWL_ITEMSTATE_LTB_Selected; |
| 407 if (!bFindSel) { | 407 if (!bFindSel) { |
| 408 continue; | 408 continue; |
| 409 } | 409 } |
| 410 SetSelectionDirect(hItem, FALSE); | 410 SetSelectionDirect(hItem, FALSE); |
| 411 if (!bMulti) { | 411 if (!bMulti) { |
| 412 return; | 412 return; |
| 413 } | 413 } |
| 414 } | 414 } |
| 415 } | 415 } |
| (...skipping 25 matching lines...) Expand all Loading... |
| 441 } | 441 } |
| 442 } | 442 } |
| 443 return NULL; | 443 return NULL; |
| 444 } | 444 } |
| 445 void CFWL_ListBoxImp::SetFocusItem(FWL_HLISTITEM hItem) { | 445 void CFWL_ListBoxImp::SetFocusItem(FWL_HLISTITEM hItem) { |
| 446 IFWL_ListBoxDP* pData = | 446 IFWL_ListBoxDP* pData = |
| 447 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); | 447 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); |
| 448 FWL_HLISTITEM hFocus = GetFocusedItem(); | 448 FWL_HLISTITEM hFocus = GetFocusedItem(); |
| 449 if (hItem != hFocus) { | 449 if (hItem != hFocus) { |
| 450 if (hFocus) { | 450 if (hFocus) { |
| 451 FX_DWORD dwStyle = pData->GetItemStyles(m_pInterface, hFocus); | 451 uint32_t dwStyle = pData->GetItemStyles(m_pInterface, hFocus); |
| 452 dwStyle &= ~FWL_ITEMSTATE_LTB_Focused; | 452 dwStyle &= ~FWL_ITEMSTATE_LTB_Focused; |
| 453 pData->SetItemStyles(m_pInterface, hFocus, dwStyle); | 453 pData->SetItemStyles(m_pInterface, hFocus, dwStyle); |
| 454 } | 454 } |
| 455 if (hItem) { | 455 if (hItem) { |
| 456 FX_DWORD dwStyle = pData->GetItemStyles(m_pInterface, hItem); | 456 uint32_t dwStyle = pData->GetItemStyles(m_pInterface, hItem); |
| 457 dwStyle |= FWL_ITEMSTATE_LTB_Focused; | 457 dwStyle |= FWL_ITEMSTATE_LTB_Focused; |
| 458 pData->SetItemStyles(m_pInterface, hItem, dwStyle); | 458 pData->SetItemStyles(m_pInterface, hItem, dwStyle); |
| 459 } | 459 } |
| 460 } | 460 } |
| 461 } | 461 } |
| 462 FWL_HLISTITEM CFWL_ListBoxImp::GetItemAtPoint(FX_FLOAT fx, FX_FLOAT fy) { | 462 FWL_HLISTITEM CFWL_ListBoxImp::GetItemAtPoint(FX_FLOAT fx, FX_FLOAT fy) { |
| 463 fx -= m_rtConent.left, fy -= m_rtConent.top; | 463 fx -= m_rtConent.left, fy -= m_rtConent.top; |
| 464 FX_FLOAT fPosX = 0.0f; | 464 FX_FLOAT fPosX = 0.0f; |
| 465 if (m_pHorzScrollBar) { | 465 if (m_pHorzScrollBar) { |
| 466 fPosX = m_pHorzScrollBar->GetPos(); | 466 fPosX = m_pHorzScrollBar->GetPos(); |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 622 } | 622 } |
| 623 } | 623 } |
| 624 void CFWL_ListBoxImp::DrawItem(CFX_Graphics* pGraphics, | 624 void CFWL_ListBoxImp::DrawItem(CFX_Graphics* pGraphics, |
| 625 IFWL_ThemeProvider* pTheme, | 625 IFWL_ThemeProvider* pTheme, |
| 626 FWL_HLISTITEM hItem, | 626 FWL_HLISTITEM hItem, |
| 627 int32_t Index, | 627 int32_t Index, |
| 628 const CFX_RectF& rtItem, | 628 const CFX_RectF& rtItem, |
| 629 const CFX_Matrix* pMatrix) { | 629 const CFX_Matrix* pMatrix) { |
| 630 IFWL_ListBoxDP* pData = | 630 IFWL_ListBoxDP* pData = |
| 631 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); | 631 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); |
| 632 FX_DWORD dwItemStyles = pData->GetItemStyles(m_pInterface, hItem); | 632 uint32_t dwItemStyles = pData->GetItemStyles(m_pInterface, hItem); |
| 633 FX_DWORD dwPartStates = FWL_PARTSTATE_LTB_Normal; | 633 uint32_t dwPartStates = FWL_PARTSTATE_LTB_Normal; |
| 634 if (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled) { | 634 if (m_pProperties->m_dwStates & FWL_WGTSTATE_Disabled) { |
| 635 dwPartStates = FWL_PARTSTATE_LTB_Disabled; | 635 dwPartStates = FWL_PARTSTATE_LTB_Disabled; |
| 636 } else if (dwItemStyles & FWL_ITEMSTATE_LTB_Selected) { | 636 } else if (dwItemStyles & FWL_ITEMSTATE_LTB_Selected) { |
| 637 dwPartStates = FWL_PARTSTATE_LTB_Selected; | 637 dwPartStates = FWL_PARTSTATE_LTB_Selected; |
| 638 } | 638 } |
| 639 if (m_pProperties->m_dwStates & FWL_WGTSTATE_Focused && | 639 if (m_pProperties->m_dwStates & FWL_WGTSTATE_Focused && |
| 640 dwItemStyles & FWL_ITEMSTATE_LTB_Focused) { | 640 dwItemStyles & FWL_ITEMSTATE_LTB_Focused) { |
| 641 dwPartStates |= FWL_PARTSTATE_LTB_Focused; | 641 dwPartStates |= FWL_PARTSTATE_LTB_Focused; |
| 642 } | 642 } |
| 643 FWL_ListBoxItemData itemData; | 643 FWL_ListBoxItemData itemData; |
| 644 itemData.pDataProvider = pData; | 644 itemData.pDataProvider = pData; |
| 645 itemData.iIndex = Index; | 645 itemData.iIndex = Index; |
| 646 { | 646 { |
| 647 CFWL_ThemeBackground param; | 647 CFWL_ThemeBackground param; |
| 648 param.m_pWidget = m_pInterface; | 648 param.m_pWidget = m_pInterface; |
| 649 param.m_iPart = FWL_PART_LTB_ListItem; | 649 param.m_iPart = FWL_PART_LTB_ListItem; |
| 650 param.m_dwStates = dwPartStates; | 650 param.m_dwStates = dwPartStates; |
| 651 param.m_pGraphics = pGraphics; | 651 param.m_pGraphics = pGraphics; |
| 652 param.m_matrix.Concat(*pMatrix); | 652 param.m_matrix.Concat(*pMatrix); |
| 653 param.m_rtPart = rtItem; | 653 param.m_rtPart = rtItem; |
| 654 param.m_dwData = (FX_DWORD)(uintptr_t)(&itemData); | 654 param.m_dwData = (uint32_t)(uintptr_t)(&itemData); |
| 655 CFX_RectF rtFocus(rtItem); | 655 CFX_RectF rtFocus(rtItem); |
| 656 param.m_pData = &rtFocus; | 656 param.m_pData = &rtFocus; |
| 657 if (m_pVertScrollBar && !m_pHorzScrollBar && | 657 if (m_pVertScrollBar && !m_pHorzScrollBar && |
| 658 (dwPartStates & FWL_PARTSTATE_LTB_Focused)) { | 658 (dwPartStates & FWL_PARTSTATE_LTB_Focused)) { |
| 659 param.m_rtPart.left += 1; | 659 param.m_rtPart.left += 1; |
| 660 param.m_rtPart.width -= (m_fScorllBarWidth + 1); | 660 param.m_rtPart.width -= (m_fScorllBarWidth + 1); |
| 661 rtFocus.Deflate(0.5, 0.5, 1 + m_fScorllBarWidth, 1); | 661 rtFocus.Deflate(0.5, 0.5, 1 + m_fScorllBarWidth, 1); |
| 662 } | 662 } |
| 663 pTheme->DrawBackground(¶m); | 663 pTheme->DrawBackground(¶m); |
| 664 } | 664 } |
| 665 { | 665 { |
| 666 FX_BOOL bHasIcon = GetStylesEx() & FWL_STYLEEXT_LTB_Icon; | 666 FX_BOOL bHasIcon = GetStylesEx() & FWL_STYLEEXT_LTB_Icon; |
| 667 if (bHasIcon) { | 667 if (bHasIcon) { |
| 668 CFX_RectF rtDIB; | 668 CFX_RectF rtDIB; |
| 669 CFX_DIBitmap* pDib = pData->GetItemIcon(m_pInterface, hItem); | 669 CFX_DIBitmap* pDib = pData->GetItemIcon(m_pInterface, hItem); |
| 670 rtDIB.Set(rtItem.left, rtItem.top, rtItem.height, rtItem.height); | 670 rtDIB.Set(rtItem.left, rtItem.top, rtItem.height, rtItem.height); |
| 671 if (pDib) { | 671 if (pDib) { |
| 672 CFWL_ThemeBackground param; | 672 CFWL_ThemeBackground param; |
| 673 param.m_pWidget = m_pInterface; | 673 param.m_pWidget = m_pInterface; |
| 674 param.m_iPart = FWL_PART_LTB_Icon; | 674 param.m_iPart = FWL_PART_LTB_Icon; |
| 675 param.m_pGraphics = pGraphics; | 675 param.m_pGraphics = pGraphics; |
| 676 param.m_matrix.Concat(*pMatrix); | 676 param.m_matrix.Concat(*pMatrix); |
| 677 param.m_rtPart = rtDIB; | 677 param.m_rtPart = rtDIB; |
| 678 param.m_dwData = (FX_DWORD)(uintptr_t)(&itemData); | 678 param.m_dwData = (uint32_t)(uintptr_t)(&itemData); |
| 679 param.m_pImage = pDib; | 679 param.m_pImage = pDib; |
| 680 pTheme->DrawBackground(¶m); | 680 pTheme->DrawBackground(¶m); |
| 681 } | 681 } |
| 682 } | 682 } |
| 683 FX_BOOL bHasCheck = GetStylesEx() & FWL_STYLEEXT_LTB_Check; | 683 FX_BOOL bHasCheck = GetStylesEx() & FWL_STYLEEXT_LTB_Check; |
| 684 if (bHasCheck) { | 684 if (bHasCheck) { |
| 685 CFX_RectF rtCheck; | 685 CFX_RectF rtCheck; |
| 686 rtCheck.Set(rtItem.left, rtItem.top, rtItem.height, rtItem.height); | 686 rtCheck.Set(rtItem.left, rtItem.top, rtItem.height, rtItem.height); |
| 687 rtCheck.Deflate(2, 2, 2, 2); | 687 rtCheck.Deflate(2, 2, 2, 2); |
| 688 pData->SetItemCheckRect(m_pInterface, hItem, rtCheck); | 688 pData->SetItemCheckRect(m_pInterface, hItem, rtCheck); |
| 689 CFWL_ThemeBackground param; | 689 CFWL_ThemeBackground param; |
| 690 param.m_pWidget = m_pInterface; | 690 param.m_pWidget = m_pInterface; |
| 691 param.m_iPart = FWL_PART_LTB_Check; | 691 param.m_iPart = FWL_PART_LTB_Check; |
| 692 param.m_pGraphics = pGraphics; | 692 param.m_pGraphics = pGraphics; |
| 693 if (GetItemChecked(hItem)) { | 693 if (GetItemChecked(hItem)) { |
| 694 param.m_dwStates = FWL_PARTSTATE_LTB_Checked; | 694 param.m_dwStates = FWL_PARTSTATE_LTB_Checked; |
| 695 } else { | 695 } else { |
| 696 param.m_dwStates = FWL_PARTSTATE_LTB_UnChecked; | 696 param.m_dwStates = FWL_PARTSTATE_LTB_UnChecked; |
| 697 } | 697 } |
| 698 param.m_matrix.Concat(*pMatrix); | 698 param.m_matrix.Concat(*pMatrix); |
| 699 param.m_rtPart = rtCheck; | 699 param.m_rtPart = rtCheck; |
| 700 param.m_dwData = (FX_DWORD)(uintptr_t)(&itemData); | 700 param.m_dwData = (uint32_t)(uintptr_t)(&itemData); |
| 701 pTheme->DrawBackground(¶m); | 701 pTheme->DrawBackground(¶m); |
| 702 } | 702 } |
| 703 CFX_WideString wsText; | 703 CFX_WideString wsText; |
| 704 pData->GetItemText(m_pInterface, hItem, wsText); | 704 pData->GetItemText(m_pInterface, hItem, wsText); |
| 705 if (wsText.GetLength() <= 0) { | 705 if (wsText.GetLength() <= 0) { |
| 706 return; | 706 return; |
| 707 } | 707 } |
| 708 CFX_RectF rtText(rtItem); | 708 CFX_RectF rtText(rtItem); |
| 709 rtText.Deflate(FWL_LISTBOX_ItemTextMargin, FWL_LISTBOX_ItemTextMargin); | 709 rtText.Deflate(FWL_LISTBOX_ItemTextMargin, FWL_LISTBOX_ItemTextMargin); |
| 710 if (bHasIcon || bHasCheck) { | 710 if (bHasIcon || bHasCheck) { |
| 711 rtText.Deflate(rtItem.height, 0, 0, 0); | 711 rtText.Deflate(rtItem.height, 0, 0, 0); |
| 712 } | 712 } |
| 713 CFWL_ThemeText textParam; | 713 CFWL_ThemeText textParam; |
| 714 textParam.m_pWidget = m_pInterface; | 714 textParam.m_pWidget = m_pInterface; |
| 715 textParam.m_iPart = FWL_PART_LTB_ListItem; | 715 textParam.m_iPart = FWL_PART_LTB_ListItem; |
| 716 textParam.m_dwStates = dwPartStates; | 716 textParam.m_dwStates = dwPartStates; |
| 717 textParam.m_pGraphics = pGraphics; | 717 textParam.m_pGraphics = pGraphics; |
| 718 textParam.m_matrix.Concat(*pMatrix); | 718 textParam.m_matrix.Concat(*pMatrix); |
| 719 textParam.m_rtPart = rtText; | 719 textParam.m_rtPart = rtText; |
| 720 textParam.m_wsText = wsText; | 720 textParam.m_wsText = wsText; |
| 721 textParam.m_dwTTOStyles = m_dwTTOStyles; | 721 textParam.m_dwTTOStyles = m_dwTTOStyles; |
| 722 textParam.m_iTTOAlign = m_iTTOAligns; | 722 textParam.m_iTTOAlign = m_iTTOAligns; |
| 723 textParam.m_dwData = (FX_DWORD)(uintptr_t)(&itemData); | 723 textParam.m_dwData = (uint32_t)(uintptr_t)(&itemData); |
| 724 pTheme->DrawText(&textParam); | 724 pTheme->DrawText(&textParam); |
| 725 } | 725 } |
| 726 } | 726 } |
| 727 CFX_SizeF CFWL_ListBoxImp::CalcSize(FX_BOOL bAutoSize) { | 727 CFX_SizeF CFWL_ListBoxImp::CalcSize(FX_BOOL bAutoSize) { |
| 728 CFX_SizeF fs; | 728 CFX_SizeF fs; |
| 729 if (!m_pProperties->m_pThemeProvider) | 729 if (!m_pProperties->m_pThemeProvider) |
| 730 return fs; | 730 return fs; |
| 731 | 731 |
| 732 GetClientRect(m_rtClient); | 732 GetClientRect(m_rtClient); |
| 733 m_rtConent = m_rtClient; | 733 m_rtConent = m_rtClient; |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 983 DispatchEvent(&selEvent); | 983 DispatchEvent(&selEvent); |
| 984 } | 984 } |
| 985 CFWL_ListBoxImpDelegate::CFWL_ListBoxImpDelegate(CFWL_ListBoxImp* pOwner) | 985 CFWL_ListBoxImpDelegate::CFWL_ListBoxImpDelegate(CFWL_ListBoxImp* pOwner) |
| 986 : m_pOwner(pOwner) {} | 986 : m_pOwner(pOwner) {} |
| 987 int32_t CFWL_ListBoxImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { | 987 int32_t CFWL_ListBoxImpDelegate::OnProcessMessage(CFWL_Message* pMessage) { |
| 988 if (!pMessage) | 988 if (!pMessage) |
| 989 return 0; | 989 return 0; |
| 990 if (!m_pOwner->IsEnabled()) { | 990 if (!m_pOwner->IsEnabled()) { |
| 991 return 1; | 991 return 1; |
| 992 } | 992 } |
| 993 FX_DWORD dwMsgCode = pMessage->GetClassID(); | 993 uint32_t dwMsgCode = pMessage->GetClassID(); |
| 994 int32_t iRet = 1; | 994 int32_t iRet = 1; |
| 995 switch (dwMsgCode) { | 995 switch (dwMsgCode) { |
| 996 case FWL_MSGHASH_SetFocus: | 996 case FWL_MSGHASH_SetFocus: |
| 997 case FWL_MSGHASH_KillFocus: { | 997 case FWL_MSGHASH_KillFocus: { |
| 998 OnFocusChanged(pMessage, dwMsgCode == FWL_MSGHASH_SetFocus); | 998 OnFocusChanged(pMessage, dwMsgCode == FWL_MSGHASH_SetFocus); |
| 999 break; | 999 break; |
| 1000 } | 1000 } |
| 1001 case FWL_MSGHASH_Mouse: { | 1001 case FWL_MSGHASH_Mouse: { |
| 1002 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); | 1002 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); |
| 1003 FX_DWORD dwCmd = pMsg->m_dwCmd; | 1003 uint32_t dwCmd = pMsg->m_dwCmd; |
| 1004 switch (dwCmd) { | 1004 switch (dwCmd) { |
| 1005 case FWL_MSGMOUSECMD_LButtonDown: { | 1005 case FWL_MSGMOUSECMD_LButtonDown: { |
| 1006 OnLButtonDown(pMsg); | 1006 OnLButtonDown(pMsg); |
| 1007 break; | 1007 break; |
| 1008 } | 1008 } |
| 1009 case FWL_MSGMOUSECMD_LButtonUp: { | 1009 case FWL_MSGMOUSECMD_LButtonUp: { |
| 1010 OnLButtonUp(pMsg); | 1010 OnLButtonUp(pMsg); |
| 1011 break; | 1011 break; |
| 1012 } | 1012 } |
| 1013 default: {} | 1013 default: {} |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1124 } | 1124 } |
| 1125 void CFWL_ListBoxImpDelegate::OnMouseWheel(CFWL_MsgMouseWheel* pMsg) { | 1125 void CFWL_ListBoxImpDelegate::OnMouseWheel(CFWL_MsgMouseWheel* pMsg) { |
| 1126 if (!m_pOwner->IsShowScrollBar(TRUE)) { | 1126 if (!m_pOwner->IsShowScrollBar(TRUE)) { |
| 1127 return; | 1127 return; |
| 1128 } | 1128 } |
| 1129 IFWL_WidgetDelegate* pDelegate = | 1129 IFWL_WidgetDelegate* pDelegate = |
| 1130 m_pOwner->m_pVertScrollBar->SetDelegate(NULL); | 1130 m_pOwner->m_pVertScrollBar->SetDelegate(NULL); |
| 1131 pDelegate->OnProcessMessage(pMsg); | 1131 pDelegate->OnProcessMessage(pMsg); |
| 1132 } | 1132 } |
| 1133 void CFWL_ListBoxImpDelegate::OnKeyDown(CFWL_MsgKey* pMsg) { | 1133 void CFWL_ListBoxImpDelegate::OnKeyDown(CFWL_MsgKey* pMsg) { |
| 1134 FX_DWORD dwKeyCode = pMsg->m_dwKeyCode; | 1134 uint32_t dwKeyCode = pMsg->m_dwKeyCode; |
| 1135 switch (dwKeyCode) { | 1135 switch (dwKeyCode) { |
| 1136 case FWL_VKEY_Tab: | 1136 case FWL_VKEY_Tab: |
| 1137 case FWL_VKEY_Up: | 1137 case FWL_VKEY_Up: |
| 1138 case FWL_VKEY_Down: | 1138 case FWL_VKEY_Down: |
| 1139 case FWL_VKEY_Home: | 1139 case FWL_VKEY_Home: |
| 1140 case FWL_VKEY_End: { | 1140 case FWL_VKEY_End: { |
| 1141 FWL_HLISTITEM hItem = m_pOwner->GetFocusedItem(); | 1141 FWL_HLISTITEM hItem = m_pOwner->GetFocusedItem(); |
| 1142 hItem = m_pOwner->GetItem(hItem, dwKeyCode); | 1142 hItem = m_pOwner->GetItem(hItem, dwKeyCode); |
| 1143 FX_BOOL bShift = pMsg->m_dwFlags & FWL_KEYFLAG_Shift; | 1143 FX_BOOL bShift = pMsg->m_dwFlags & FWL_KEYFLAG_Shift; |
| 1144 FX_BOOL bCtrl = pMsg->m_dwFlags & FWL_KEYFLAG_Ctrl; | 1144 FX_BOOL bCtrl = pMsg->m_dwFlags & FWL_KEYFLAG_Ctrl; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1175 m_pOwner->SetFocusItem(hItem); | 1175 m_pOwner->SetFocusItem(hItem); |
| 1176 m_pOwner->ScrollToVisible(hItem); | 1176 m_pOwner->ScrollToVisible(hItem); |
| 1177 { | 1177 { |
| 1178 CFX_RectF rtInvalidate; | 1178 CFX_RectF rtInvalidate; |
| 1179 rtInvalidate.Set(0, 0, m_pOwner->m_pProperties->m_rtWidget.width, | 1179 rtInvalidate.Set(0, 0, m_pOwner->m_pProperties->m_rtWidget.width, |
| 1180 m_pOwner->m_pProperties->m_rtWidget.height); | 1180 m_pOwner->m_pProperties->m_rtWidget.height); |
| 1181 m_pOwner->Repaint(&rtInvalidate); | 1181 m_pOwner->Repaint(&rtInvalidate); |
| 1182 } | 1182 } |
| 1183 } | 1183 } |
| 1184 FX_BOOL CFWL_ListBoxImpDelegate::OnScroll(IFWL_ScrollBar* pScrollBar, | 1184 FX_BOOL CFWL_ListBoxImpDelegate::OnScroll(IFWL_ScrollBar* pScrollBar, |
| 1185 FX_DWORD dwCode, | 1185 uint32_t dwCode, |
| 1186 FX_FLOAT fPos) { | 1186 FX_FLOAT fPos) { |
| 1187 CFX_SizeF fs; | 1187 CFX_SizeF fs; |
| 1188 pScrollBar->GetRange(fs.x, fs.y); | 1188 pScrollBar->GetRange(fs.x, fs.y); |
| 1189 FX_FLOAT iCurPos = pScrollBar->GetPos(); | 1189 FX_FLOAT iCurPos = pScrollBar->GetPos(); |
| 1190 FX_FLOAT fStep = pScrollBar->GetStepSize(); | 1190 FX_FLOAT fStep = pScrollBar->GetStepSize(); |
| 1191 switch (dwCode) { | 1191 switch (dwCode) { |
| 1192 case FWL_SCBCODE_Min: { | 1192 case FWL_SCBCODE_Min: { |
| 1193 fPos = fs.x; | 1193 fPos = fs.x; |
| 1194 break; | 1194 break; |
| 1195 } | 1195 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1236 pScrollBar->SetTrackPos(fPos); | 1236 pScrollBar->SetTrackPos(fPos); |
| 1237 m_pOwner->Repaint(&m_pOwner->m_rtClient); | 1237 m_pOwner->Repaint(&m_pOwner->m_rtClient); |
| 1238 } | 1238 } |
| 1239 return TRUE; | 1239 return TRUE; |
| 1240 } | 1240 } |
| 1241 void CFWL_ListBoxImpDelegate::DispatchSelChangedEv() { | 1241 void CFWL_ListBoxImpDelegate::DispatchSelChangedEv() { |
| 1242 CFWL_EvtLtbSelChanged ev; | 1242 CFWL_EvtLtbSelChanged ev; |
| 1243 ev.m_pSrcTarget = m_pOwner->m_pInterface; | 1243 ev.m_pSrcTarget = m_pOwner->m_pInterface; |
| 1244 m_pOwner->DispatchEvent(&ev); | 1244 m_pOwner->DispatchEvent(&ev); |
| 1245 } | 1245 } |
| OLD | NEW |