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 "xfa/fwl/core/cfwl_checkbox.h" | 7 #include "xfa/fwl/core/cfwl_checkbox.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <memory> | 10 #include <memory> |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 CFWL_CheckBox::~CFWL_CheckBox() {} | 43 CFWL_CheckBox::~CFWL_CheckBox() {} |
44 | 44 |
45 FWL_Type CFWL_CheckBox::GetClassID() const { | 45 FWL_Type CFWL_CheckBox::GetClassID() const { |
46 return FWL_Type::CheckBox; | 46 return FWL_Type::CheckBox; |
47 } | 47 } |
48 | 48 |
49 void CFWL_CheckBox::SetBoxSize(FX_FLOAT fHeight) { | 49 void CFWL_CheckBox::SetBoxSize(FX_FLOAT fHeight) { |
50 m_fBoxHeight = fHeight; | 50 m_fBoxHeight = fHeight; |
51 } | 51 } |
52 | 52 |
53 void CFWL_CheckBox::GetWidgetRect(CFX_RectF& rect, bool bAutoSize) { | 53 CFX_RectF CFWL_CheckBox::GetWidgetRect(bool bAutoSize) { |
54 if (!bAutoSize) { | 54 if (!bAutoSize) |
55 rect = m_pProperties->m_rtWidget; | 55 return m_pProperties->m_rtWidget; |
56 return; | |
57 } | |
58 | 56 |
59 rect.Set(0, 0, 0, 0); | 57 CFX_RectF rect; |
60 if (!m_pProperties->m_pThemeProvider) | 58 if (!m_pProperties->m_pThemeProvider) |
61 m_pProperties->m_pThemeProvider = GetAvailableTheme(); | 59 m_pProperties->m_pThemeProvider = GetAvailableTheme(); |
62 if (!m_pProperties->m_pThemeProvider) | 60 if (!m_pProperties->m_pThemeProvider) |
63 return; | 61 return rect; |
64 | 62 |
65 CFX_SizeF sz = CalcTextSize( | 63 CFX_SizeF sz = CalcTextSize( |
66 L"Check box", m_pProperties->m_pThemeProvider, | 64 L"Check box", m_pProperties->m_pThemeProvider, |
67 !!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_MultiLine)); | 65 !!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_CKB_MultiLine)); |
68 rect.Set(0, 0, sz.x, sz.y); | 66 rect.Set(0, 0, sz.x, sz.y); |
69 rect.Inflate(kCaptionMargin, kCaptionMargin); | 67 rect.Inflate(kCaptionMargin, kCaptionMargin); |
70 | 68 |
71 rect.width += m_fBoxHeight; | 69 rect.width += m_fBoxHeight; |
72 rect.height = std::max(rect.height, m_fBoxHeight); | 70 rect.height = std::max(rect.height, m_fBoxHeight); |
73 InflateWidgetRect(rect); | 71 InflateWidgetRect(rect); |
| 72 return rect; |
74 } | 73 } |
75 | 74 |
76 void CFWL_CheckBox::Update() { | 75 void CFWL_CheckBox::Update() { |
77 if (IsLocked()) | 76 if (IsLocked()) |
78 return; | 77 return; |
79 if (!m_pProperties->m_pThemeProvider) | 78 if (!m_pProperties->m_pThemeProvider) |
80 m_pProperties->m_pThemeProvider = GetAvailableTheme(); | 79 m_pProperties->m_pThemeProvider = GetAvailableTheme(); |
81 | 80 |
82 UpdateTextOutStyles(); | 81 UpdateTextOutStyles(); |
83 Layout(); | 82 Layout(); |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 if (!pWidgetMgr->IsFormDisabled()) { | 300 if (!pWidgetMgr->IsFormDisabled()) { |
302 CFX_ArrayTemplate<CFWL_Widget*> radioarr; | 301 CFX_ArrayTemplate<CFWL_Widget*> radioarr; |
303 pWidgetMgr->GetSameGroupRadioButton(this, radioarr); | 302 pWidgetMgr->GetSameGroupRadioButton(this, radioarr); |
304 CFWL_CheckBox* pCheckBox = nullptr; | 303 CFWL_CheckBox* pCheckBox = nullptr; |
305 int32_t iCount = radioarr.GetSize(); | 304 int32_t iCount = radioarr.GetSize(); |
306 for (int32_t i = 0; i < iCount; i++) { | 305 for (int32_t i = 0; i < iCount; i++) { |
307 pCheckBox = static_cast<CFWL_CheckBox*>(radioarr[i]); | 306 pCheckBox = static_cast<CFWL_CheckBox*>(radioarr[i]); |
308 if (pCheckBox != this && | 307 if (pCheckBox != this && |
309 pCheckBox->GetStates() & FWL_STATE_CKB_Checked) { | 308 pCheckBox->GetStates() & FWL_STATE_CKB_Checked) { |
310 pCheckBox->SetCheckState(0); | 309 pCheckBox->SetCheckState(0); |
311 CFX_RectF rt; | 310 CFX_RectF rt = pCheckBox->GetWidgetRect(false); |
312 pCheckBox->GetWidgetRect(rt, false); | |
313 rt.left = rt.top = 0; | 311 rt.left = rt.top = 0; |
314 m_pWidgetMgr->RepaintWidget(pCheckBox, &rt); | 312 m_pWidgetMgr->RepaintWidget(pCheckBox, &rt); |
315 break; | 313 break; |
316 } | 314 } |
317 } | 315 } |
318 } | 316 } |
319 m_pProperties->m_dwStates |= FWL_STATE_CKB_Checked; | 317 m_pProperties->m_dwStates |= FWL_STATE_CKB_Checked; |
320 } | 318 } |
321 } else { | 319 } else { |
322 if ((m_pProperties->m_dwStates & FWL_STATE_CKB_CheckMask) == | 320 if ((m_pProperties->m_dwStates & FWL_STATE_CKB_CheckMask) == |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
473 } | 471 } |
474 | 472 |
475 void CFWL_CheckBox::OnKeyDown(CFWL_MsgKey* pMsg) { | 473 void CFWL_CheckBox::OnKeyDown(CFWL_MsgKey* pMsg) { |
476 if (pMsg->m_dwKeyCode == FWL_VKEY_Tab) | 474 if (pMsg->m_dwKeyCode == FWL_VKEY_Tab) |
477 return; | 475 return; |
478 if (pMsg->m_dwKeyCode == FWL_VKEY_Return || | 476 if (pMsg->m_dwKeyCode == FWL_VKEY_Return || |
479 pMsg->m_dwKeyCode == FWL_VKEY_Space) { | 477 pMsg->m_dwKeyCode == FWL_VKEY_Space) { |
480 NextStates(); | 478 NextStates(); |
481 } | 479 } |
482 } | 480 } |
OLD | NEW |