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

Side by Side Diff: xfa/fwl/core/ifwl_listbox.cpp

Issue 2492563002: Continue IFWL cleanup (Closed)
Patch Set: Rebase to master Created 4 years, 1 month 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/core/ifwl_listbox.h ('k') | xfa/fwl/core/ifwl_picturebox.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/ifwl_listbox.h" 7 #include "xfa/fwl/core/ifwl_listbox.h"
8 8
9 #include "third_party/base/ptr_util.h" 9 #include "third_party/base/ptr_util.h"
10 #include "xfa/fde/tto/fde_textout.h" 10 #include "xfa/fde/tto/fde_textout.h"
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 if (index == nIndex) { 199 if (index == nIndex) {
200 return i; 200 return i;
201 } else { 201 } else {
202 index++; 202 index++;
203 } 203 }
204 } 204 }
205 } 205 }
206 return -1; 206 return -1;
207 } 207 }
208 208
209 FWL_Error IFWL_ListBox::SetSelItem(CFWL_ListItem* pItem, bool bSelect) { 209 void IFWL_ListBox::SetSelItem(CFWL_ListItem* pItem, bool bSelect) {
210 if (!m_pProperties->m_pDataProvider) 210 if (!m_pProperties->m_pDataProvider)
211 return FWL_Error::Indefinite; 211 return;
212 if (!pItem) { 212 if (!pItem) {
213 if (bSelect) { 213 if (bSelect) {
214 SelectAll(); 214 SelectAll();
215 } else { 215 } else {
216 ClearSelection(); 216 ClearSelection();
217 SetFocusItem(nullptr); 217 SetFocusItem(nullptr);
218 } 218 }
219 return FWL_Error::Indefinite; 219 return;
220 } 220 }
221 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection) { 221 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection) {
222 SetSelectionDirect(pItem, bSelect); 222 SetSelectionDirect(pItem, bSelect);
223 } else { 223 } else {
224 SetSelection(pItem, pItem, bSelect); 224 SetSelection(pItem, pItem, bSelect);
225 } 225 }
226 return FWL_Error::Succeeded;
227 } 226 }
228 227
229 FWL_Error IFWL_ListBox::GetItemText(CFWL_ListItem* pItem, 228 void IFWL_ListBox::GetItemText(CFWL_ListItem* pItem, CFX_WideString& wsText) {
230 CFX_WideString& wsText) {
231 if (!m_pProperties->m_pDataProvider) 229 if (!m_pProperties->m_pDataProvider)
232 return FWL_Error::Indefinite; 230 return;
233 IFWL_ListBoxDP* pData = 231 IFWL_ListBoxDP* pData =
234 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 232 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
235 if (!pItem) 233 if (!pItem)
236 return FWL_Error::Indefinite; 234 return;
237 pData->GetItemText(this, pItem, wsText); 235 pData->GetItemText(this, pItem, wsText);
238 return FWL_Error::Succeeded;
239 } 236 }
240 237
241 FWL_Error IFWL_ListBox::GetScrollPos(FX_FLOAT& fPos, bool bVert) { 238 void IFWL_ListBox::GetScrollPos(FX_FLOAT& fPos, bool bVert) {
242 if ((bVert && IsShowScrollBar(true)) || (!bVert && IsShowScrollBar(false))) { 239 if ((bVert && IsShowScrollBar(true)) || (!bVert && IsShowScrollBar(false))) {
243 IFWL_ScrollBar* pScrollBar = 240 IFWL_ScrollBar* pScrollBar =
244 bVert ? m_pVertScrollBar.get() : m_pHorzScrollBar.get(); 241 bVert ? m_pVertScrollBar.get() : m_pHorzScrollBar.get();
245 fPos = pScrollBar->GetPos(); 242 fPos = pScrollBar->GetPos();
246 return FWL_Error::Succeeded;
247 } 243 }
248 return FWL_Error::Indefinite;
249 } 244 }
250 245
251 CFWL_ListItem* IFWL_ListBox::GetItem(CFWL_ListItem* pItem, uint32_t dwKeyCode) { 246 CFWL_ListItem* IFWL_ListBox::GetItem(CFWL_ListItem* pItem, uint32_t dwKeyCode) {
252 CFWL_ListItem* hRet = nullptr; 247 CFWL_ListItem* hRet = nullptr;
253 switch (dwKeyCode) { 248 switch (dwKeyCode) {
254 case FWL_VKEY_Up: 249 case FWL_VKEY_Up:
255 case FWL_VKEY_Down: 250 case FWL_VKEY_Down:
256 case FWL_VKEY_Home: 251 case FWL_VKEY_Home:
257 case FWL_VKEY_End: { 252 case FWL_VKEY_End: {
258 const bool bUp = dwKeyCode == FWL_VKEY_Up; 253 const bool bUp = dwKeyCode == FWL_VKEY_Up;
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 fWidth += 2 * kItemTextMargin; 687 fWidth += 2 * kItemTextMargin;
693 if (!bAutoSize) { 688 if (!bAutoSize) {
694 FX_FLOAT fActualWidth = 689 FX_FLOAT fActualWidth =
695 m_rtClient.width - rtUIMargin.left - rtUIMargin.width; 690 m_rtClient.width - rtUIMargin.left - rtUIMargin.width;
696 if (fWidth < fActualWidth) { 691 if (fWidth < fActualWidth) {
697 fWidth = fActualWidth; 692 fWidth = fActualWidth;
698 } 693 }
699 } 694 }
700 IFWL_ListBoxDP* pData = 695 IFWL_ListBoxDP* pData =
701 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 696 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
702 m_fItemHeight = GetItemHeigt(); 697 m_fItemHeight = CalcItemHeight();
703 if ((GetStylesEx() & FWL_STYLEEXT_LTB_Icon)) 698 if ((GetStylesEx() & FWL_STYLEEXT_LTB_Icon))
704 fWidth += m_fItemHeight; 699 fWidth += m_fItemHeight;
705 700
706 int32_t iCount = pData->CountItems(this); 701 int32_t iCount = pData->CountItems(this);
707 for (int32_t i = 0; i < iCount; i++) { 702 for (int32_t i = 0; i < iCount; i++) {
708 CFWL_ListItem* htem = pData->GetItem(this, i); 703 CFWL_ListItem* htem = pData->GetItem(this, i);
709 GetItemSize(fs, htem, fWidth, m_fItemHeight, bAutoSize); 704 GetItemSize(fs, htem, fWidth, m_fItemHeight, bAutoSize);
710 } 705 }
711 } 706 }
712 if (bAutoSize) { 707 if (bAutoSize) {
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
849 } 844 }
850 845
851 FX_FLOAT IFWL_ListBox::GetScrollWidth() { 846 FX_FLOAT IFWL_ListBox::GetScrollWidth() {
852 FX_FLOAT* pfWidth = static_cast<FX_FLOAT*>( 847 FX_FLOAT* pfWidth = static_cast<FX_FLOAT*>(
853 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth)); 848 GetThemeCapacity(CFWL_WidgetCapacity::ScrollBarWidth));
854 if (!pfWidth) 849 if (!pfWidth)
855 return 0; 850 return 0;
856 return *pfWidth; 851 return *pfWidth;
857 } 852 }
858 853
859 FX_FLOAT IFWL_ListBox::GetItemHeigt() { 854 FX_FLOAT IFWL_ListBox::CalcItemHeight() {
860 FX_FLOAT* pfFont = 855 FX_FLOAT* pfFont =
861 static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::FontSize)); 856 static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::FontSize));
862 if (!pfFont) 857 if (!pfFont)
863 return 20; 858 return 20;
864 return *pfFont + 2 * kItemTextMargin; 859 return *pfFont + 2 * kItemTextMargin;
865 } 860 }
866 861
867 void IFWL_ListBox::InitScrollBar(bool bVert) { 862 void IFWL_ListBox::InitScrollBar(bool bVert) {
868 if ((bVert && m_pVertScrollBar) || (!bVert && m_pHorzScrollBar)) { 863 if ((bVert && m_pVertScrollBar) || (!bVert && m_pHorzScrollBar)) {
869 return; 864 return;
870 } 865 }
871 auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>(); 866 auto prop = pdfium::MakeUnique<CFWL_WidgetProperties>();
872 prop->m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz; 867 prop->m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz;
873 prop->m_dwStates = FWL_WGTSTATE_Invisible; 868 prop->m_dwStates = FWL_WGTSTATE_Invisible;
874 prop->m_pParent = this; 869 prop->m_pParent = this;
875 prop->m_pThemeProvider = m_pScrollBarTP; 870 prop->m_pThemeProvider = m_pScrollBarTP;
876 (bVert ? &m_pVertScrollBar : &m_pHorzScrollBar) 871 IFWL_ScrollBar* sb = new IFWL_ScrollBar(m_pOwnerApp, std::move(prop), this);
877 ->reset(new IFWL_ScrollBar(m_pOwnerApp, std::move(prop), this)); 872 if (bVert)
873 m_pVertScrollBar.reset(sb);
874 else
875 m_pHorzScrollBar.reset(sb);
878 } 876 }
879 877
880 bool IFWL_ListBox::IsShowScrollBar(bool bVert) { 878 bool IFWL_ListBox::IsShowScrollBar(bool bVert) {
881 IFWL_ScrollBar* pScrollbar = 879 IFWL_ScrollBar* pScrollbar =
882 bVert ? m_pVertScrollBar.get() : m_pHorzScrollBar.get(); 880 bVert ? m_pVertScrollBar.get() : m_pHorzScrollBar.get();
883 if (!pScrollbar || (pScrollbar->GetStates() & FWL_WGTSTATE_Invisible)) { 881 if (!pScrollbar || (pScrollbar->GetStates() & FWL_WGTSTATE_Invisible)) {
884 return false; 882 return false;
885 } 883 }
886 return !(m_pProperties->m_dwStyleExes & 884 return !(m_pProperties->m_dwStyleExes &
887 FWL_STYLEEXT_LTB_ShowScrollBarFocus) || 885 FWL_STYLEEXT_LTB_ShowScrollBarFocus) ||
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 Repaint(&m_rtClient); 1139 Repaint(&m_rtClient);
1142 } 1140 }
1143 return true; 1141 return true;
1144 } 1142 }
1145 1143
1146 void IFWL_ListBox::DispatchSelChangedEv() { 1144 void IFWL_ListBox::DispatchSelChangedEv() {
1147 CFWL_EvtLtbSelChanged ev; 1145 CFWL_EvtLtbSelChanged ev;
1148 ev.m_pSrcTarget = this; 1146 ev.m_pSrcTarget = this;
1149 DispatchEvent(&ev); 1147 DispatchEvent(&ev);
1150 } 1148 }
OLDNEW
« no previous file with comments | « xfa/fwl/core/ifwl_listbox.h ('k') | xfa/fwl/core/ifwl_picturebox.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698