Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1093)

Side by Side Diff: xfa/fwl/cfwl_listbox.cpp

Issue 2559173002: Move xfa/fwl/core to xfa/fwl. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fwl/cfwl_listbox.h ('k') | xfa/fwl/cfwl_listitem.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/cfwl_listbox.h" 7 #include "xfa/fwl/cfwl_listbox.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
11 #include <utility> 11 #include <utility>
12 12
13 #include "third_party/base/ptr_util.h" 13 #include "third_party/base/ptr_util.h"
14 #include "third_party/base/stl_util.h" 14 #include "third_party/base/stl_util.h"
15 #include "xfa/fde/tto/fde_textout.h" 15 #include "xfa/fde/tto/fde_textout.h"
16 #include "xfa/fwl/core/cfwl_app.h" 16 #include "xfa/fwl/cfwl_app.h"
17 #include "xfa/fwl/core/cfwl_msgkey.h" 17 #include "xfa/fwl/cfwl_messagekey.h"
18 #include "xfa/fwl/core/cfwl_msgmouse.h" 18 #include "xfa/fwl/cfwl_messagemouse.h"
19 #include "xfa/fwl/core/cfwl_msgmousewheel.h" 19 #include "xfa/fwl/cfwl_messagemousewheel.h"
20 #include "xfa/fwl/core/cfwl_themebackground.h" 20 #include "xfa/fwl/cfwl_themebackground.h"
21 #include "xfa/fwl/core/cfwl_themepart.h" 21 #include "xfa/fwl/cfwl_themepart.h"
22 #include "xfa/fwl/core/cfwl_themetext.h" 22 #include "xfa/fwl/cfwl_themetext.h"
23 #include "xfa/fwl/core/ifwl_themeprovider.h" 23 #include "xfa/fwl/ifwl_themeprovider.h"
24 24
25 namespace { 25 namespace {
26 26
27 const int kItemTextMargin = 2; 27 const int kItemTextMargin = 2;
28 28
29 } // namespace 29 } // namespace
30 30
31 CFWL_ListBox::CFWL_ListBox(const CFWL_App* app, 31 CFWL_ListBox::CFWL_ListBox(const CFWL_App* app,
32 std::unique_ptr<CFWL_WidgetProperties> properties, 32 std::unique_ptr<CFWL_WidgetProperties> properties,
33 CFWL_Widget* pOuter) 33 CFWL_Widget* pOuter)
(...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 return; 766 return;
767 767
768 switch (pMessage->GetType()) { 768 switch (pMessage->GetType()) {
769 case CFWL_Message::Type::SetFocus: 769 case CFWL_Message::Type::SetFocus:
770 OnFocusChanged(pMessage, true); 770 OnFocusChanged(pMessage, true);
771 break; 771 break;
772 case CFWL_Message::Type::KillFocus: 772 case CFWL_Message::Type::KillFocus:
773 OnFocusChanged(pMessage, false); 773 OnFocusChanged(pMessage, false);
774 break; 774 break;
775 case CFWL_Message::Type::Mouse: { 775 case CFWL_Message::Type::Mouse: {
776 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); 776 CFWL_MessageMouse* pMsg = static_cast<CFWL_MessageMouse*>(pMessage);
777 switch (pMsg->m_dwCmd) { 777 switch (pMsg->m_dwCmd) {
778 case FWL_MouseCommand::LeftButtonDown: 778 case FWL_MouseCommand::LeftButtonDown:
779 OnLButtonDown(pMsg); 779 OnLButtonDown(pMsg);
780 break; 780 break;
781 case FWL_MouseCommand::LeftButtonUp: 781 case FWL_MouseCommand::LeftButtonUp:
782 OnLButtonUp(pMsg); 782 OnLButtonUp(pMsg);
783 break; 783 break;
784 default: 784 default:
785 break; 785 break;
786 } 786 }
787 break; 787 break;
788 } 788 }
789 case CFWL_Message::Type::MouseWheel: 789 case CFWL_Message::Type::MouseWheel:
790 OnMouseWheel(static_cast<CFWL_MsgMouseWheel*>(pMessage)); 790 OnMouseWheel(static_cast<CFWL_MessageMouseWheel*>(pMessage));
791 break; 791 break;
792 case CFWL_Message::Type::Key: { 792 case CFWL_Message::Type::Key: {
793 CFWL_MsgKey* pMsg = static_cast<CFWL_MsgKey*>(pMessage); 793 CFWL_MessageKey* pMsg = static_cast<CFWL_MessageKey*>(pMessage);
794 if (pMsg->m_dwCmd == FWL_KeyCommand::KeyDown) 794 if (pMsg->m_dwCmd == FWL_KeyCommand::KeyDown)
795 OnKeyDown(pMsg); 795 OnKeyDown(pMsg);
796 break; 796 break;
797 } 797 }
798 default: 798 default:
799 break; 799 break;
800 } 800 }
801 CFWL_Widget::OnProcessMessage(pMessage); 801 CFWL_Widget::OnProcessMessage(pMessage);
802 } 802 }
803 803
804 void CFWL_ListBox::OnProcessEvent(CFWL_Event* pEvent) { 804 void CFWL_ListBox::OnProcessEvent(CFWL_Event* pEvent) {
805 if (!pEvent) 805 if (!pEvent)
806 return; 806 return;
807 if (pEvent->GetType() != CFWL_Event::Type::Scroll) 807 if (pEvent->GetType() != CFWL_Event::Type::Scroll)
808 return; 808 return;
809 809
810 CFWL_Widget* pSrcTarget = pEvent->m_pSrcTarget; 810 CFWL_Widget* pSrcTarget = pEvent->m_pSrcTarget;
811 if ((pSrcTarget == m_pVertScrollBar.get() && m_pVertScrollBar) || 811 if ((pSrcTarget == m_pVertScrollBar.get() && m_pVertScrollBar) ||
812 (pSrcTarget == m_pHorzScrollBar.get() && m_pHorzScrollBar)) { 812 (pSrcTarget == m_pHorzScrollBar.get() && m_pHorzScrollBar)) {
813 CFWL_EvtScroll* pScrollEvent = static_cast<CFWL_EvtScroll*>(pEvent); 813 CFWL_EventScroll* pScrollEvent = static_cast<CFWL_EventScroll*>(pEvent);
814 OnScroll(static_cast<CFWL_ScrollBar*>(pSrcTarget), 814 OnScroll(static_cast<CFWL_ScrollBar*>(pSrcTarget),
815 pScrollEvent->m_iScrollCode, pScrollEvent->m_fPos); 815 pScrollEvent->m_iScrollCode, pScrollEvent->m_fPos);
816 } 816 }
817 } 817 }
818 818
819 void CFWL_ListBox::OnDrawWidget(CFX_Graphics* pGraphics, 819 void CFWL_ListBox::OnDrawWidget(CFX_Graphics* pGraphics,
820 const CFX_Matrix* pMatrix) { 820 const CFX_Matrix* pMatrix) {
821 DrawWidget(pGraphics, pMatrix); 821 DrawWidget(pGraphics, pMatrix);
822 } 822 }
823 823
(...skipping 13 matching lines...) Expand all
837 } 837 }
838 } 838 }
839 if (bSet) 839 if (bSet)
840 m_pProperties->m_dwStates |= (FWL_WGTSTATE_Focused); 840 m_pProperties->m_dwStates |= (FWL_WGTSTATE_Focused);
841 else 841 else
842 m_pProperties->m_dwStates &= ~(FWL_WGTSTATE_Focused); 842 m_pProperties->m_dwStates &= ~(FWL_WGTSTATE_Focused);
843 843
844 Repaint(&m_rtClient); 844 Repaint(&m_rtClient);
845 } 845 }
846 846
847 void CFWL_ListBox::OnLButtonDown(CFWL_MsgMouse* pMsg) { 847 void CFWL_ListBox::OnLButtonDown(CFWL_MessageMouse* pMsg) {
848 m_bLButtonDown = true; 848 m_bLButtonDown = true;
849 if ((m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0) 849 if ((m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0)
850 SetFocus(true); 850 SetFocus(true);
851 851
852 CFWL_ListItem* pItem = GetItemAtPoint(pMsg->m_fx, pMsg->m_fy); 852 CFWL_ListItem* pItem = GetItemAtPoint(pMsg->m_fx, pMsg->m_fy);
853 if (!pItem) 853 if (!pItem)
854 return; 854 return;
855 855
856 if (IsMultiSelection()) { 856 if (IsMultiSelection()) {
857 if (pMsg->m_dwFlags & FWL_KEYFLAG_Ctrl) { 857 if (pMsg->m_dwFlags & FWL_KEYFLAG_Ctrl) {
(...skipping 21 matching lines...) Expand all
879 SetItemChecked(pItem, !bChecked); 879 SetItemChecked(pItem, !bChecked);
880 Update(); 880 Update();
881 } 881 }
882 } 882 }
883 SetFocusItem(pItem); 883 SetFocusItem(pItem);
884 ScrollToVisible(pItem); 884 ScrollToVisible(pItem);
885 SetGrab(true); 885 SetGrab(true);
886 Repaint(&m_rtClient); 886 Repaint(&m_rtClient);
887 } 887 }
888 888
889 void CFWL_ListBox::OnLButtonUp(CFWL_MsgMouse* pMsg) { 889 void CFWL_ListBox::OnLButtonUp(CFWL_MessageMouse* pMsg) {
890 if (!m_bLButtonDown) 890 if (!m_bLButtonDown)
891 return; 891 return;
892 892
893 m_bLButtonDown = false; 893 m_bLButtonDown = false;
894 SetGrab(false); 894 SetGrab(false);
895 } 895 }
896 896
897 void CFWL_ListBox::OnMouseWheel(CFWL_MsgMouseWheel* pMsg) { 897 void CFWL_ListBox::OnMouseWheel(CFWL_MessageMouseWheel* pMsg) {
898 if (IsShowScrollBar(true)) 898 if (IsShowScrollBar(true))
899 m_pVertScrollBar->GetDelegate()->OnProcessMessage(pMsg); 899 m_pVertScrollBar->GetDelegate()->OnProcessMessage(pMsg);
900 } 900 }
901 901
902 void CFWL_ListBox::OnKeyDown(CFWL_MsgKey* pMsg) { 902 void CFWL_ListBox::OnKeyDown(CFWL_MessageKey* pMsg) {
903 uint32_t dwKeyCode = pMsg->m_dwKeyCode; 903 uint32_t dwKeyCode = pMsg->m_dwKeyCode;
904 switch (dwKeyCode) { 904 switch (dwKeyCode) {
905 case FWL_VKEY_Tab: 905 case FWL_VKEY_Tab:
906 case FWL_VKEY_Up: 906 case FWL_VKEY_Up:
907 case FWL_VKEY_Down: 907 case FWL_VKEY_Down:
908 case FWL_VKEY_Home: 908 case FWL_VKEY_Home:
909 case FWL_VKEY_End: { 909 case FWL_VKEY_End: {
910 CFWL_ListItem* pItem = GetFocusedItem(); 910 CFWL_ListItem* pItem = GetFocusedItem();
911 pItem = GetListItem(pItem, dwKeyCode); 911 pItem = GetListItem(pItem, dwKeyCode);
912 bool bShift = !!(pMsg->m_dwFlags & FWL_KEYFLAG_Shift); 912 bool bShift = !!(pMsg->m_dwFlags & FWL_KEYFLAG_Shift);
(...skipping 29 matching lines...) Expand all
942 SetFocusItem(pItem); 942 SetFocusItem(pItem);
943 ScrollToVisible(pItem); 943 ScrollToVisible(pItem);
944 944
945 CFX_RectF rtInvalidate; 945 CFX_RectF rtInvalidate;
946 rtInvalidate.Set(0, 0, m_pProperties->m_rtWidget.width, 946 rtInvalidate.Set(0, 0, m_pProperties->m_rtWidget.width,
947 m_pProperties->m_rtWidget.height); 947 m_pProperties->m_rtWidget.height);
948 Repaint(&rtInvalidate); 948 Repaint(&rtInvalidate);
949 } 949 }
950 950
951 bool CFWL_ListBox::OnScroll(CFWL_ScrollBar* pScrollBar, 951 bool CFWL_ListBox::OnScroll(CFWL_ScrollBar* pScrollBar,
952 CFWL_EvtScroll::Code dwCode, 952 CFWL_EventScroll::Code dwCode,
953 FX_FLOAT fPos) { 953 FX_FLOAT fPos) {
954 CFX_SizeF fs; 954 CFX_SizeF fs;
955 pScrollBar->GetRange(&fs.x, &fs.y); 955 pScrollBar->GetRange(&fs.x, &fs.y);
956 FX_FLOAT iCurPos = pScrollBar->GetPos(); 956 FX_FLOAT iCurPos = pScrollBar->GetPos();
957 FX_FLOAT fStep = pScrollBar->GetStepSize(); 957 FX_FLOAT fStep = pScrollBar->GetStepSize();
958 switch (dwCode) { 958 switch (dwCode) {
959 case CFWL_EvtScroll::Code::Min: { 959 case CFWL_EventScroll::Code::Min: {
960 fPos = fs.x; 960 fPos = fs.x;
961 break; 961 break;
962 } 962 }
963 case CFWL_EvtScroll::Code::Max: { 963 case CFWL_EventScroll::Code::Max: {
964 fPos = fs.y; 964 fPos = fs.y;
965 break; 965 break;
966 } 966 }
967 case CFWL_EvtScroll::Code::StepBackward: { 967 case CFWL_EventScroll::Code::StepBackward: {
968 fPos -= fStep; 968 fPos -= fStep;
969 if (fPos < fs.x + fStep / 2) 969 if (fPos < fs.x + fStep / 2)
970 fPos = fs.x; 970 fPos = fs.x;
971 break; 971 break;
972 } 972 }
973 case CFWL_EvtScroll::Code::StepForward: { 973 case CFWL_EventScroll::Code::StepForward: {
974 fPos += fStep; 974 fPos += fStep;
975 if (fPos > fs.y - fStep / 2) 975 if (fPos > fs.y - fStep / 2)
976 fPos = fs.y; 976 fPos = fs.y;
977 break; 977 break;
978 } 978 }
979 case CFWL_EvtScroll::Code::PageBackward: { 979 case CFWL_EventScroll::Code::PageBackward: {
980 fPos -= pScrollBar->GetPageSize(); 980 fPos -= pScrollBar->GetPageSize();
981 if (fPos < fs.x) 981 if (fPos < fs.x)
982 fPos = fs.x; 982 fPos = fs.x;
983 break; 983 break;
984 } 984 }
985 case CFWL_EvtScroll::Code::PageForward: { 985 case CFWL_EventScroll::Code::PageForward: {
986 fPos += pScrollBar->GetPageSize(); 986 fPos += pScrollBar->GetPageSize();
987 if (fPos > fs.y) 987 if (fPos > fs.y)
988 fPos = fs.y; 988 fPos = fs.y;
989 break; 989 break;
990 } 990 }
991 case CFWL_EvtScroll::Code::Pos: 991 case CFWL_EventScroll::Code::Pos:
992 case CFWL_EvtScroll::Code::TrackPos: 992 case CFWL_EventScroll::Code::TrackPos:
993 case CFWL_EvtScroll::Code::None: 993 case CFWL_EventScroll::Code::None:
994 break; 994 break;
995 case CFWL_EvtScroll::Code::EndScroll: 995 case CFWL_EventScroll::Code::EndScroll:
996 return false; 996 return false;
997 } 997 }
998 if (iCurPos != fPos) { 998 if (iCurPos != fPos) {
999 pScrollBar->SetPos(fPos); 999 pScrollBar->SetPos(fPos);
1000 pScrollBar->SetTrackPos(fPos); 1000 pScrollBar->SetTrackPos(fPos);
1001 Repaint(&m_rtClient); 1001 Repaint(&m_rtClient);
1002 } 1002 }
1003 return true; 1003 return true;
1004 } 1004 }
1005 1005
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1121 1121
1122 void CFWL_ListBox::DeleteAll() { 1122 void CFWL_ListBox::DeleteAll() {
1123 m_ItemArray.clear(); 1123 m_ItemArray.clear();
1124 } 1124 }
1125 1125
1126 uint32_t CFWL_ListBox::GetItemStates(CFWL_ListItem* pItem) { 1126 uint32_t CFWL_ListBox::GetItemStates(CFWL_ListItem* pItem) {
1127 if (!pItem) 1127 if (!pItem)
1128 return 0; 1128 return 0;
1129 return pItem->m_dwStates | pItem->m_dwCheckState; 1129 return pItem->m_dwStates | pItem->m_dwCheckState;
1130 } 1130 }
1131
OLDNEW
« no previous file with comments | « xfa/fwl/cfwl_listbox.h ('k') | xfa/fwl/cfwl_listitem.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698