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

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

Issue 2467203003: Remove FX_BOOL from xfa. (Closed)
Patch Set: 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_monthcalendar.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 11 matching lines...) Expand all
22 } // namespace 22 } // namespace
23 23
24 IFWL_ListBox::IFWL_ListBox(const IFWL_App* app, 24 IFWL_ListBox::IFWL_ListBox(const IFWL_App* app,
25 const CFWL_WidgetImpProperties& properties, 25 const CFWL_WidgetImpProperties& properties,
26 IFWL_Widget* pOuter) 26 IFWL_Widget* pOuter)
27 : IFWL_Widget(app, properties, pOuter), 27 : IFWL_Widget(app, properties, pOuter),
28 m_dwTTOStyles(0), 28 m_dwTTOStyles(0),
29 m_iTTOAligns(0), 29 m_iTTOAligns(0),
30 m_hAnchor(nullptr), 30 m_hAnchor(nullptr),
31 m_fScorllBarWidth(0), 31 m_fScorllBarWidth(0),
32 m_bLButtonDown(FALSE), 32 m_bLButtonDown(false),
33 m_pScrollBarTP(nullptr) { 33 m_pScrollBarTP(nullptr) {
34 m_rtClient.Reset(); 34 m_rtClient.Reset();
35 m_rtConent.Reset(); 35 m_rtConent.Reset();
36 m_rtStatic.Reset(); 36 m_rtStatic.Reset();
37 } 37 }
38 38
39 IFWL_ListBox::~IFWL_ListBox() {} 39 IFWL_ListBox::~IFWL_ListBox() {}
40 40
41 FWL_Type IFWL_ListBox::GetClassID() const { 41 FWL_Type IFWL_ListBox::GetClassID() const {
42 return FWL_Type::ListBox; 42 return FWL_Type::ListBox;
43 } 43 }
44 44
45 FWL_Error IFWL_ListBox::GetWidgetRect(CFX_RectF& rect, FX_BOOL bAutoSize) { 45 FWL_Error IFWL_ListBox::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) {
46 if (bAutoSize) { 46 if (bAutoSize) {
47 rect.Set(0, 0, 0, 0); 47 rect.Set(0, 0, 0, 0);
48 if (!m_pProperties->m_pThemeProvider) { 48 if (!m_pProperties->m_pThemeProvider) {
49 m_pProperties->m_pThemeProvider = GetAvailableTheme(); 49 m_pProperties->m_pThemeProvider = GetAvailableTheme();
50 } 50 }
51 CFX_SizeF fs = CalcSize(TRUE); 51 CFX_SizeF fs = CalcSize(true);
52 rect.Set(0, 0, fs.x, fs.y); 52 rect.Set(0, 0, fs.x, fs.y);
53 IFWL_Widget::GetWidgetRect(rect, TRUE); 53 IFWL_Widget::GetWidgetRect(rect, true);
54 } else { 54 } else {
55 rect = m_pProperties->m_rtWidget; 55 rect = m_pProperties->m_rtWidget;
56 } 56 }
57 return FWL_Error::Succeeded; 57 return FWL_Error::Succeeded;
58 } 58 }
59 59
60 FWL_Error IFWL_ListBox::Update() { 60 FWL_Error IFWL_ListBox::Update() {
61 if (IsLocked()) { 61 if (IsLocked()) {
62 return FWL_Error::Indefinite; 62 return FWL_Error::Indefinite;
63 } 63 }
(...skipping 16 matching lines...) Expand all
80 if (m_pProperties->m_dwStyleExes & FWL_WGTSTYLE_RTLReading) { 80 if (m_pProperties->m_dwStyleExes & FWL_WGTSTYLE_RTLReading) {
81 m_dwTTOStyles |= FDE_TTOSTYLE_RTL; 81 m_dwTTOStyles |= FDE_TTOSTYLE_RTL;
82 } 82 }
83 m_dwTTOStyles |= FDE_TTOSTYLE_SingleLine; 83 m_dwTTOStyles |= FDE_TTOSTYLE_SingleLine;
84 m_fScorllBarWidth = GetScrollWidth(); 84 m_fScorllBarWidth = GetScrollWidth();
85 CalcSize(); 85 CalcSize();
86 return FWL_Error::Succeeded; 86 return FWL_Error::Succeeded;
87 } 87 }
88 88
89 FWL_WidgetHit IFWL_ListBox::HitTest(FX_FLOAT fx, FX_FLOAT fy) { 89 FWL_WidgetHit IFWL_ListBox::HitTest(FX_FLOAT fx, FX_FLOAT fy) {
90 if (IsShowScrollBar(FALSE)) { 90 if (IsShowScrollBar(false)) {
91 CFX_RectF rect; 91 CFX_RectF rect;
92 m_pHorzScrollBar->GetWidgetRect(rect); 92 m_pHorzScrollBar->GetWidgetRect(rect);
93 if (rect.Contains(fx, fy)) 93 if (rect.Contains(fx, fy))
94 return FWL_WidgetHit::HScrollBar; 94 return FWL_WidgetHit::HScrollBar;
95 } 95 }
96 if (IsShowScrollBar(TRUE)) { 96 if (IsShowScrollBar(true)) {
97 CFX_RectF rect; 97 CFX_RectF rect;
98 m_pVertScrollBar->GetWidgetRect(rect); 98 m_pVertScrollBar->GetWidgetRect(rect);
99 if (rect.Contains(fx, fy)) 99 if (rect.Contains(fx, fy))
100 return FWL_WidgetHit::VScrollBar; 100 return FWL_WidgetHit::VScrollBar;
101 } 101 }
102 if (m_rtClient.Contains(fx, fy)) 102 if (m_rtClient.Contains(fx, fy))
103 return FWL_WidgetHit::Client; 103 return FWL_WidgetHit::Client;
104 return FWL_WidgetHit::Unknown; 104 return FWL_WidgetHit::Unknown;
105 } 105 }
106 106
107 FWL_Error IFWL_ListBox::DrawWidget(CFX_Graphics* pGraphics, 107 FWL_Error IFWL_ListBox::DrawWidget(CFX_Graphics* pGraphics,
108 const CFX_Matrix* pMatrix) { 108 const CFX_Matrix* pMatrix) {
109 if (!pGraphics) 109 if (!pGraphics)
110 return FWL_Error::Indefinite; 110 return FWL_Error::Indefinite;
111 if (!m_pProperties->m_pThemeProvider) 111 if (!m_pProperties->m_pThemeProvider)
112 return FWL_Error::Indefinite; 112 return FWL_Error::Indefinite;
113 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider; 113 IFWL_ThemeProvider* pTheme = m_pProperties->m_pThemeProvider;
114 pGraphics->SaveGraphState(); 114 pGraphics->SaveGraphState();
115 if (HasBorder()) { 115 if (HasBorder()) {
116 DrawBorder(pGraphics, CFWL_Part::Border, pTheme, pMatrix); 116 DrawBorder(pGraphics, CFWL_Part::Border, pTheme, pMatrix);
117 } 117 }
118 if (HasEdge()) { 118 if (HasEdge()) {
119 DrawEdge(pGraphics, CFWL_Part::Edge, pTheme, pMatrix); 119 DrawEdge(pGraphics, CFWL_Part::Edge, pTheme, pMatrix);
120 } 120 }
121 CFX_RectF rtClip(m_rtConent); 121 CFX_RectF rtClip(m_rtConent);
122 if (IsShowScrollBar(FALSE)) { 122 if (IsShowScrollBar(false)) {
123 rtClip.height -= m_fScorllBarWidth; 123 rtClip.height -= m_fScorllBarWidth;
124 } 124 }
125 if (IsShowScrollBar(TRUE)) { 125 if (IsShowScrollBar(true)) {
126 rtClip.width -= m_fScorllBarWidth; 126 rtClip.width -= m_fScorllBarWidth;
127 } 127 }
128 if (pMatrix) { 128 if (pMatrix) {
129 pMatrix->TransformRect(rtClip); 129 pMatrix->TransformRect(rtClip);
130 } 130 }
131 pGraphics->SetClipRect(rtClip); 131 pGraphics->SetClipRect(rtClip);
132 if ((m_pProperties->m_dwStyles & FWL_WGTSTYLE_NoBackground) == 0) { 132 if ((m_pProperties->m_dwStyles & FWL_WGTSTYLE_NoBackground) == 0) {
133 DrawBkground(pGraphics, pTheme, pMatrix); 133 DrawBkground(pGraphics, pTheme, pMatrix);
134 } 134 }
135 DrawItems(pGraphics, pTheme, pMatrix); 135 DrawItems(pGraphics, pTheme, pMatrix);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 if (index == nIndex) { 204 if (index == nIndex) {
205 return i; 205 return i;
206 } else { 206 } else {
207 index++; 207 index++;
208 } 208 }
209 } 209 }
210 } 210 }
211 return -1; 211 return -1;
212 } 212 }
213 213
214 FWL_Error IFWL_ListBox::SetSelItem(IFWL_ListItem* pItem, FX_BOOL bSelect) { 214 FWL_Error IFWL_ListBox::SetSelItem(IFWL_ListItem* pItem, bool bSelect) {
215 if (!m_pProperties->m_pDataProvider) 215 if (!m_pProperties->m_pDataProvider)
216 return FWL_Error::Indefinite; 216 return FWL_Error::Indefinite;
217 if (!pItem) { 217 if (!pItem) {
218 if (bSelect) { 218 if (bSelect) {
219 SelectAll(); 219 SelectAll();
220 } else { 220 } else {
221 ClearSelection(); 221 ClearSelection();
222 SetFocusItem(nullptr); 222 SetFocusItem(nullptr);
223 } 223 }
224 return FWL_Error::Indefinite; 224 return FWL_Error::Indefinite;
(...skipping 11 matching lines...) Expand all
236 if (!m_pProperties->m_pDataProvider) 236 if (!m_pProperties->m_pDataProvider)
237 return FWL_Error::Indefinite; 237 return FWL_Error::Indefinite;
238 IFWL_ListBoxDP* pData = 238 IFWL_ListBoxDP* pData =
239 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 239 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
240 if (!pItem) 240 if (!pItem)
241 return FWL_Error::Indefinite; 241 return FWL_Error::Indefinite;
242 pData->GetItemText(this, pItem, wsText); 242 pData->GetItemText(this, pItem, wsText);
243 return FWL_Error::Succeeded; 243 return FWL_Error::Succeeded;
244 } 244 }
245 245
246 FWL_Error IFWL_ListBox::GetScrollPos(FX_FLOAT& fPos, FX_BOOL bVert) { 246 FWL_Error IFWL_ListBox::GetScrollPos(FX_FLOAT& fPos, bool bVert) {
247 if ((bVert && IsShowScrollBar(TRUE)) || (!bVert && IsShowScrollBar(FALSE))) { 247 if ((bVert && IsShowScrollBar(true)) || (!bVert && IsShowScrollBar(false))) {
248 IFWL_ScrollBar* pScrollBar = 248 IFWL_ScrollBar* pScrollBar =
249 bVert ? m_pVertScrollBar.get() : m_pHorzScrollBar.get(); 249 bVert ? m_pVertScrollBar.get() : m_pHorzScrollBar.get();
250 fPos = pScrollBar->GetPos(); 250 fPos = pScrollBar->GetPos();
251 return FWL_Error::Succeeded; 251 return FWL_Error::Succeeded;
252 } 252 }
253 return FWL_Error::Indefinite; 253 return FWL_Error::Indefinite;
254 } 254 }
255 255
256 IFWL_ListItem* IFWL_ListBox::GetItem(IFWL_ListItem* pItem, uint32_t dwKeyCode) { 256 IFWL_ListItem* IFWL_ListBox::GetItem(IFWL_ListItem* pItem, uint32_t dwKeyCode) {
257 IFWL_ListItem* hRet = nullptr; 257 IFWL_ListItem* hRet = nullptr;
(...skipping 20 matching lines...) Expand all
278 hRet = pData->GetItem(this, iDstItem); 278 hRet = pData->GetItem(this, iDstItem);
279 break; 279 break;
280 } 280 }
281 default: {} 281 default: {}
282 } 282 }
283 return hRet; 283 return hRet;
284 } 284 }
285 285
286 void IFWL_ListBox::SetSelection(IFWL_ListItem* hStart, 286 void IFWL_ListBox::SetSelection(IFWL_ListItem* hStart,
287 IFWL_ListItem* hEnd, 287 IFWL_ListItem* hEnd,
288 FX_BOOL bSelected) { 288 bool bSelected) {
289 IFWL_ListBoxDP* pData = 289 IFWL_ListBoxDP* pData =
290 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 290 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
291 int32_t iStart = pData->GetItemIndex(this, hStart); 291 int32_t iStart = pData->GetItemIndex(this, hStart);
292 int32_t iEnd = pData->GetItemIndex(this, hEnd); 292 int32_t iEnd = pData->GetItemIndex(this, hEnd);
293 if (iStart > iEnd) { 293 if (iStart > iEnd) {
294 int32_t iTemp = iStart; 294 int32_t iTemp = iStart;
295 iStart = iEnd; 295 iStart = iEnd;
296 iEnd = iTemp; 296 iEnd = iTemp;
297 } 297 }
298 if (bSelected) { 298 if (bSelected) {
299 int32_t iCount = pData->CountItems(this); 299 int32_t iCount = pData->CountItems(this);
300 for (int32_t i = 0; i < iCount; i++) { 300 for (int32_t i = 0; i < iCount; i++) {
301 IFWL_ListItem* pItem = pData->GetItem(this, i); 301 IFWL_ListItem* pItem = pData->GetItem(this, i);
302 SetSelectionDirect(pItem, FALSE); 302 SetSelectionDirect(pItem, false);
303 } 303 }
304 } 304 }
305 for (; iStart <= iEnd; iStart++) { 305 for (; iStart <= iEnd; iStart++) {
306 IFWL_ListItem* pItem = pData->GetItem(this, iStart); 306 IFWL_ListItem* pItem = pData->GetItem(this, iStart);
307 SetSelectionDirect(pItem, bSelected); 307 SetSelectionDirect(pItem, bSelected);
308 } 308 }
309 } 309 }
310 310
311 void IFWL_ListBox::SetSelectionDirect(IFWL_ListItem* pItem, FX_BOOL bSelect) { 311 void IFWL_ListBox::SetSelectionDirect(IFWL_ListItem* pItem, bool bSelect) {
312 IFWL_ListBoxDP* pData = 312 IFWL_ListBoxDP* pData =
313 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 313 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
314 uint32_t dwOldStyle = pData->GetItemStyles(this, pItem); 314 uint32_t dwOldStyle = pData->GetItemStyles(this, pItem);
315 bSelect ? dwOldStyle |= FWL_ITEMSTATE_LTB_Selected 315 bSelect ? dwOldStyle |= FWL_ITEMSTATE_LTB_Selected
316 : dwOldStyle &= ~FWL_ITEMSTATE_LTB_Selected; 316 : dwOldStyle &= ~FWL_ITEMSTATE_LTB_Selected;
317 pData->SetItemStyles(this, pItem, dwOldStyle); 317 pData->SetItemStyles(this, pItem, dwOldStyle);
318 } 318 }
319 319
320 FX_BOOL IFWL_ListBox::IsItemSelected(IFWL_ListItem* pItem) { 320 bool IFWL_ListBox::IsItemSelected(IFWL_ListItem* pItem) {
321 IFWL_ListBoxDP* pData = 321 IFWL_ListBoxDP* pData =
322 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 322 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
323 uint32_t dwState = pData->GetItemStyles(this, pItem); 323 uint32_t dwState = pData->GetItemStyles(this, pItem);
324 return (dwState & FWL_ITEMSTATE_LTB_Selected) != 0; 324 return (dwState & FWL_ITEMSTATE_LTB_Selected) != 0;
325 } 325 }
326 326
327 void IFWL_ListBox::ClearSelection() { 327 void IFWL_ListBox::ClearSelection() {
328 FX_BOOL bMulti = 328 bool bMulti = m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection;
329 m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection;
330 IFWL_ListBoxDP* pData = 329 IFWL_ListBoxDP* pData =
331 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 330 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
332 int32_t iCount = pData->CountItems(this); 331 int32_t iCount = pData->CountItems(this);
333 for (int32_t i = 0; i < iCount; i++) { 332 for (int32_t i = 0; i < iCount; i++) {
334 IFWL_ListItem* pItem = pData->GetItem(this, i); 333 IFWL_ListItem* pItem = pData->GetItem(this, i);
335 uint32_t dwState = pData->GetItemStyles(this, pItem); 334 uint32_t dwState = pData->GetItemStyles(this, pItem);
336 if (!(dwState & FWL_ITEMSTATE_LTB_Selected)) 335 if (!(dwState & FWL_ITEMSTATE_LTB_Selected))
337 continue; 336 continue;
338 SetSelectionDirect(pItem, FALSE); 337 SetSelectionDirect(pItem, false);
339 if (!bMulti) 338 if (!bMulti)
340 return; 339 return;
341 } 340 }
342 } 341 }
343 342
344 void IFWL_ListBox::SelectAll() { 343 void IFWL_ListBox::SelectAll() {
345 FX_BOOL bMulti = 344 bool bMulti = m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection;
346 m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection;
347 if (!bMulti) { 345 if (!bMulti) {
348 return; 346 return;
349 } 347 }
350 IFWL_ListBoxDP* pData = 348 IFWL_ListBoxDP* pData =
351 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 349 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
352 int32_t iCount = pData->CountItems(this); 350 int32_t iCount = pData->CountItems(this);
353 if (iCount > 0) { 351 if (iCount > 0) {
354 IFWL_ListItem* pItemStart = pData->GetItem(this, 0); 352 IFWL_ListItem* pItemStart = pData->GetItem(this, 0);
355 IFWL_ListItem* pItemEnd = pData->GetItem(this, iCount - 1); 353 IFWL_ListItem* pItemEnd = pData->GetItem(this, iCount - 1);
356 SetSelection(pItemStart, pItemEnd, FALSE); 354 SetSelection(pItemStart, pItemEnd, false);
357 } 355 }
358 } 356 }
359 357
360 IFWL_ListItem* IFWL_ListBox::GetFocusedItem() { 358 IFWL_ListItem* IFWL_ListBox::GetFocusedItem() {
361 IFWL_ListBoxDP* pData = 359 IFWL_ListBoxDP* pData =
362 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 360 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
363 int32_t iCount = pData->CountItems(this); 361 int32_t iCount = pData->CountItems(this);
364 for (int32_t i = 0; i < iCount; i++) { 362 for (int32_t i = 0; i < iCount; i++) {
365 IFWL_ListItem* pItem = pData->GetItem(this, i); 363 IFWL_ListItem* pItem = pData->GetItem(this, i);
366 if (!pItem) 364 if (!pItem)
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 CFX_RectF rtItem; 409 CFX_RectF rtItem;
412 pData->GetItemRect(this, pItem, rtItem); 410 pData->GetItemRect(this, pItem, rtItem);
413 rtItem.Offset(-fPosX, -fPosY); 411 rtItem.Offset(-fPosX, -fPosY);
414 if (rtItem.Contains(fx, fy)) { 412 if (rtItem.Contains(fx, fy)) {
415 return pItem; 413 return pItem;
416 } 414 }
417 } 415 }
418 return nullptr; 416 return nullptr;
419 } 417 }
420 418
421 FX_BOOL IFWL_ListBox::GetItemCheckRect(IFWL_ListItem* pItem, 419 bool IFWL_ListBox::GetItemCheckRect(IFWL_ListItem* pItem, CFX_RectF& rtCheck) {
422 CFX_RectF& rtCheck) {
423 if (!m_pProperties->m_pDataProvider) 420 if (!m_pProperties->m_pDataProvider)
424 return FALSE; 421 return false;
425 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check)) { 422 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check)) {
426 return FALSE; 423 return false;
427 } 424 }
428 IFWL_ListBoxDP* pData = 425 IFWL_ListBoxDP* pData =
429 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 426 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
430 pData->GetItemCheckRect(this, pItem, rtCheck); 427 pData->GetItemCheckRect(this, pItem, rtCheck);
431 return TRUE; 428 return true;
432 } 429 }
433 430
434 FX_BOOL IFWL_ListBox::GetItemChecked(IFWL_ListItem* pItem) { 431 bool IFWL_ListBox::GetItemChecked(IFWL_ListItem* pItem) {
435 if (!m_pProperties->m_pDataProvider) 432 if (!m_pProperties->m_pDataProvider)
436 return FALSE; 433 return false;
437 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check)) { 434 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check)) {
438 return FALSE; 435 return false;
439 } 436 }
440 IFWL_ListBoxDP* pData = 437 IFWL_ListBoxDP* pData =
441 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 438 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
442 return !!(pData->GetItemCheckState(this, pItem) & FWL_ITEMSTATE_LTB_Checked); 439 return !!(pData->GetItemCheckState(this, pItem) & FWL_ITEMSTATE_LTB_Checked);
443 } 440 }
444 441
445 FX_BOOL IFWL_ListBox::SetItemChecked(IFWL_ListItem* pItem, FX_BOOL bChecked) { 442 bool IFWL_ListBox::SetItemChecked(IFWL_ListItem* pItem, bool bChecked) {
446 if (!m_pProperties->m_pDataProvider) 443 if (!m_pProperties->m_pDataProvider)
447 return FALSE; 444 return false;
448 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check)) { 445 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check)) {
449 return FALSE; 446 return false;
450 } 447 }
451 IFWL_ListBoxDP* pData = 448 IFWL_ListBoxDP* pData =
452 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 449 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
453 pData->SetItemCheckState(this, pItem, 450 pData->SetItemCheckState(this, pItem,
454 bChecked ? FWL_ITEMSTATE_LTB_Checked : 0); 451 bChecked ? FWL_ITEMSTATE_LTB_Checked : 0);
455 return TRUE; 452 return true;
456 } 453 }
457 454
458 FX_BOOL IFWL_ListBox::ScrollToVisible(IFWL_ListItem* pItem) { 455 bool IFWL_ListBox::ScrollToVisible(IFWL_ListItem* pItem) {
459 if (!m_pVertScrollBar) 456 if (!m_pVertScrollBar)
460 return FALSE; 457 return false;
461 CFX_RectF rtItem; 458 CFX_RectF rtItem;
462 IFWL_ListBoxDP* pData = 459 IFWL_ListBoxDP* pData =
463 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 460 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
464 pData->GetItemRect(this, pItem, rtItem); 461 pData->GetItemRect(this, pItem, rtItem);
465 FX_BOOL bScroll = FALSE; 462 bool bScroll = false;
466 FX_FLOAT fPosY = m_pVertScrollBar->GetPos(); 463 FX_FLOAT fPosY = m_pVertScrollBar->GetPos();
467 rtItem.Offset(0, -fPosY + m_rtConent.top); 464 rtItem.Offset(0, -fPosY + m_rtConent.top);
468 if (rtItem.top < m_rtConent.top) { 465 if (rtItem.top < m_rtConent.top) {
469 fPosY += rtItem.top - m_rtConent.top; 466 fPosY += rtItem.top - m_rtConent.top;
470 bScroll = TRUE; 467 bScroll = true;
471 } else if (rtItem.bottom() > m_rtConent.bottom()) { 468 } else if (rtItem.bottom() > m_rtConent.bottom()) {
472 fPosY += rtItem.bottom() - m_rtConent.bottom(); 469 fPosY += rtItem.bottom() - m_rtConent.bottom();
473 bScroll = TRUE; 470 bScroll = true;
474 } 471 }
475 if (!bScroll) { 472 if (!bScroll) {
476 return FALSE; 473 return false;
477 } 474 }
478 m_pVertScrollBar->SetPos(fPosY); 475 m_pVertScrollBar->SetPos(fPosY);
479 m_pVertScrollBar->SetTrackPos(fPosY); 476 m_pVertScrollBar->SetTrackPos(fPosY);
480 Repaint(&m_rtClient); 477 Repaint(&m_rtClient);
481 return TRUE; 478 return true;
482 } 479 }
483 480
484 void IFWL_ListBox::DrawBkground(CFX_Graphics* pGraphics, 481 void IFWL_ListBox::DrawBkground(CFX_Graphics* pGraphics,
485 IFWL_ThemeProvider* pTheme, 482 IFWL_ThemeProvider* pTheme,
486 const CFX_Matrix* pMatrix) { 483 const CFX_Matrix* pMatrix) {
487 if (!pGraphics) 484 if (!pGraphics)
488 return; 485 return;
489 if (!pTheme) 486 if (!pTheme)
490 return; 487 return;
491 CFWL_ThemeBackground param; 488 CFWL_ThemeBackground param;
492 param.m_pWidget = this; 489 param.m_pWidget = this;
493 param.m_iPart = CFWL_Part::Background; 490 param.m_iPart = CFWL_Part::Background;
494 param.m_dwStates = 0; 491 param.m_dwStates = 0;
495 param.m_pGraphics = pGraphics; 492 param.m_pGraphics = pGraphics;
496 param.m_matrix.Concat(*pMatrix); 493 param.m_matrix.Concat(*pMatrix);
497 param.m_rtPart = m_rtClient; 494 param.m_rtPart = m_rtClient;
498 if (IsShowScrollBar(FALSE) && IsShowScrollBar(TRUE)) { 495 if (IsShowScrollBar(false) && IsShowScrollBar(true)) {
499 param.m_pData = &m_rtStatic; 496 param.m_pData = &m_rtStatic;
500 } 497 }
501 if (!IsEnabled()) { 498 if (!IsEnabled()) {
502 param.m_dwStates = CFWL_PartState_Disabled; 499 param.m_dwStates = CFWL_PartState_Disabled;
503 } 500 }
504 pTheme->DrawBackground(&param); 501 pTheme->DrawBackground(&param);
505 } 502 }
506 503
507 void IFWL_ListBox::DrawItems(CFX_Graphics* pGraphics, 504 void IFWL_ListBox::DrawItems(CFX_Graphics* pGraphics,
508 IFWL_ThemeProvider* pTheme, 505 IFWL_ThemeProvider* pTheme,
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 textParam.m_matrix.Concat(*pMatrix); 649 textParam.m_matrix.Concat(*pMatrix);
653 textParam.m_rtPart = rtText; 650 textParam.m_rtPart = rtText;
654 textParam.m_wsText = wsText; 651 textParam.m_wsText = wsText;
655 textParam.m_dwTTOStyles = m_dwTTOStyles; 652 textParam.m_dwTTOStyles = m_dwTTOStyles;
656 textParam.m_iTTOAlign = m_iTTOAligns; 653 textParam.m_iTTOAlign = m_iTTOAligns;
657 textParam.m_bMaximize = true; 654 textParam.m_bMaximize = true;
658 pTheme->DrawText(&textParam); 655 pTheme->DrawText(&textParam);
659 } 656 }
660 } 657 }
661 658
662 CFX_SizeF IFWL_ListBox::CalcSize(FX_BOOL bAutoSize) { 659 CFX_SizeF IFWL_ListBox::CalcSize(bool bAutoSize) {
663 CFX_SizeF fs; 660 CFX_SizeF fs;
664 if (!m_pProperties->m_pThemeProvider) 661 if (!m_pProperties->m_pThemeProvider)
665 return fs; 662 return fs;
666 663
667 GetClientRect(m_rtClient); 664 GetClientRect(m_rtClient);
668 m_rtConent = m_rtClient; 665 m_rtConent = m_rtClient;
669 CFX_RectF rtUIMargin; 666 CFX_RectF rtUIMargin;
670 rtUIMargin.Set(0, 0, 0, 0); 667 rtUIMargin.Set(0, 0, 0, 0);
671 if (!m_pOuter) { 668 if (!m_pOuter) {
672 CFX_RectF* pUIMargin = static_cast<CFX_RectF*>( 669 CFX_RectF* pUIMargin = static_cast<CFX_RectF*>(
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 for (int32_t i = 0; i < iCount; i++) { 712 for (int32_t i = 0; i < iCount; i++) {
716 IFWL_ListItem* htem = pData->GetItem(this, i); 713 IFWL_ListItem* htem = pData->GetItem(this, i);
717 GetItemSize(fs, htem, fWidth, m_fItemHeight, bAutoSize); 714 GetItemSize(fs, htem, fWidth, m_fItemHeight, bAutoSize);
718 } 715 }
719 } 716 }
720 if (bAutoSize) { 717 if (bAutoSize) {
721 return fs; 718 return fs;
722 } 719 }
723 FX_FLOAT iWidth = m_rtClient.width - rtUIMargin.left - rtUIMargin.width; 720 FX_FLOAT iWidth = m_rtClient.width - rtUIMargin.left - rtUIMargin.width;
724 FX_FLOAT iHeight = m_rtClient.height; 721 FX_FLOAT iHeight = m_rtClient.height;
725 FX_BOOL bShowVertScr = 722 bool bShowVertScr =
726 (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarAlaways) && 723 (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarAlaways) &&
727 (m_pProperties->m_dwStyles & FWL_WGTSTYLE_VScroll); 724 (m_pProperties->m_dwStyles & FWL_WGTSTYLE_VScroll);
728 FX_BOOL bShowHorzScr = 725 bool bShowHorzScr =
729 (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarAlaways) && 726 (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarAlaways) &&
730 (m_pProperties->m_dwStyles & FWL_WGTSTYLE_HScroll); 727 (m_pProperties->m_dwStyles & FWL_WGTSTYLE_HScroll);
731 if (!bShowVertScr && m_pProperties->m_dwStyles & FWL_WGTSTYLE_VScroll && 728 if (!bShowVertScr && m_pProperties->m_dwStyles & FWL_WGTSTYLE_VScroll &&
732 (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiColumn) == 0) { 729 (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiColumn) == 0) {
733 bShowVertScr = (fs.y > iHeight); 730 bShowVertScr = (fs.y > iHeight);
734 } 731 }
735 if (!bShowHorzScr && m_pProperties->m_dwStyles & FWL_WGTSTYLE_HScroll) { 732 if (!bShowHorzScr && m_pProperties->m_dwStyles & FWL_WGTSTYLE_HScroll) {
736 bShowHorzScr = (fs.x > iWidth); 733 bShowHorzScr = (fs.x > iWidth);
737 } 734 }
738 CFX_SizeF szRange; 735 CFX_SizeF szRange;
(...skipping 20 matching lines...) Expand all
759 fPos = 0; 756 fPos = 0;
760 } 757 }
761 if (fPos > szRange.y) { 758 if (fPos > szRange.y) {
762 fPos = szRange.y; 759 fPos = szRange.y;
763 } 760 }
764 m_pVertScrollBar->SetPos(fPos); 761 m_pVertScrollBar->SetPos(fPos);
765 m_pVertScrollBar->SetTrackPos(fPos); 762 m_pVertScrollBar->SetTrackPos(fPos);
766 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarFocus) == 763 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarFocus) ==
767 0 || 764 0 ||
768 (m_pProperties->m_dwStates & FWL_WGTSTATE_Focused)) { 765 (m_pProperties->m_dwStates & FWL_WGTSTATE_Focused)) {
769 m_pVertScrollBar->SetStates(FWL_WGTSTATE_Invisible, FALSE); 766 m_pVertScrollBar->SetStates(FWL_WGTSTATE_Invisible, false);
770 } 767 }
771 m_pVertScrollBar->Update(); 768 m_pVertScrollBar->Update();
772 } else if (m_pVertScrollBar) { 769 } else if (m_pVertScrollBar) {
773 m_pVertScrollBar->SetPos(0); 770 m_pVertScrollBar->SetPos(0);
774 m_pVertScrollBar->SetTrackPos(0); 771 m_pVertScrollBar->SetTrackPos(0);
775 m_pVertScrollBar->SetStates(FWL_WGTSTATE_Invisible, TRUE); 772 m_pVertScrollBar->SetStates(FWL_WGTSTATE_Invisible, true);
776 } 773 }
777 if (bShowHorzScr) { 774 if (bShowHorzScr) {
778 if (!m_pHorzScrollBar) { 775 if (!m_pHorzScrollBar) {
779 InitScrollBar(FALSE); 776 InitScrollBar(false);
780 } 777 }
781 CFX_RectF rtScrollBar; 778 CFX_RectF rtScrollBar;
782 rtScrollBar.Set(m_rtClient.left, m_rtClient.bottom() - m_fScorllBarWidth, 779 rtScrollBar.Set(m_rtClient.left, m_rtClient.bottom() - m_fScorllBarWidth,
783 m_rtClient.width, m_fScorllBarWidth); 780 m_rtClient.width, m_fScorllBarWidth);
784 if (bShowVertScr) { 781 if (bShowVertScr) {
785 rtScrollBar.width -= m_fScorllBarWidth; 782 rtScrollBar.width -= m_fScorllBarWidth;
786 } 783 }
787 m_pHorzScrollBar->SetWidgetRect(rtScrollBar); 784 m_pHorzScrollBar->SetWidgetRect(rtScrollBar);
788 szRange.x = 0, szRange.y = fs.x - rtScrollBar.width; 785 szRange.x = 0, szRange.y = fs.x - rtScrollBar.width;
789 m_pHorzScrollBar->SetRange(szRange.x, szRange.y); 786 m_pHorzScrollBar->SetRange(szRange.x, szRange.y);
790 m_pHorzScrollBar->SetPageSize(fWidth * 9 / 10); 787 m_pHorzScrollBar->SetPageSize(fWidth * 9 / 10);
791 m_pHorzScrollBar->SetStepSize(fWidth / 10); 788 m_pHorzScrollBar->SetStepSize(fWidth / 10);
792 FX_FLOAT fPos = m_pHorzScrollBar->GetPos(); 789 FX_FLOAT fPos = m_pHorzScrollBar->GetPos();
793 if (fPos < 0) { 790 if (fPos < 0) {
794 fPos = 0; 791 fPos = 0;
795 } 792 }
796 if (fPos > szRange.y) { 793 if (fPos > szRange.y) {
797 fPos = szRange.y; 794 fPos = szRange.y;
798 } 795 }
799 m_pHorzScrollBar->SetPos(fPos); 796 m_pHorzScrollBar->SetPos(fPos);
800 m_pHorzScrollBar->SetTrackPos(fPos); 797 m_pHorzScrollBar->SetTrackPos(fPos);
801 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarFocus) == 798 if ((m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_ShowScrollBarFocus) ==
802 0 || 799 0 ||
803 (m_pProperties->m_dwStates & FWL_WGTSTATE_Focused)) { 800 (m_pProperties->m_dwStates & FWL_WGTSTATE_Focused)) {
804 m_pHorzScrollBar->SetStates(FWL_WGTSTATE_Invisible, FALSE); 801 m_pHorzScrollBar->SetStates(FWL_WGTSTATE_Invisible, false);
805 } 802 }
806 m_pHorzScrollBar->Update(); 803 m_pHorzScrollBar->Update();
807 } else if (m_pHorzScrollBar) { 804 } else if (m_pHorzScrollBar) {
808 m_pHorzScrollBar->SetPos(0); 805 m_pHorzScrollBar->SetPos(0);
809 m_pHorzScrollBar->SetTrackPos(0); 806 m_pHorzScrollBar->SetTrackPos(0);
810 m_pHorzScrollBar->SetStates(FWL_WGTSTATE_Invisible, TRUE); 807 m_pHorzScrollBar->SetStates(FWL_WGTSTATE_Invisible, true);
811 } 808 }
812 if (bShowVertScr && bShowHorzScr) { 809 if (bShowVertScr && bShowHorzScr) {
813 m_rtStatic.Set(m_rtClient.right() - m_fScorllBarWidth, 810 m_rtStatic.Set(m_rtClient.right() - m_fScorllBarWidth,
814 m_rtClient.bottom() - m_fScorllBarWidth, m_fScorllBarWidth, 811 m_rtClient.bottom() - m_fScorllBarWidth, m_fScorllBarWidth,
815 m_fScorllBarWidth); 812 m_fScorllBarWidth);
816 } 813 }
817 return fs; 814 return fs;
818 } 815 }
819 816
820 void IFWL_ListBox::GetItemSize(CFX_SizeF& size, 817 void IFWL_ListBox::GetItemSize(CFX_SizeF& size,
821 IFWL_ListItem* pItem, 818 IFWL_ListItem* pItem,
822 FX_FLOAT fWidth, 819 FX_FLOAT fWidth,
823 FX_FLOAT fItemHeight, 820 FX_FLOAT fItemHeight,
824 FX_BOOL bAutoSize) { 821 bool bAutoSize) {
825 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiColumn) { 822 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiColumn) {
826 } else { 823 } else {
827 if (!bAutoSize) { 824 if (!bAutoSize) {
828 CFX_RectF rtItem; 825 CFX_RectF rtItem;
829 rtItem.Set(0, size.y, fWidth, fItemHeight); 826 rtItem.Set(0, size.y, fWidth, fItemHeight);
830 IFWL_ListBoxDP* pData = 827 IFWL_ListBoxDP* pData =
831 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider); 828 static_cast<IFWL_ListBoxDP*>(m_pProperties->m_pDataProvider);
832 pData->SetItemRect(this, pItem, rtItem); 829 pData->SetItemRect(this, pItem, rtItem);
833 } 830 }
834 size.x = fWidth; 831 size.x = fWidth;
(...skipping 30 matching lines...) Expand all
865 } 862 }
866 863
867 FX_FLOAT IFWL_ListBox::GetItemHeigt() { 864 FX_FLOAT IFWL_ListBox::GetItemHeigt() {
868 FX_FLOAT* pfFont = 865 FX_FLOAT* pfFont =
869 static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::FontSize)); 866 static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::FontSize));
870 if (!pfFont) 867 if (!pfFont)
871 return 20; 868 return 20;
872 return *pfFont + 2 * kItemTextMargin; 869 return *pfFont + 2 * kItemTextMargin;
873 } 870 }
874 871
875 void IFWL_ListBox::InitScrollBar(FX_BOOL bVert) { 872 void IFWL_ListBox::InitScrollBar(bool bVert) {
876 if ((bVert && m_pVertScrollBar) || (!bVert && m_pHorzScrollBar)) { 873 if ((bVert && m_pVertScrollBar) || (!bVert && m_pHorzScrollBar)) {
877 return; 874 return;
878 } 875 }
879 CFWL_WidgetImpProperties prop; 876 CFWL_WidgetImpProperties prop;
880 prop.m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz; 877 prop.m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz;
881 prop.m_dwStates = FWL_WGTSTATE_Invisible; 878 prop.m_dwStates = FWL_WGTSTATE_Invisible;
882 prop.m_pParent = this; 879 prop.m_pParent = this;
883 prop.m_pThemeProvider = m_pScrollBarTP; 880 prop.m_pThemeProvider = m_pScrollBarTP;
884 (bVert ? &m_pVertScrollBar : &m_pHorzScrollBar) 881 (bVert ? &m_pVertScrollBar : &m_pHorzScrollBar)
885 ->reset(new IFWL_ScrollBar(m_pOwnerApp, prop, this)); 882 ->reset(new IFWL_ScrollBar(m_pOwnerApp, prop, this));
886 } 883 }
887 884
888 FX_BOOL IFWL_ListBox::IsShowScrollBar(FX_BOOL bVert) { 885 bool IFWL_ListBox::IsShowScrollBar(bool bVert) {
889 IFWL_ScrollBar* pScrollbar = 886 IFWL_ScrollBar* pScrollbar =
890 bVert ? m_pVertScrollBar.get() : m_pHorzScrollBar.get(); 887 bVert ? m_pVertScrollBar.get() : m_pHorzScrollBar.get();
891 if (!pScrollbar || (pScrollbar->GetStates() & FWL_WGTSTATE_Invisible)) { 888 if (!pScrollbar || (pScrollbar->GetStates() & FWL_WGTSTATE_Invisible)) {
892 return FALSE; 889 return false;
893 } 890 }
894 return !(m_pProperties->m_dwStyleExes & 891 return !(m_pProperties->m_dwStyleExes &
895 FWL_STYLEEXT_LTB_ShowScrollBarFocus) || 892 FWL_STYLEEXT_LTB_ShowScrollBarFocus) ||
896 (m_pProperties->m_dwStates & FWL_WGTSTATE_Focused); 893 (m_pProperties->m_dwStates & FWL_WGTSTATE_Focused);
897 } 894 }
898 895
899 void IFWL_ListBox::ProcessSelChanged() { 896 void IFWL_ListBox::ProcessSelChanged() {
900 CFWL_EvtLtbSelChanged selEvent; 897 CFWL_EvtLtbSelChanged selEvent;
901 selEvent.m_pSrcTarget = this; 898 selEvent.m_pSrcTarget = this;
902 CFX_Int32Array arrSels; 899 CFX_Int32Array arrSels;
(...skipping 10 matching lines...) Expand all
913 910
914 void IFWL_ListBox::OnProcessMessage(CFWL_Message* pMessage) { 911 void IFWL_ListBox::OnProcessMessage(CFWL_Message* pMessage) {
915 if (!pMessage) 912 if (!pMessage)
916 return; 913 return;
917 if (!IsEnabled()) 914 if (!IsEnabled())
918 return; 915 return;
919 916
920 CFWL_MessageType dwMsgCode = pMessage->GetClassID(); 917 CFWL_MessageType dwMsgCode = pMessage->GetClassID();
921 switch (dwMsgCode) { 918 switch (dwMsgCode) {
922 case CFWL_MessageType::SetFocus: 919 case CFWL_MessageType::SetFocus:
923 OnFocusChanged(pMessage, TRUE); 920 OnFocusChanged(pMessage, true);
924 break; 921 break;
925 case CFWL_MessageType::KillFocus: 922 case CFWL_MessageType::KillFocus:
926 OnFocusChanged(pMessage, FALSE); 923 OnFocusChanged(pMessage, false);
927 break; 924 break;
928 case CFWL_MessageType::Mouse: { 925 case CFWL_MessageType::Mouse: {
929 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage); 926 CFWL_MsgMouse* pMsg = static_cast<CFWL_MsgMouse*>(pMessage);
930 switch (pMsg->m_dwCmd) { 927 switch (pMsg->m_dwCmd) {
931 case FWL_MouseCommand::LeftButtonDown: 928 case FWL_MouseCommand::LeftButtonDown:
932 OnLButtonDown(pMsg); 929 OnLButtonDown(pMsg);
933 break; 930 break;
934 case FWL_MouseCommand::LeftButtonUp: 931 case FWL_MouseCommand::LeftButtonUp:
935 OnLButtonUp(pMsg); 932 OnLButtonUp(pMsg);
936 break; 933 break;
(...skipping 30 matching lines...) Expand all
967 OnScroll(static_cast<IFWL_ScrollBar*>(pSrcTarget), 964 OnScroll(static_cast<IFWL_ScrollBar*>(pSrcTarget),
968 pScrollEvent->m_iScrollCode, pScrollEvent->m_fPos); 965 pScrollEvent->m_iScrollCode, pScrollEvent->m_fPos);
969 } 966 }
970 } 967 }
971 968
972 void IFWL_ListBox::OnDrawWidget(CFX_Graphics* pGraphics, 969 void IFWL_ListBox::OnDrawWidget(CFX_Graphics* pGraphics,
973 const CFX_Matrix* pMatrix) { 970 const CFX_Matrix* pMatrix) {
974 DrawWidget(pGraphics, pMatrix); 971 DrawWidget(pGraphics, pMatrix);
975 } 972 }
976 973
977 void IFWL_ListBox::OnFocusChanged(CFWL_Message* pMsg, FX_BOOL bSet) { 974 void IFWL_ListBox::OnFocusChanged(CFWL_Message* pMsg, bool bSet) {
978 if (GetStylesEx() & FWL_STYLEEXT_LTB_ShowScrollBarFocus) { 975 if (GetStylesEx() & FWL_STYLEEXT_LTB_ShowScrollBarFocus) {
979 if (m_pVertScrollBar) 976 if (m_pVertScrollBar)
980 m_pVertScrollBar->SetStates(FWL_WGTSTATE_Invisible, !bSet); 977 m_pVertScrollBar->SetStates(FWL_WGTSTATE_Invisible, !bSet);
981 if (m_pHorzScrollBar) 978 if (m_pHorzScrollBar)
982 m_pHorzScrollBar->SetStates(FWL_WGTSTATE_Invisible, !bSet); 979 m_pHorzScrollBar->SetStates(FWL_WGTSTATE_Invisible, !bSet);
983 } 980 }
984 if (bSet) 981 if (bSet)
985 m_pProperties->m_dwStates |= (FWL_WGTSTATE_Focused); 982 m_pProperties->m_dwStates |= (FWL_WGTSTATE_Focused);
986 else 983 else
987 m_pProperties->m_dwStates &= ~(FWL_WGTSTATE_Focused); 984 m_pProperties->m_dwStates &= ~(FWL_WGTSTATE_Focused);
988 985
989 Repaint(&m_rtClient); 986 Repaint(&m_rtClient);
990 } 987 }
991 988
992 void IFWL_ListBox::OnLButtonDown(CFWL_MsgMouse* pMsg) { 989 void IFWL_ListBox::OnLButtonDown(CFWL_MsgMouse* pMsg) {
993 m_bLButtonDown = TRUE; 990 m_bLButtonDown = true;
994 if ((m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0) 991 if ((m_pProperties->m_dwStates & FWL_WGTSTATE_Focused) == 0)
995 SetFocus(TRUE); 992 SetFocus(true);
996 993
997 IFWL_ListItem* pItem = GetItemAtPoint(pMsg->m_fx, pMsg->m_fy); 994 IFWL_ListItem* pItem = GetItemAtPoint(pMsg->m_fx, pMsg->m_fy);
998 if (!pItem) 995 if (!pItem)
999 return; 996 return;
1000 997
1001 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection) { 998 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection) {
1002 if (pMsg->m_dwFlags & FWL_KEYFLAG_Ctrl) { 999 if (pMsg->m_dwFlags & FWL_KEYFLAG_Ctrl) {
1003 FX_BOOL bSelected = IsItemSelected(pItem); 1000 bool bSelected = IsItemSelected(pItem);
1004 SetSelectionDirect(pItem, !bSelected); 1001 SetSelectionDirect(pItem, !bSelected);
1005 m_hAnchor = pItem; 1002 m_hAnchor = pItem;
1006 } else if (pMsg->m_dwFlags & FWL_KEYFLAG_Shift) { 1003 } else if (pMsg->m_dwFlags & FWL_KEYFLAG_Shift) {
1007 if (m_hAnchor) 1004 if (m_hAnchor)
1008 SetSelection(m_hAnchor, pItem, TRUE); 1005 SetSelection(m_hAnchor, pItem, true);
1009 else 1006 else
1010 SetSelectionDirect(pItem, TRUE); 1007 SetSelectionDirect(pItem, true);
1011 } else { 1008 } else {
1012 SetSelection(pItem, pItem, TRUE); 1009 SetSelection(pItem, pItem, true);
1013 m_hAnchor = pItem; 1010 m_hAnchor = pItem;
1014 } 1011 }
1015 } else { 1012 } else {
1016 SetSelection(pItem, pItem, TRUE); 1013 SetSelection(pItem, pItem, true);
1017 } 1014 }
1018 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check) { 1015 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_Check) {
1019 IFWL_ListItem* hSelectedItem = GetItemAtPoint(pMsg->m_fx, pMsg->m_fy); 1016 IFWL_ListItem* hSelectedItem = GetItemAtPoint(pMsg->m_fx, pMsg->m_fy);
1020 CFX_RectF rtCheck; 1017 CFX_RectF rtCheck;
1021 GetItemCheckRect(hSelectedItem, rtCheck); 1018 GetItemCheckRect(hSelectedItem, rtCheck);
1022 FX_BOOL bChecked = GetItemChecked(pItem); 1019 bool bChecked = GetItemChecked(pItem);
1023 if (rtCheck.Contains(pMsg->m_fx, pMsg->m_fy)) { 1020 if (rtCheck.Contains(pMsg->m_fx, pMsg->m_fy)) {
1024 SetItemChecked(pItem, !bChecked); 1021 SetItemChecked(pItem, !bChecked);
1025 Update(); 1022 Update();
1026 } 1023 }
1027 } 1024 }
1028 SetFocusItem(pItem); 1025 SetFocusItem(pItem);
1029 ScrollToVisible(pItem); 1026 ScrollToVisible(pItem);
1030 SetGrab(TRUE); 1027 SetGrab(true);
1031 ProcessSelChanged(); 1028 ProcessSelChanged();
1032 Repaint(&m_rtClient); 1029 Repaint(&m_rtClient);
1033 } 1030 }
1034 1031
1035 void IFWL_ListBox::OnLButtonUp(CFWL_MsgMouse* pMsg) { 1032 void IFWL_ListBox::OnLButtonUp(CFWL_MsgMouse* pMsg) {
1036 if (!m_bLButtonDown) 1033 if (!m_bLButtonDown)
1037 return; 1034 return;
1038 1035
1039 m_bLButtonDown = FALSE; 1036 m_bLButtonDown = false;
1040 SetGrab(FALSE); 1037 SetGrab(false);
1041 DispatchSelChangedEv(); 1038 DispatchSelChangedEv();
1042 } 1039 }
1043 1040
1044 void IFWL_ListBox::OnMouseWheel(CFWL_MsgMouseWheel* pMsg) { 1041 void IFWL_ListBox::OnMouseWheel(CFWL_MsgMouseWheel* pMsg) {
1045 if (IsShowScrollBar(TRUE)) 1042 if (IsShowScrollBar(true))
1046 m_pVertScrollBar->GetDelegate()->OnProcessMessage(pMsg); 1043 m_pVertScrollBar->GetDelegate()->OnProcessMessage(pMsg);
1047 } 1044 }
1048 1045
1049 void IFWL_ListBox::OnKeyDown(CFWL_MsgKey* pMsg) { 1046 void IFWL_ListBox::OnKeyDown(CFWL_MsgKey* pMsg) {
1050 uint32_t dwKeyCode = pMsg->m_dwKeyCode; 1047 uint32_t dwKeyCode = pMsg->m_dwKeyCode;
1051 switch (dwKeyCode) { 1048 switch (dwKeyCode) {
1052 case FWL_VKEY_Tab: 1049 case FWL_VKEY_Tab:
1053 case FWL_VKEY_Up: 1050 case FWL_VKEY_Up:
1054 case FWL_VKEY_Down: 1051 case FWL_VKEY_Down:
1055 case FWL_VKEY_Home: 1052 case FWL_VKEY_Home:
1056 case FWL_VKEY_End: { 1053 case FWL_VKEY_End: {
1057 IFWL_ListItem* pItem = GetFocusedItem(); 1054 IFWL_ListItem* pItem = GetFocusedItem();
1058 pItem = GetItem(pItem, dwKeyCode); 1055 pItem = GetItem(pItem, dwKeyCode);
1059 bool bShift = !!(pMsg->m_dwFlags & FWL_KEYFLAG_Shift); 1056 bool bShift = !!(pMsg->m_dwFlags & FWL_KEYFLAG_Shift);
1060 bool bCtrl = !!(pMsg->m_dwFlags & FWL_KEYFLAG_Ctrl); 1057 bool bCtrl = !!(pMsg->m_dwFlags & FWL_KEYFLAG_Ctrl);
1061 OnVK(pItem, bShift, bCtrl); 1058 OnVK(pItem, bShift, bCtrl);
1062 DispatchSelChangedEv(); 1059 DispatchSelChangedEv();
1063 ProcessSelChanged(); 1060 ProcessSelChanged();
1064 break; 1061 break;
1065 } 1062 }
1066 default: 1063 default:
1067 break; 1064 break;
1068 } 1065 }
1069 } 1066 }
1070 1067
1071 void IFWL_ListBox::OnVK(IFWL_ListItem* pItem, FX_BOOL bShift, FX_BOOL bCtrl) { 1068 void IFWL_ListBox::OnVK(IFWL_ListItem* pItem, bool bShift, bool bCtrl) {
1072 if (!pItem) 1069 if (!pItem)
1073 return; 1070 return;
1074 1071
1075 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection) { 1072 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_LTB_MultiSelection) {
1076 if (bCtrl) { 1073 if (bCtrl) {
1077 } else if (bShift) { 1074 } else if (bShift) {
1078 if (m_hAnchor) 1075 if (m_hAnchor)
1079 SetSelection(m_hAnchor, pItem, TRUE); 1076 SetSelection(m_hAnchor, pItem, true);
1080 else 1077 else
1081 SetSelectionDirect(pItem, TRUE); 1078 SetSelectionDirect(pItem, true);
1082 } else { 1079 } else {
1083 SetSelection(pItem, pItem, TRUE); 1080 SetSelection(pItem, pItem, true);
1084 m_hAnchor = pItem; 1081 m_hAnchor = pItem;
1085 } 1082 }
1086 } else { 1083 } else {
1087 SetSelection(pItem, pItem, TRUE); 1084 SetSelection(pItem, pItem, true);
1088 } 1085 }
1089 1086
1090 SetFocusItem(pItem); 1087 SetFocusItem(pItem);
1091 ScrollToVisible(pItem); 1088 ScrollToVisible(pItem);
1092 1089
1093 CFX_RectF rtInvalidate; 1090 CFX_RectF rtInvalidate;
1094 rtInvalidate.Set(0, 0, m_pProperties->m_rtWidget.width, 1091 rtInvalidate.Set(0, 0, m_pProperties->m_rtWidget.width,
1095 m_pProperties->m_rtWidget.height); 1092 m_pProperties->m_rtWidget.height);
1096 Repaint(&rtInvalidate); 1093 Repaint(&rtInvalidate);
1097 } 1094 }
1098 1095
1099 FX_BOOL IFWL_ListBox::OnScroll(IFWL_ScrollBar* pScrollBar, 1096 bool IFWL_ListBox::OnScroll(IFWL_ScrollBar* pScrollBar,
1100 uint32_t dwCode, 1097 uint32_t dwCode,
1101 FX_FLOAT fPos) { 1098 FX_FLOAT fPos) {
1102 CFX_SizeF fs; 1099 CFX_SizeF fs;
1103 pScrollBar->GetRange(fs.x, fs.y); 1100 pScrollBar->GetRange(fs.x, fs.y);
1104 FX_FLOAT iCurPos = pScrollBar->GetPos(); 1101 FX_FLOAT iCurPos = pScrollBar->GetPos();
1105 FX_FLOAT fStep = pScrollBar->GetStepSize(); 1102 FX_FLOAT fStep = pScrollBar->GetStepSize();
1106 switch (dwCode) { 1103 switch (dwCode) {
1107 case FWL_SCBCODE_Min: { 1104 case FWL_SCBCODE_Min: {
1108 fPos = fs.x; 1105 fPos = fs.x;
1109 break; 1106 break;
1110 } 1107 }
1111 case FWL_SCBCODE_Max: { 1108 case FWL_SCBCODE_Max: {
(...skipping 21 matching lines...) Expand all
1133 case FWL_SCBCODE_PageForward: { 1130 case FWL_SCBCODE_PageForward: {
1134 fPos += pScrollBar->GetPageSize(); 1131 fPos += pScrollBar->GetPageSize();
1135 if (fPos > fs.y) 1132 if (fPos > fs.y)
1136 fPos = fs.y; 1133 fPos = fs.y;
1137 break; 1134 break;
1138 } 1135 }
1139 case FWL_SCBCODE_Pos: 1136 case FWL_SCBCODE_Pos:
1140 case FWL_SCBCODE_TrackPos: 1137 case FWL_SCBCODE_TrackPos:
1141 break; 1138 break;
1142 case FWL_SCBCODE_EndScroll: 1139 case FWL_SCBCODE_EndScroll:
1143 return FALSE; 1140 return false;
1144 } 1141 }
1145 if (iCurPos != fPos) { 1142 if (iCurPos != fPos) {
1146 pScrollBar->SetPos(fPos); 1143 pScrollBar->SetPos(fPos);
1147 pScrollBar->SetTrackPos(fPos); 1144 pScrollBar->SetTrackPos(fPos);
1148 Repaint(&m_rtClient); 1145 Repaint(&m_rtClient);
1149 } 1146 }
1150 return TRUE; 1147 return true;
1151 } 1148 }
1152 1149
1153 void IFWL_ListBox::DispatchSelChangedEv() { 1150 void IFWL_ListBox::DispatchSelChangedEv() {
1154 CFWL_EvtLtbSelChanged ev; 1151 CFWL_EvtLtbSelChanged ev;
1155 ev.m_pSrcTarget = this; 1152 ev.m_pSrcTarget = this;
1156 DispatchEvent(&ev); 1153 DispatchEvent(&ev);
1157 } 1154 }
OLDNEW
« no previous file with comments | « xfa/fwl/core/ifwl_listbox.h ('k') | xfa/fwl/core/ifwl_monthcalendar.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698