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 "fpdfsdk/fxedit/include/fxet_list.h" | 7 #include "fpdfsdk/fxedit/include/fxet_list.h" |
8 | 8 |
9 #include "core/fpdfdoc/include/cpvt_word.h" | 9 #include "core/fpdfdoc/include/cpvt_word.h" |
10 #include "fpdfsdk/fxedit/include/fxet_edit.h" | 10 #include "fpdfsdk/fxedit/include/fxet_edit.h" |
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
510 } | 510 } |
511 | 511 |
512 void CFX_ListCtrl::ScrollToListItem(int32_t nItemIndex) { | 512 void CFX_ListCtrl::ScrollToListItem(int32_t nItemIndex) { |
513 if (!IsValid(nItemIndex)) | 513 if (!IsValid(nItemIndex)) |
514 return; | 514 return; |
515 | 515 |
516 CFX_FloatRect rcPlate = GetPlateRect(); | 516 CFX_FloatRect rcPlate = GetPlateRect(); |
517 CFX_FloatRect rcItem = GetItemRectInternal(nItemIndex); | 517 CFX_FloatRect rcItem = GetItemRectInternal(nItemIndex); |
518 CFX_FloatRect rcItemCtrl = GetItemRect(nItemIndex); | 518 CFX_FloatRect rcItemCtrl = GetItemRect(nItemIndex); |
519 | 519 |
520 if (FX_EDIT_IsFloatSmaller(rcItemCtrl.bottom, rcPlate.bottom)) { | 520 if (IsFloatSmaller(rcItemCtrl.bottom, rcPlate.bottom)) { |
521 if (FX_EDIT_IsFloatSmaller(rcItemCtrl.top, rcPlate.top)) { | 521 if (IsFloatSmaller(rcItemCtrl.top, rcPlate.top)) { |
522 SetScrollPosY(rcItem.bottom + rcPlate.Height()); | 522 SetScrollPosY(rcItem.bottom + rcPlate.Height()); |
523 } | 523 } |
524 } else if (FX_EDIT_IsFloatBigger(rcItemCtrl.top, rcPlate.top)) { | 524 } else if (IsFloatBigger(rcItemCtrl.top, rcPlate.top)) { |
525 if (FX_EDIT_IsFloatBigger(rcItemCtrl.bottom, rcPlate.bottom)) { | 525 if (IsFloatBigger(rcItemCtrl.bottom, rcPlate.bottom)) { |
526 SetScrollPosY(rcItem.top); | 526 SetScrollPosY(rcItem.top); |
527 } | 527 } |
528 } | 528 } |
529 } | 529 } |
530 | 530 |
531 void CFX_ListCtrl::SetScrollInfo() { | 531 void CFX_ListCtrl::SetScrollInfo() { |
532 if (m_pNotify) { | 532 if (m_pNotify) { |
533 CFX_FloatRect rcPlate = GetPlateRect(); | 533 CFX_FloatRect rcPlate = GetPlateRect(); |
534 CFX_FloatRect rcContent = GetContentRectInternal(); | 534 CFX_FloatRect rcContent = GetContentRectInternal(); |
535 | 535 |
536 if (!m_bNotifyFlag) { | 536 if (!m_bNotifyFlag) { |
537 m_bNotifyFlag = TRUE; | 537 m_bNotifyFlag = TRUE; |
538 m_pNotify->IOnSetScrollInfoY(rcPlate.bottom, rcPlate.top, | 538 m_pNotify->IOnSetScrollInfoY(rcPlate.bottom, rcPlate.top, |
539 rcContent.bottom, rcContent.top, | 539 rcContent.bottom, rcContent.top, |
540 GetFirstHeight(), rcPlate.Height()); | 540 GetFirstHeight(), rcPlate.Height()); |
541 m_bNotifyFlag = FALSE; | 541 m_bNotifyFlag = FALSE; |
542 } | 542 } |
543 } | 543 } |
544 } | 544 } |
545 | 545 |
546 void CFX_ListCtrl::SetScrollPos(const CFX_FloatPoint& point) { | 546 void CFX_ListCtrl::SetScrollPos(const CFX_FloatPoint& point) { |
547 SetScrollPosY(point.y); | 547 SetScrollPosY(point.y); |
548 } | 548 } |
549 | 549 |
550 void CFX_ListCtrl::SetScrollPosY(FX_FLOAT fy) { | 550 void CFX_ListCtrl::SetScrollPosY(FX_FLOAT fy) { |
551 if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.y, fy)) { | 551 if (!IsFloatEqual(m_ptScrollPos.y, fy)) { |
552 CFX_FloatRect rcPlate = GetPlateRect(); | 552 CFX_FloatRect rcPlate = GetPlateRect(); |
553 CFX_FloatRect rcContent = GetContentRectInternal(); | 553 CFX_FloatRect rcContent = GetContentRectInternal(); |
554 | 554 |
555 if (rcPlate.Height() > rcContent.Height()) { | 555 if (rcPlate.Height() > rcContent.Height()) { |
556 fy = rcPlate.top; | 556 fy = rcPlate.top; |
557 } else { | 557 } else { |
558 if (FX_EDIT_IsFloatSmaller(fy - rcPlate.Height(), rcContent.bottom)) { | 558 if (IsFloatSmaller(fy - rcPlate.Height(), rcContent.bottom)) { |
559 fy = rcContent.bottom + rcPlate.Height(); | 559 fy = rcContent.bottom + rcPlate.Height(); |
560 } else if (FX_EDIT_IsFloatBigger(fy, rcContent.top)) { | 560 } else if (IsFloatBigger(fy, rcContent.top)) { |
561 fy = rcContent.top; | 561 fy = rcContent.top; |
562 } | 562 } |
563 } | 563 } |
564 | 564 |
565 m_ptScrollPos.y = fy; | 565 m_ptScrollPos.y = fy; |
566 InvalidateItem(-1); | 566 InvalidateItem(-1); |
567 | 567 |
568 if (m_pNotify) { | 568 if (m_pNotify) { |
569 if (!m_bNotifyFlag) { | 569 if (!m_bNotifyFlag) { |
570 m_bNotifyFlag = TRUE; | 570 m_bNotifyFlag = TRUE; |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
634 int32_t CFX_ListCtrl::GetItemIndex(const CFX_FloatPoint& point) const { | 634 int32_t CFX_ListCtrl::GetItemIndex(const CFX_FloatPoint& point) const { |
635 CFX_FloatPoint pt = OuterToInner(OutToIn(point)); | 635 CFX_FloatPoint pt = OuterToInner(OutToIn(point)); |
636 | 636 |
637 FX_BOOL bFirst = TRUE; | 637 FX_BOOL bFirst = TRUE; |
638 FX_BOOL bLast = TRUE; | 638 FX_BOOL bLast = TRUE; |
639 | 639 |
640 for (int32_t i = 0, sz = m_aListItems.GetSize(); i < sz; i++) { | 640 for (int32_t i = 0, sz = m_aListItems.GetSize(); i < sz; i++) { |
641 if (CFX_ListItem* pListItem = m_aListItems.GetAt(i)) { | 641 if (CFX_ListItem* pListItem = m_aListItems.GetAt(i)) { |
642 CLST_Rect rcListItem = pListItem->GetRect(); | 642 CLST_Rect rcListItem = pListItem->GetRect(); |
643 | 643 |
644 if (FX_EDIT_IsFloatBigger(pt.y, rcListItem.top)) { | 644 if (IsFloatBigger(pt.y, rcListItem.top)) { |
645 bFirst = FALSE; | 645 bFirst = FALSE; |
646 } | 646 } |
647 | 647 |
648 if (FX_EDIT_IsFloatSmaller(pt.y, rcListItem.bottom)) { | 648 if (IsFloatSmaller(pt.y, rcListItem.bottom)) { |
649 bLast = FALSE; | 649 bLast = FALSE; |
650 } | 650 } |
651 | 651 |
652 if (pt.y >= rcListItem.top && pt.y < rcListItem.bottom) { | 652 if (pt.y >= rcListItem.top && pt.y < rcListItem.bottom) { |
653 return i; | 653 return i; |
654 } | 654 } |
655 } | 655 } |
656 } | 656 } |
657 | 657 |
658 if (bFirst) | 658 if (bFirst) |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
780 return nItemIndex >= 0 && nItemIndex < m_aListItems.GetSize(); | 780 return nItemIndex >= 0 && nItemIndex < m_aListItems.GetSize(); |
781 } | 781 } |
782 | 782 |
783 CFX_WideString CFX_ListCtrl::GetItemText(int32_t nIndex) const { | 783 CFX_WideString CFX_ListCtrl::GetItemText(int32_t nIndex) const { |
784 if (CFX_ListItem* pListItem = m_aListItems.GetAt(nIndex)) { | 784 if (CFX_ListItem* pListItem = m_aListItems.GetAt(nIndex)) { |
785 return pListItem->GetText(); | 785 return pListItem->GetText(); |
786 } | 786 } |
787 | 787 |
788 return L""; | 788 return L""; |
789 } | 789 } |
OLD | NEW |