| 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_listbox.h" | 7 #include "xfa/fwl/core/ifwl_listbox.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 SetFocusItem(nullptr); | 208 SetFocusItem(nullptr); |
| 209 } | 209 } |
| 210 return; | 210 return; |
| 211 } | 211 } |
| 212 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection) | 212 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection) |
| 213 SetSelectionDirect(pItem, bSelect); | 213 SetSelectionDirect(pItem, bSelect); |
| 214 else | 214 else |
| 215 SetSelection(pItem, pItem, bSelect); | 215 SetSelection(pItem, pItem, bSelect); |
| 216 } | 216 } |
| 217 | 217 |
| 218 void IFWL_ListBox::GetItemText(CFWL_ListItem* pItem, CFX_WideString& wsText) { | 218 void IFWL_ListBox::GetDataProviderItemText(CFWL_ListItem* pItem, |
| 219 CFX_WideString& wsText) { |
| 219 if (!m_pProperties->m_pDataProvider) | 220 if (!m_pProperties->m_pDataProvider) |
| 220 return; | 221 return; |
| 221 | 222 |
| 222 IFWL_ListBox::DataProvider* pData = | 223 IFWL_ListBox::DataProvider* pData = |
| 223 static_cast<IFWL_ListBox::DataProvider*>(m_pProperties->m_pDataProvider); | 224 static_cast<IFWL_ListBox::DataProvider*>(m_pProperties->m_pDataProvider); |
| 224 if (!pItem) | 225 if (!pItem) |
| 225 return; | 226 return; |
| 226 | 227 |
| 227 pData->GetItemText(this, pItem, wsText); | 228 pData->GetItemText(this, pItem, wsText); |
| 228 } | 229 } |
| 229 | 230 |
| 230 CFWL_ListItem* IFWL_ListBox::GetItem(CFWL_ListItem* pItem, uint32_t dwKeyCode) { | 231 CFWL_ListItem* IFWL_ListBox::GetListItem(CFWL_ListItem* pItem, |
| 232 uint32_t dwKeyCode) { |
| 231 CFWL_ListItem* hRet = nullptr; | 233 CFWL_ListItem* hRet = nullptr; |
| 232 switch (dwKeyCode) { | 234 switch (dwKeyCode) { |
| 233 case FWL_VKEY_Up: | 235 case FWL_VKEY_Up: |
| 234 case FWL_VKEY_Down: | 236 case FWL_VKEY_Down: |
| 235 case FWL_VKEY_Home: | 237 case FWL_VKEY_Home: |
| 236 case FWL_VKEY_End: { | 238 case FWL_VKEY_End: { |
| 237 const bool bUp = dwKeyCode == FWL_VKEY_Up; | 239 const bool bUp = dwKeyCode == FWL_VKEY_Up; |
| 238 const bool bDown = dwKeyCode == FWL_VKEY_Down; | 240 const bool bDown = dwKeyCode == FWL_VKEY_Down; |
| 239 const bool bHome = dwKeyCode == FWL_VKEY_Home; | 241 const bool bHome = dwKeyCode == FWL_VKEY_Home; |
| 240 IFWL_ListBox::DataProvider* pData = | 242 IFWL_ListBox::DataProvider* pData = |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 | 386 |
| 385 CFX_RectF rtItem; | 387 CFX_RectF rtItem; |
| 386 pData->GetItemRect(this, pItem, rtItem); | 388 pData->GetItemRect(this, pItem, rtItem); |
| 387 rtItem.Offset(-fPosX, -fPosY); | 389 rtItem.Offset(-fPosX, -fPosY); |
| 388 if (rtItem.Contains(fx, fy)) | 390 if (rtItem.Contains(fx, fy)) |
| 389 return pItem; | 391 return pItem; |
| 390 } | 392 } |
| 391 return nullptr; | 393 return nullptr; |
| 392 } | 394 } |
| 393 | 395 |
| 394 bool IFWL_ListBox::GetItemCheckRect(CFWL_ListItem* pItem, CFX_RectF& rtCheck) { | 396 bool IFWL_ListBox::GetItemCheckRectInternal(CFWL_ListItem* pItem, |
| 397 CFX_RectF& rtCheck) { |
| 395 if (!m_pProperties->m_pDataProvider) | 398 if (!m_pProperties->m_pDataProvider) |
| 396 return false; | 399 return false; |
| 397 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check)) | 400 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check)) |
| 398 return false; | 401 return false; |
| 399 | 402 |
| 400 IFWL_ListBox::DataProvider* pData = | 403 IFWL_ListBox::DataProvider* pData = |
| 401 static_cast<IFWL_ListBox::DataProvider*>(m_pProperties->m_pDataProvider); | 404 static_cast<IFWL_ListBox::DataProvider*>(m_pProperties->m_pDataProvider); |
| 402 pData->GetItemCheckRect(this, pItem, rtCheck); | 405 pData->GetItemCheckRect(this, pItem, rtCheck); |
| 403 return true; | 406 return true; |
| 404 } | 407 } |
| (...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 928 } else { | 931 } else { |
| 929 SetSelection(pItem, pItem, true); | 932 SetSelection(pItem, pItem, true); |
| 930 m_hAnchor = pItem; | 933 m_hAnchor = pItem; |
| 931 } | 934 } |
| 932 } else { | 935 } else { |
| 933 SetSelection(pItem, pItem, true); | 936 SetSelection(pItem, pItem, true); |
| 934 } | 937 } |
| 935 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check) { | 938 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check) { |
| 936 CFWL_ListItem* hSelectedItem = GetItemAtPoint(pMsg->m_fx, pMsg->m_fy); | 939 CFWL_ListItem* hSelectedItem = GetItemAtPoint(pMsg->m_fx, pMsg->m_fy); |
| 937 CFX_RectF rtCheck; | 940 CFX_RectF rtCheck; |
| 938 GetItemCheckRect(hSelectedItem, rtCheck); | 941 GetItemCheckRectInternal(hSelectedItem, rtCheck); |
| 939 bool bChecked = GetItemChecked(pItem); | 942 bool bChecked = GetItemChecked(pItem); |
| 940 if (rtCheck.Contains(pMsg->m_fx, pMsg->m_fy)) { | 943 if (rtCheck.Contains(pMsg->m_fx, pMsg->m_fy)) { |
| 941 SetItemChecked(pItem, !bChecked); | 944 SetItemChecked(pItem, !bChecked); |
| 942 Update(); | 945 Update(); |
| 943 } | 946 } |
| 944 } | 947 } |
| 945 SetFocusItem(pItem); | 948 SetFocusItem(pItem); |
| 946 ScrollToVisible(pItem); | 949 ScrollToVisible(pItem); |
| 947 SetGrab(true); | 950 SetGrab(true); |
| 948 Repaint(&m_rtClient); | 951 Repaint(&m_rtClient); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 963 | 966 |
| 964 void IFWL_ListBox::OnKeyDown(CFWL_MsgKey* pMsg) { | 967 void IFWL_ListBox::OnKeyDown(CFWL_MsgKey* pMsg) { |
| 965 uint32_t dwKeyCode = pMsg->m_dwKeyCode; | 968 uint32_t dwKeyCode = pMsg->m_dwKeyCode; |
| 966 switch (dwKeyCode) { | 969 switch (dwKeyCode) { |
| 967 case FWL_VKEY_Tab: | 970 case FWL_VKEY_Tab: |
| 968 case FWL_VKEY_Up: | 971 case FWL_VKEY_Up: |
| 969 case FWL_VKEY_Down: | 972 case FWL_VKEY_Down: |
| 970 case FWL_VKEY_Home: | 973 case FWL_VKEY_Home: |
| 971 case FWL_VKEY_End: { | 974 case FWL_VKEY_End: { |
| 972 CFWL_ListItem* pItem = GetFocusedItem(); | 975 CFWL_ListItem* pItem = GetFocusedItem(); |
| 973 pItem = GetItem(pItem, dwKeyCode); | 976 pItem = GetListItem(pItem, dwKeyCode); |
| 974 bool bShift = !!(pMsg->m_dwFlags & FWL_KEYFLAG_Shift); | 977 bool bShift = !!(pMsg->m_dwFlags & FWL_KEYFLAG_Shift); |
| 975 bool bCtrl = !!(pMsg->m_dwFlags & FWL_KEYFLAG_Ctrl); | 978 bool bCtrl = !!(pMsg->m_dwFlags & FWL_KEYFLAG_Ctrl); |
| 976 OnVK(pItem, bShift, bCtrl); | 979 OnVK(pItem, bShift, bCtrl); |
| 977 break; | 980 break; |
| 978 } | 981 } |
| 979 default: | 982 default: |
| 980 break; | 983 break; |
| 981 } | 984 } |
| 982 } | 985 } |
| 983 | 986 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1057 case FWL_SCBCODE::EndScroll: | 1060 case FWL_SCBCODE::EndScroll: |
| 1058 return false; | 1061 return false; |
| 1059 } | 1062 } |
| 1060 if (iCurPos != fPos) { | 1063 if (iCurPos != fPos) { |
| 1061 pScrollBar->SetPos(fPos); | 1064 pScrollBar->SetPos(fPos); |
| 1062 pScrollBar->SetTrackPos(fPos); | 1065 pScrollBar->SetTrackPos(fPos); |
| 1063 Repaint(&m_rtClient); | 1066 Repaint(&m_rtClient); |
| 1064 } | 1067 } |
| 1065 return true; | 1068 return true; |
| 1066 } | 1069 } |
| OLD | NEW |