| 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 "../../include/pdfwindow/PDFWindow.h" | 7 #include "../../include/pdfwindow/PDFWindow.h" |
| 8 #include "../../include/pdfwindow/PWL_Wnd.h" | 8 #include "../../include/pdfwindow/PWL_Wnd.h" |
| 9 #include "../../include/pdfwindow/PWL_ListBox.h" | 9 #include "../../include/pdfwindow/PWL_ListBox.h" |
| 10 #include "../../include/pdfwindow/PWL_Utils.h" | 10 #include "../../include/pdfwindow/PWL_Utils.h" |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 | 42 |
| 43 m_pList->OnNotify(m_pList,PNM_SETSCROLLINFO,SBT_VSCROLL,(intptr_t)&Info)
; | 43 m_pList->OnNotify(m_pList,PNM_SETSCROLLINFO,SBT_VSCROLL,(intptr_t)&Info)
; |
| 44 | 44 |
| 45 if (CPWL_ScrollBar * pScroll = m_pList->GetVScrollBar()) | 45 if (CPWL_ScrollBar * pScroll = m_pList->GetVScrollBar()) |
| 46 { | 46 { |
| 47 if (IsFloatBigger(Info.fPlateWidth,Info.fContentMax-Info.fConten
tMin) | 47 if (IsFloatBigger(Info.fPlateWidth,Info.fContentMax-Info.fConten
tMin) |
| 48 || IsFloatEqual(Info.fPlateWidth,Info.fContentMax-Info.f
ContentMin)) | 48 || IsFloatEqual(Info.fPlateWidth,Info.fContentMax-Info.f
ContentMin)) |
| 49 { | 49 { |
| 50 if (pScroll->IsVisible()) | 50 if (pScroll->IsVisible()) |
| 51 { | 51 { |
| 52 » » » » pScroll->SetVisible(false); | 52 » » » » pScroll->SetVisible(FALSE); |
| 53 m_pList->RePosChildWnd(); | 53 m_pList->RePosChildWnd(); |
| 54 } | 54 } |
| 55 } | 55 } |
| 56 else | 56 else |
| 57 { | 57 { |
| 58 if (!pScroll->IsVisible()) | 58 if (!pScroll->IsVisible()) |
| 59 { | 59 { |
| 60 » » » » pScroll->SetVisible(true); | 60 » » » » pScroll->SetVisible(TRUE); |
| 61 m_pList->RePosChildWnd(); | 61 m_pList->RePosChildWnd(); |
| 62 } | 62 } |
| 63 } | 63 } |
| 64 } | 64 } |
| 65 } | 65 } |
| 66 | 66 |
| 67 void CPWL_List_Notify::IOnSetScrollPosY(FX_FLOAT fy) | 67 void CPWL_List_Notify::IOnSetScrollPosY(FX_FLOAT fy) |
| 68 { | 68 { |
| 69 m_pList->OnNotify(m_pList,PNM_SETSCROLLPOS,SBT_VSCROLL,(intptr_t)&fy); | 69 m_pList->OnNotify(m_pList,PNM_SETSCROLLPOS,SBT_VSCROLL,(intptr_t)&fy); |
| 70 } | 70 } |
| 71 | 71 |
| 72 void CPWL_List_Notify::IOnInvalidateRect(CPDF_Rect * pRect) | 72 void CPWL_List_Notify::IOnInvalidateRect(CPDF_Rect * pRect) |
| 73 { | 73 { |
| 74 m_pList->InvalidateRect(pRect); | 74 m_pList->InvalidateRect(pRect); |
| 75 } | 75 } |
| 76 | 76 |
| 77 /* --------------------------- CPWL_ListBox ---------------------------- */ | 77 /* --------------------------- CPWL_ListBox ---------------------------- */ |
| 78 | 78 |
| 79 CPWL_ListBox::CPWL_ListBox() : | 79 CPWL_ListBox::CPWL_ListBox() : |
| 80 m_pList(NULL), | 80 m_pList(NULL), |
| 81 m_pListNotify(NULL), | 81 m_pListNotify(NULL), |
| 82 » m_bMouseDown(false), | 82 » m_bMouseDown(FALSE), |
| 83 » m_bHoverSel(false), | 83 » m_bHoverSel(FALSE), |
| 84 m_pFillerNotify(NULL) | 84 m_pFillerNotify(NULL) |
| 85 { | 85 { |
| 86 m_pList = IFX_List::NewList(); | 86 m_pList = IFX_List::NewList(); |
| 87 | 87 |
| 88 ASSERT(m_pList != NULL); | 88 ASSERT(m_pList != NULL); |
| 89 } | 89 } |
| 90 | 90 |
| 91 CPWL_ListBox::~CPWL_ListBox() | 91 CPWL_ListBox::~CPWL_ListBox() |
| 92 { | 92 { |
| 93 IFX_List::DelList(m_pList); | 93 IFX_List::DelList(m_pList); |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 IFX_Edit::DrawEdit(pDevice, pUser2Device, m_pLis
t->GetItemEdit(i), | 222 IFX_Edit::DrawEdit(pDevice, pUser2Device, m_pLis
t->GetItemEdit(i), |
| 223 CPWL_Utils::PWLColorToFXColor(Ge
tTextColor()), | 223 CPWL_Utils::PWLColorToFXColor(Ge
tTextColor()), |
| 224 CPWL_Utils::PWLColorToFXColor(Ge
tTextStrokeColor()), | 224 CPWL_Utils::PWLColorToFXColor(Ge
tTextStrokeColor()), |
| 225 rcList, ptOffset, NULL,pSysHandl
er, NULL); | 225 rcList, ptOffset, NULL,pSysHandl
er, NULL); |
| 226 | 226 |
| 227 } | 227 } |
| 228 } | 228 } |
| 229 } | 229 } |
| 230 } | 230 } |
| 231 | 231 |
| 232 bool CPWL_ListBox::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag) | 232 FX_BOOL CPWL_ListBox::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag) |
| 233 { | 233 { |
| 234 CPWL_Wnd::OnKeyDown(nChar, nFlag); | 234 CPWL_Wnd::OnKeyDown(nChar, nFlag); |
| 235 | 235 |
| 236 » if (!m_pList) return false; | 236 » if (!m_pList) return FALSE; |
| 237 | 237 |
| 238 switch (nChar) | 238 switch (nChar) |
| 239 { | 239 { |
| 240 default: | 240 default: |
| 241 » » return false; | 241 » » return FALSE; |
| 242 case FWL_VKEY_Up: | 242 case FWL_VKEY_Up: |
| 243 case FWL_VKEY_Down: | 243 case FWL_VKEY_Down: |
| 244 case FWL_VKEY_Home: | 244 case FWL_VKEY_Home: |
| 245 case FWL_VKEY_Left: | 245 case FWL_VKEY_Left: |
| 246 case FWL_VKEY_End: | 246 case FWL_VKEY_End: |
| 247 case FWL_VKEY_Right: | 247 case FWL_VKEY_Right: |
| 248 break; | 248 break; |
| 249 } | 249 } |
| 250 | 250 |
| 251 switch (nChar) | 251 switch (nChar) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 265 case FWL_VKEY_End: | 265 case FWL_VKEY_End: |
| 266 m_pList->OnVK_END(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag)); | 266 m_pList->OnVK_END(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag)); |
| 267 break; | 267 break; |
| 268 case FWL_VKEY_Right: | 268 case FWL_VKEY_Right: |
| 269 m_pList->OnVK_RIGHT(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag)); | 269 m_pList->OnVK_RIGHT(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag)); |
| 270 break; | 270 break; |
| 271 case FWL_VKEY_Delete: | 271 case FWL_VKEY_Delete: |
| 272 break; | 272 break; |
| 273 } | 273 } |
| 274 | 274 |
| 275 » bool bExit = false; | 275 » FX_BOOL bExit = FALSE; |
| 276 » OnNotifySelChanged(true,bExit,nFlag); | 276 » OnNotifySelChanged(TRUE,bExit,nFlag); |
| 277 | 277 |
| 278 » return true; | 278 » return TRUE; |
| 279 } | 279 } |
| 280 | 280 |
| 281 bool CPWL_ListBox::OnChar(FX_WORD nChar, FX_DWORD nFlag) | 281 FX_BOOL CPWL_ListBox::OnChar(FX_WORD nChar, FX_DWORD nFlag) |
| 282 { | 282 { |
| 283 CPWL_Wnd::OnChar(nChar,nFlag); | 283 CPWL_Wnd::OnChar(nChar,nFlag); |
| 284 | 284 |
| 285 » if (!m_pList) return false; | 285 » if (!m_pList) return FALSE; |
| 286 | 286 |
| 287 » if (!m_pList->OnChar(nChar,IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag)))
return false; | 287 » if (!m_pList->OnChar(nChar,IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag)))
return FALSE; |
| 288 | 288 |
| 289 » bool bExit = false; | 289 » FX_BOOL bExit = FALSE; |
| 290 » OnNotifySelChanged(true,bExit, nFlag); | 290 » OnNotifySelChanged(TRUE,bExit, nFlag); |
| 291 | 291 |
| 292 » return true; | 292 » return TRUE; |
| 293 } | 293 } |
| 294 | 294 |
| 295 bool CPWL_ListBox::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag) | 295 FX_BOOL CPWL_ListBox::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag) |
| 296 { | 296 { |
| 297 CPWL_Wnd::OnLButtonDown(point,nFlag); | 297 CPWL_Wnd::OnLButtonDown(point,nFlag); |
| 298 | 298 |
| 299 if (ClientHitTest(point)) | 299 if (ClientHitTest(point)) |
| 300 { | 300 { |
| 301 » » m_bMouseDown = true; | 301 » » m_bMouseDown = TRUE; |
| 302 SetFocus(); | 302 SetFocus(); |
| 303 SetCapture(); | 303 SetCapture(); |
| 304 | 304 |
| 305 if (m_pList) | 305 if (m_pList) |
| 306 m_pList->OnMouseDown(point,IsSHIFTpressed(nFlag),IsCTRLp
ressed(nFlag)); | 306 m_pList->OnMouseDown(point,IsSHIFTpressed(nFlag),IsCTRLp
ressed(nFlag)); |
| 307 } | 307 } |
| 308 | 308 |
| 309 » return true; | 309 » return TRUE; |
| 310 } | 310 } |
| 311 | 311 |
| 312 bool CPWL_ListBox::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag) | 312 FX_BOOL CPWL_ListBox::OnLButtonUp(const CPDF_Point & point, FX_DWORD nFlag) |
| 313 { | 313 { |
| 314 CPWL_Wnd::OnLButtonUp(point,nFlag); | 314 CPWL_Wnd::OnLButtonUp(point,nFlag); |
| 315 | 315 |
| 316 if (m_bMouseDown) | 316 if (m_bMouseDown) |
| 317 { | 317 { |
| 318 ReleaseCapture(); | 318 ReleaseCapture(); |
| 319 » » m_bMouseDown = false; | 319 » » m_bMouseDown = FALSE; |
| 320 } | 320 } |
| 321 | 321 |
| 322 » bool bExit = false; | 322 » FX_BOOL bExit = FALSE; |
| 323 » OnNotifySelChanged(false,bExit,nFlag); | 323 » OnNotifySelChanged(FALSE,bExit,nFlag); |
| 324 | 324 |
| 325 » return true; | 325 » return TRUE; |
| 326 } | 326 } |
| 327 | 327 |
| 328 void CPWL_ListBox::SetHoverSel(bool bHoverSel) | 328 void CPWL_ListBox::SetHoverSel(FX_BOOL bHoverSel) |
| 329 { | 329 { |
| 330 m_bHoverSel = bHoverSel; | 330 m_bHoverSel = bHoverSel; |
| 331 } | 331 } |
| 332 | 332 |
| 333 bool CPWL_ListBox::OnMouseMove(const CPDF_Point & point, FX_DWORD nFlag) | 333 FX_BOOL CPWL_ListBox::OnMouseMove(const CPDF_Point & point, FX_DWORD nFlag) |
| 334 { | 334 { |
| 335 CPWL_Wnd::OnMouseMove(point, nFlag); | 335 CPWL_Wnd::OnMouseMove(point, nFlag); |
| 336 | 336 |
| 337 if (m_bHoverSel && !IsCaptureMouse() && ClientHitTest(point)) | 337 if (m_bHoverSel && !IsCaptureMouse() && ClientHitTest(point)) |
| 338 { | 338 { |
| 339 if (m_pList) | 339 if (m_pList) |
| 340 m_pList->Select(m_pList->GetItemIndex(point)); | 340 m_pList->Select(m_pList->GetItemIndex(point)); |
| 341 } | 341 } |
| 342 | 342 |
| 343 if (m_bMouseDown) | 343 if (m_bMouseDown) |
| 344 { | 344 { |
| 345 if (m_pList) | 345 if (m_pList) |
| 346 m_pList->OnMouseMove(point,IsSHIFTpressed(nFlag),IsCTRLp
ressed(nFlag)); | 346 m_pList->OnMouseMove(point,IsSHIFTpressed(nFlag),IsCTRLp
ressed(nFlag)); |
| 347 } | 347 } |
| 348 | 348 |
| 349 » return true; | 349 » return TRUE; |
| 350 } | 350 } |
| 351 | 351 |
| 352 void CPWL_ListBox::OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, intptr_t wParam, intpt
r_t lParam) | 352 void CPWL_ListBox::OnNotify(CPWL_Wnd* pWnd, FX_DWORD msg, intptr_t wParam, intpt
r_t lParam) |
| 353 { | 353 { |
| 354 CPWL_Wnd::OnNotify(pWnd,msg,wParam,lParam); | 354 CPWL_Wnd::OnNotify(pWnd,msg,wParam,lParam); |
| 355 | 355 |
| 356 FX_FLOAT fPos; | 356 FX_FLOAT fPos; |
| 357 | 357 |
| 358 switch (msg) | 358 switch (msg) |
| 359 { | 359 { |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 } | 398 } |
| 399 | 399 |
| 400 void CPWL_ListBox::RePosChildWnd() | 400 void CPWL_ListBox::RePosChildWnd() |
| 401 { | 401 { |
| 402 CPWL_Wnd::RePosChildWnd(); | 402 CPWL_Wnd::RePosChildWnd(); |
| 403 | 403 |
| 404 if (m_pList) | 404 if (m_pList) |
| 405 m_pList->SetPlateRect(GetListRect()); | 405 m_pList->SetPlateRect(GetListRect()); |
| 406 } | 406 } |
| 407 | 407 |
| 408 void CPWL_ListBox::OnNotifySelChanged(bool bKeyDown, bool & bExit, FX_DWORD nFl
ag) | 408 void CPWL_ListBox::OnNotifySelChanged(FX_BOOL bKeyDown, FX_BOOL & bExit, FX_DWO
RD nFlag) |
| 409 { | 409 { |
| 410 if (m_pFillerNotify) | 410 if (m_pFillerNotify) |
| 411 { | 411 { |
| 412 » » bool bRC = true; | 412 » » FX_BOOL bRC = TRUE; |
| 413 CFX_WideString swChange = GetText(); | 413 CFX_WideString swChange = GetText(); |
| 414 CFX_WideString strChangeEx; | 414 CFX_WideString strChangeEx; |
| 415 int nSelStart = 0; | 415 int nSelStart = 0; |
| 416 int nSelEnd = swChange.GetLength(); | 416 int nSelEnd = swChange.GetLength(); |
| 417 » » m_pFillerNotify->OnBeforeKeyStroke(false, GetAttachedData(), 0,
swChange, strChangeEx, nSelStart, nSelEnd, bKeyDown, bRC, bExit, nFlag); | 417 » » m_pFillerNotify->OnBeforeKeyStroke(FALSE, GetAttachedData(), 0,
swChange, strChangeEx, nSelStart, nSelEnd, bKeyDown, bRC, bExit, nFlag); |
| 418 if (bExit) return; | 418 if (bExit) return; |
| 419 | 419 |
| 420 » » m_pFillerNotify->OnAfterKeyStroke(false, GetAttachedData(), bExi
t,nFlag); | 420 » » m_pFillerNotify->OnAfterKeyStroke(FALSE, GetAttachedData(), bExi
t,nFlag); |
| 421 } | 421 } |
| 422 } | 422 } |
| 423 | 423 |
| 424 CPDF_Rect CPWL_ListBox::GetFocusRect() const | 424 CPDF_Rect CPWL_ListBox::GetFocusRect() const |
| 425 { | 425 { |
| 426 if (m_pList && m_pList->IsMultipleSel()) | 426 if (m_pList && m_pList->IsMultipleSel()) |
| 427 { | 427 { |
| 428 CPDF_Rect rcCaret = m_pList->GetItemRect(m_pList->GetCaret()); | 428 CPDF_Rect rcCaret = m_pList->GetItemRect(m_pList->GetCaret()); |
| 429 rcCaret.Intersect(GetClientRect()); | 429 rcCaret.Intersect(GetClientRect()); |
| 430 return rcCaret; | 430 return rcCaret; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 491 if (m_pList) | 491 if (m_pList) |
| 492 m_pList->Empty(); | 492 m_pList->Empty(); |
| 493 } | 493 } |
| 494 | 494 |
| 495 void CPWL_ListBox::Reset() | 495 void CPWL_ListBox::Reset() |
| 496 { | 496 { |
| 497 if (m_pList) | 497 if (m_pList) |
| 498 m_pList->Cancel(); | 498 m_pList->Cancel(); |
| 499 } | 499 } |
| 500 | 500 |
| 501 bool CPWL_ListBox::IsMultipleSel() const | 501 FX_BOOL CPWL_ListBox::IsMultipleSel() const |
| 502 { | 502 { |
| 503 if (m_pList) | 503 if (m_pList) |
| 504 return m_pList->IsMultipleSel(); | 504 return m_pList->IsMultipleSel(); |
| 505 | 505 |
| 506 » return false; | 506 » return FALSE; |
| 507 } | 507 } |
| 508 | 508 |
| 509 int32_t CPWL_ListBox::GetCaretIndex() const | 509 int32_t CPWL_ListBox::GetCaretIndex() const |
| 510 { | 510 { |
| 511 if (m_pList) | 511 if (m_pList) |
| 512 return m_pList->GetCaret(); | 512 return m_pList->GetCaret(); |
| 513 | 513 |
| 514 return -1; | 514 return -1; |
| 515 } | 515 } |
| 516 | 516 |
| 517 int32_t CPWL_ListBox::GetCurSel() const | 517 int32_t CPWL_ListBox::GetCurSel() const |
| 518 { | 518 { |
| 519 if (m_pList) | 519 if (m_pList) |
| 520 return m_pList->GetSelect(); | 520 return m_pList->GetSelect(); |
| 521 | 521 |
| 522 return -1; | 522 return -1; |
| 523 } | 523 } |
| 524 | 524 |
| 525 bool CPWL_ListBox::IsItemSelected(int32_t nItemIndex) const | 525 FX_BOOL CPWL_ListBox::IsItemSelected(int32_t nItemIndex) const |
| 526 { | 526 { |
| 527 if (m_pList) | 527 if (m_pList) |
| 528 return m_pList->IsItemSelected(nItemIndex); | 528 return m_pList->IsItemSelected(nItemIndex); |
| 529 | 529 |
| 530 » return false; | 530 » return FALSE; |
| 531 } | 531 } |
| 532 | 532 |
| 533 int32_t CPWL_ListBox::GetTopVisibleIndex() const | 533 int32_t CPWL_ListBox::GetTopVisibleIndex() const |
| 534 { | 534 { |
| 535 if (m_pList) | 535 if (m_pList) |
| 536 { | 536 { |
| 537 m_pList->ScrollToListItem(m_pList->GetFirstSelected()); | 537 m_pList->ScrollToListItem(m_pList->GetFirstSelected()); |
| 538 return m_pList->GetTopItem(); | 538 return m_pList->GetTopItem(); |
| 539 } | 539 } |
| 540 | 540 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 571 return m_pList->GetFirstHeight(); | 571 return m_pList->GetFirstHeight(); |
| 572 | 572 |
| 573 return 0.0f; | 573 return 0.0f; |
| 574 } | 574 } |
| 575 | 575 |
| 576 CPDF_Rect CPWL_ListBox::GetListRect() const | 576 CPDF_Rect CPWL_ListBox::GetListRect() const |
| 577 { | 577 { |
| 578 return CPWL_Utils::DeflateRect(GetWindowRect(),(FX_FLOAT)(GetBorderWidth
()+GetInnerBorderWidth())); | 578 return CPWL_Utils::DeflateRect(GetWindowRect(),(FX_FLOAT)(GetBorderWidth
()+GetInnerBorderWidth())); |
| 579 } | 579 } |
| 580 | 580 |
| 581 bool» CPWL_ListBox::OnMouseWheel(short zDelta, const CPDF_Point & point, FX_DW
ORD nFlag) | 581 FX_BOOL»CPWL_ListBox::OnMouseWheel(short zDelta, const CPDF_Point & point, FX_DW
ORD nFlag) |
| 582 { | 582 { |
| 583 » if (!m_pList) return false; | 583 » if (!m_pList) return FALSE; |
| 584 | 584 |
| 585 if (zDelta < 0) | 585 if (zDelta < 0) |
| 586 { | 586 { |
| 587 m_pList->OnVK_DOWN(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag)); | 587 m_pList->OnVK_DOWN(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag)); |
| 588 } | 588 } |
| 589 else | 589 else |
| 590 { | 590 { |
| 591 m_pList->OnVK_UP(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag)); | 591 m_pList->OnVK_UP(IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag)); |
| 592 } | 592 } |
| 593 | 593 |
| 594 » bool bExit = false; | 594 » FX_BOOL bExit = FALSE; |
| 595 » OnNotifySelChanged(false,bExit, nFlag); | 595 » OnNotifySelChanged(FALSE,bExit, nFlag); |
| 596 » return true; | 596 » return TRUE; |
| 597 } | 597 } |
| 598 | 598 |
| OLD | NEW |