1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors
2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file.
4*3ac0a46fSAndroid Build Coastguard Worker
5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6*3ac0a46fSAndroid Build Coastguard Worker
7*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfsdk/formfiller/cffl_combobox.h"
8*3ac0a46fSAndroid Build Coastguard Worker
9*3ac0a46fSAndroid Build Coastguard Worker #include <utility>
10*3ac0a46fSAndroid Build Coastguard Worker
11*3ac0a46fSAndroid Build Coastguard Worker #include "constants/form_flags.h"
12*3ac0a46fSAndroid Build Coastguard Worker #include "core/fpdfdoc/cpdf_bafontmap.h"
13*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfsdk/cpdfsdk_widget.h"
14*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfsdk/formfiller/cffl_interactiveformfiller.h"
15*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfsdk/formfiller/cffl_perwindowdata.h"
16*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfsdk/pwl/cpwl_combo_box.h"
17*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfsdk/pwl/cpwl_edit.h"
18*3ac0a46fSAndroid Build Coastguard Worker
CFFL_ComboBox(CFFL_InteractiveFormFiller * pFormFiller,CPDFSDK_Widget * pWidget)19*3ac0a46fSAndroid Build Coastguard Worker CFFL_ComboBox::CFFL_ComboBox(CFFL_InteractiveFormFiller* pFormFiller,
20*3ac0a46fSAndroid Build Coastguard Worker CPDFSDK_Widget* pWidget)
21*3ac0a46fSAndroid Build Coastguard Worker : CFFL_TextObject(pFormFiller, pWidget) {}
22*3ac0a46fSAndroid Build Coastguard Worker
~CFFL_ComboBox()23*3ac0a46fSAndroid Build Coastguard Worker CFFL_ComboBox::~CFFL_ComboBox() {
24*3ac0a46fSAndroid Build Coastguard Worker // See comment in cffl_formfiller.h.
25*3ac0a46fSAndroid Build Coastguard Worker // The font map should be stored somewhere more appropriate so it will live
26*3ac0a46fSAndroid Build Coastguard Worker // until the PWL_Edit is done with it. pdfium:566
27*3ac0a46fSAndroid Build Coastguard Worker DestroyWindows();
28*3ac0a46fSAndroid Build Coastguard Worker }
29*3ac0a46fSAndroid Build Coastguard Worker
GetCreateParam()30*3ac0a46fSAndroid Build Coastguard Worker CPWL_Wnd::CreateParams CFFL_ComboBox::GetCreateParam() {
31*3ac0a46fSAndroid Build Coastguard Worker CPWL_Wnd::CreateParams cp = CFFL_TextObject::GetCreateParam();
32*3ac0a46fSAndroid Build Coastguard Worker if (m_pWidget->GetFieldFlags() & pdfium::form_flags::kChoiceEdit)
33*3ac0a46fSAndroid Build Coastguard Worker cp.dwFlags |= PCBS_ALLOWCUSTOMTEXT;
34*3ac0a46fSAndroid Build Coastguard Worker
35*3ac0a46fSAndroid Build Coastguard Worker cp.pFontMap = GetOrCreateFontMap();
36*3ac0a46fSAndroid Build Coastguard Worker return cp;
37*3ac0a46fSAndroid Build Coastguard Worker }
38*3ac0a46fSAndroid Build Coastguard Worker
NewPWLWindow(const CPWL_Wnd::CreateParams & cp,std::unique_ptr<IPWL_FillerNotify::PerWindowData> pAttachedData)39*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<CPWL_Wnd> CFFL_ComboBox::NewPWLWindow(
40*3ac0a46fSAndroid Build Coastguard Worker const CPWL_Wnd::CreateParams& cp,
41*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<IPWL_FillerNotify::PerWindowData> pAttachedData) {
42*3ac0a46fSAndroid Build Coastguard Worker static_cast<CFFL_PerWindowData*>(pAttachedData.get())->SetFormField(this);
43*3ac0a46fSAndroid Build Coastguard Worker auto pWnd = std::make_unique<CPWL_ComboBox>(cp, std::move(pAttachedData));
44*3ac0a46fSAndroid Build Coastguard Worker pWnd->Realize();
45*3ac0a46fSAndroid Build Coastguard Worker
46*3ac0a46fSAndroid Build Coastguard Worker int32_t nCurSel = m_pWidget->GetSelectedIndex(0);
47*3ac0a46fSAndroid Build Coastguard Worker WideString swText;
48*3ac0a46fSAndroid Build Coastguard Worker if (nCurSel < 0)
49*3ac0a46fSAndroid Build Coastguard Worker swText = m_pWidget->GetValue();
50*3ac0a46fSAndroid Build Coastguard Worker else
51*3ac0a46fSAndroid Build Coastguard Worker swText = m_pWidget->GetOptionLabel(nCurSel);
52*3ac0a46fSAndroid Build Coastguard Worker
53*3ac0a46fSAndroid Build Coastguard Worker for (int32_t i = 0, sz = m_pWidget->CountOptions(); i < sz; i++)
54*3ac0a46fSAndroid Build Coastguard Worker pWnd->AddString(m_pWidget->GetOptionLabel(i));
55*3ac0a46fSAndroid Build Coastguard Worker
56*3ac0a46fSAndroid Build Coastguard Worker pWnd->SetSelect(nCurSel);
57*3ac0a46fSAndroid Build Coastguard Worker pWnd->SetText(swText);
58*3ac0a46fSAndroid Build Coastguard Worker return std::move(pWnd);
59*3ac0a46fSAndroid Build Coastguard Worker }
60*3ac0a46fSAndroid Build Coastguard Worker
OnChar(CPDFSDK_Widget * pWidget,uint32_t nChar,Mask<FWL_EVENTFLAG> nFlags)61*3ac0a46fSAndroid Build Coastguard Worker bool CFFL_ComboBox::OnChar(CPDFSDK_Widget* pWidget,
62*3ac0a46fSAndroid Build Coastguard Worker uint32_t nChar,
63*3ac0a46fSAndroid Build Coastguard Worker Mask<FWL_EVENTFLAG> nFlags) {
64*3ac0a46fSAndroid Build Coastguard Worker return CFFL_TextObject::OnChar(pWidget, nChar, nFlags);
65*3ac0a46fSAndroid Build Coastguard Worker }
66*3ac0a46fSAndroid Build Coastguard Worker
IsDataChanged(const CPDFSDK_PageView * pPageView)67*3ac0a46fSAndroid Build Coastguard Worker bool CFFL_ComboBox::IsDataChanged(const CPDFSDK_PageView* pPageView) {
68*3ac0a46fSAndroid Build Coastguard Worker auto* pWnd = GetPWLComboBox(pPageView);
69*3ac0a46fSAndroid Build Coastguard Worker if (!pWnd)
70*3ac0a46fSAndroid Build Coastguard Worker return false;
71*3ac0a46fSAndroid Build Coastguard Worker
72*3ac0a46fSAndroid Build Coastguard Worker int32_t nCurSel = pWnd->GetSelect();
73*3ac0a46fSAndroid Build Coastguard Worker if (!(m_pWidget->GetFieldFlags() & pdfium::form_flags::kChoiceEdit))
74*3ac0a46fSAndroid Build Coastguard Worker return nCurSel != m_pWidget->GetSelectedIndex(0);
75*3ac0a46fSAndroid Build Coastguard Worker
76*3ac0a46fSAndroid Build Coastguard Worker if (nCurSel >= 0)
77*3ac0a46fSAndroid Build Coastguard Worker return nCurSel != m_pWidget->GetSelectedIndex(0);
78*3ac0a46fSAndroid Build Coastguard Worker
79*3ac0a46fSAndroid Build Coastguard Worker return pWnd->GetText() != m_pWidget->GetValue();
80*3ac0a46fSAndroid Build Coastguard Worker }
81*3ac0a46fSAndroid Build Coastguard Worker
SaveData(const CPDFSDK_PageView * pPageView)82*3ac0a46fSAndroid Build Coastguard Worker void CFFL_ComboBox::SaveData(const CPDFSDK_PageView* pPageView) {
83*3ac0a46fSAndroid Build Coastguard Worker CPWL_ComboBox* pWnd = GetPWLComboBox(pPageView);
84*3ac0a46fSAndroid Build Coastguard Worker if (!pWnd)
85*3ac0a46fSAndroid Build Coastguard Worker return;
86*3ac0a46fSAndroid Build Coastguard Worker
87*3ac0a46fSAndroid Build Coastguard Worker WideString swText = pWnd->GetText();
88*3ac0a46fSAndroid Build Coastguard Worker int32_t nCurSel = pWnd->GetSelect();
89*3ac0a46fSAndroid Build Coastguard Worker bool bSetValue = false;
90*3ac0a46fSAndroid Build Coastguard Worker if (m_pWidget->GetFieldFlags() & pdfium::form_flags::kChoiceEdit)
91*3ac0a46fSAndroid Build Coastguard Worker bSetValue = (nCurSel < 0) || (swText != m_pWidget->GetOptionLabel(nCurSel));
92*3ac0a46fSAndroid Build Coastguard Worker
93*3ac0a46fSAndroid Build Coastguard Worker if (bSetValue) {
94*3ac0a46fSAndroid Build Coastguard Worker m_pWidget->SetValue(swText);
95*3ac0a46fSAndroid Build Coastguard Worker } else {
96*3ac0a46fSAndroid Build Coastguard Worker m_pWidget->GetSelectedIndex(0);
97*3ac0a46fSAndroid Build Coastguard Worker m_pWidget->SetOptionSelection(nCurSel);
98*3ac0a46fSAndroid Build Coastguard Worker }
99*3ac0a46fSAndroid Build Coastguard Worker ObservedPtr<CPDFSDK_Widget> observed_widget(m_pWidget);
100*3ac0a46fSAndroid Build Coastguard Worker ObservedPtr<CFFL_ComboBox> observed_this(this);
101*3ac0a46fSAndroid Build Coastguard Worker m_pWidget->ResetFieldAppearance();
102*3ac0a46fSAndroid Build Coastguard Worker if (!observed_widget)
103*3ac0a46fSAndroid Build Coastguard Worker return;
104*3ac0a46fSAndroid Build Coastguard Worker
105*3ac0a46fSAndroid Build Coastguard Worker m_pWidget->UpdateField();
106*3ac0a46fSAndroid Build Coastguard Worker if (!observed_widget || !observed_this)
107*3ac0a46fSAndroid Build Coastguard Worker return;
108*3ac0a46fSAndroid Build Coastguard Worker
109*3ac0a46fSAndroid Build Coastguard Worker SetChangeMark();
110*3ac0a46fSAndroid Build Coastguard Worker }
111*3ac0a46fSAndroid Build Coastguard Worker
GetActionData(const CPDFSDK_PageView * pPageView,CPDF_AAction::AActionType type,CFFL_FieldAction & fa)112*3ac0a46fSAndroid Build Coastguard Worker void CFFL_ComboBox::GetActionData(const CPDFSDK_PageView* pPageView,
113*3ac0a46fSAndroid Build Coastguard Worker CPDF_AAction::AActionType type,
114*3ac0a46fSAndroid Build Coastguard Worker CFFL_FieldAction& fa) {
115*3ac0a46fSAndroid Build Coastguard Worker switch (type) {
116*3ac0a46fSAndroid Build Coastguard Worker case CPDF_AAction::kKeyStroke:
117*3ac0a46fSAndroid Build Coastguard Worker if (CPWL_ComboBox* pComboBox = GetPWLComboBox(pPageView)) {
118*3ac0a46fSAndroid Build Coastguard Worker if (CPWL_Edit* pEdit = pComboBox->GetEdit()) {
119*3ac0a46fSAndroid Build Coastguard Worker fa.bFieldFull = pEdit->IsTextFull();
120*3ac0a46fSAndroid Build Coastguard Worker std::tie(fa.nSelStart, fa.nSelEnd) = pEdit->GetSelection();
121*3ac0a46fSAndroid Build Coastguard Worker fa.sValue = pEdit->GetText();
122*3ac0a46fSAndroid Build Coastguard Worker fa.sChangeEx = GetSelectExportText();
123*3ac0a46fSAndroid Build Coastguard Worker
124*3ac0a46fSAndroid Build Coastguard Worker if (fa.bFieldFull) {
125*3ac0a46fSAndroid Build Coastguard Worker fa.sChange.clear();
126*3ac0a46fSAndroid Build Coastguard Worker fa.sChangeEx.clear();
127*3ac0a46fSAndroid Build Coastguard Worker }
128*3ac0a46fSAndroid Build Coastguard Worker }
129*3ac0a46fSAndroid Build Coastguard Worker }
130*3ac0a46fSAndroid Build Coastguard Worker break;
131*3ac0a46fSAndroid Build Coastguard Worker case CPDF_AAction::kValidate:
132*3ac0a46fSAndroid Build Coastguard Worker if (CPWL_ComboBox* pComboBox = GetPWLComboBox(pPageView)) {
133*3ac0a46fSAndroid Build Coastguard Worker if (CPWL_Edit* pEdit = pComboBox->GetEdit()) {
134*3ac0a46fSAndroid Build Coastguard Worker fa.sValue = pEdit->GetText();
135*3ac0a46fSAndroid Build Coastguard Worker }
136*3ac0a46fSAndroid Build Coastguard Worker }
137*3ac0a46fSAndroid Build Coastguard Worker break;
138*3ac0a46fSAndroid Build Coastguard Worker case CPDF_AAction::kLoseFocus:
139*3ac0a46fSAndroid Build Coastguard Worker case CPDF_AAction::kGetFocus:
140*3ac0a46fSAndroid Build Coastguard Worker fa.sValue = m_pWidget->GetValue();
141*3ac0a46fSAndroid Build Coastguard Worker break;
142*3ac0a46fSAndroid Build Coastguard Worker default:
143*3ac0a46fSAndroid Build Coastguard Worker break;
144*3ac0a46fSAndroid Build Coastguard Worker }
145*3ac0a46fSAndroid Build Coastguard Worker }
146*3ac0a46fSAndroid Build Coastguard Worker
SetActionData(const CPDFSDK_PageView * pPageView,CPDF_AAction::AActionType type,const CFFL_FieldAction & fa)147*3ac0a46fSAndroid Build Coastguard Worker void CFFL_ComboBox::SetActionData(const CPDFSDK_PageView* pPageView,
148*3ac0a46fSAndroid Build Coastguard Worker CPDF_AAction::AActionType type,
149*3ac0a46fSAndroid Build Coastguard Worker const CFFL_FieldAction& fa) {
150*3ac0a46fSAndroid Build Coastguard Worker switch (type) {
151*3ac0a46fSAndroid Build Coastguard Worker case CPDF_AAction::kKeyStroke:
152*3ac0a46fSAndroid Build Coastguard Worker if (CPWL_ComboBox* pComboBox = GetPWLComboBox(pPageView)) {
153*3ac0a46fSAndroid Build Coastguard Worker if (CPWL_Edit* pEdit = pComboBox->GetEdit()) {
154*3ac0a46fSAndroid Build Coastguard Worker pEdit->SetSelection(fa.nSelStart, fa.nSelEnd);
155*3ac0a46fSAndroid Build Coastguard Worker pEdit->ReplaceSelection(fa.sChange);
156*3ac0a46fSAndroid Build Coastguard Worker }
157*3ac0a46fSAndroid Build Coastguard Worker }
158*3ac0a46fSAndroid Build Coastguard Worker break;
159*3ac0a46fSAndroid Build Coastguard Worker default:
160*3ac0a46fSAndroid Build Coastguard Worker break;
161*3ac0a46fSAndroid Build Coastguard Worker }
162*3ac0a46fSAndroid Build Coastguard Worker }
163*3ac0a46fSAndroid Build Coastguard Worker
SavePWLWindowState(const CPDFSDK_PageView * pPageView)164*3ac0a46fSAndroid Build Coastguard Worker void CFFL_ComboBox::SavePWLWindowState(const CPDFSDK_PageView* pPageView) {
165*3ac0a46fSAndroid Build Coastguard Worker CPWL_ComboBox* pComboBox = GetPWLComboBox(pPageView);
166*3ac0a46fSAndroid Build Coastguard Worker if (!pComboBox)
167*3ac0a46fSAndroid Build Coastguard Worker return;
168*3ac0a46fSAndroid Build Coastguard Worker
169*3ac0a46fSAndroid Build Coastguard Worker m_State.nIndex = pComboBox->GetSelect();
170*3ac0a46fSAndroid Build Coastguard Worker
171*3ac0a46fSAndroid Build Coastguard Worker CPWL_Edit* pEdit = pComboBox->GetEdit();
172*3ac0a46fSAndroid Build Coastguard Worker if (!pEdit)
173*3ac0a46fSAndroid Build Coastguard Worker return;
174*3ac0a46fSAndroid Build Coastguard Worker
175*3ac0a46fSAndroid Build Coastguard Worker std::tie(m_State.nStart, m_State.nEnd) = pEdit->GetSelection();
176*3ac0a46fSAndroid Build Coastguard Worker m_State.sValue = pEdit->GetText();
177*3ac0a46fSAndroid Build Coastguard Worker }
178*3ac0a46fSAndroid Build Coastguard Worker
RecreatePWLWindowFromSavedState(const CPDFSDK_PageView * pPageView)179*3ac0a46fSAndroid Build Coastguard Worker void CFFL_ComboBox::RecreatePWLWindowFromSavedState(
180*3ac0a46fSAndroid Build Coastguard Worker const CPDFSDK_PageView* pPageView) {
181*3ac0a46fSAndroid Build Coastguard Worker CPWL_ComboBox* pComboBox = CreateOrUpdatePWLComboBox(pPageView);
182*3ac0a46fSAndroid Build Coastguard Worker if (!pComboBox)
183*3ac0a46fSAndroid Build Coastguard Worker return;
184*3ac0a46fSAndroid Build Coastguard Worker
185*3ac0a46fSAndroid Build Coastguard Worker if (m_State.nIndex >= 0) {
186*3ac0a46fSAndroid Build Coastguard Worker pComboBox->SetSelect(m_State.nIndex);
187*3ac0a46fSAndroid Build Coastguard Worker return;
188*3ac0a46fSAndroid Build Coastguard Worker }
189*3ac0a46fSAndroid Build Coastguard Worker
190*3ac0a46fSAndroid Build Coastguard Worker CPWL_Edit* pEdit = pComboBox->GetEdit();
191*3ac0a46fSAndroid Build Coastguard Worker if (!pEdit)
192*3ac0a46fSAndroid Build Coastguard Worker return;
193*3ac0a46fSAndroid Build Coastguard Worker
194*3ac0a46fSAndroid Build Coastguard Worker pEdit->SetText(m_State.sValue);
195*3ac0a46fSAndroid Build Coastguard Worker pEdit->SetSelection(m_State.nStart, m_State.nEnd);
196*3ac0a46fSAndroid Build Coastguard Worker }
197*3ac0a46fSAndroid Build Coastguard Worker
SetIndexSelected(int index,bool selected)198*3ac0a46fSAndroid Build Coastguard Worker bool CFFL_ComboBox::SetIndexSelected(int index, bool selected) {
199*3ac0a46fSAndroid Build Coastguard Worker if (!IsValid() || !selected)
200*3ac0a46fSAndroid Build Coastguard Worker return false;
201*3ac0a46fSAndroid Build Coastguard Worker
202*3ac0a46fSAndroid Build Coastguard Worker if (index < 0 || index >= m_pWidget->CountOptions())
203*3ac0a46fSAndroid Build Coastguard Worker return false;
204*3ac0a46fSAndroid Build Coastguard Worker
205*3ac0a46fSAndroid Build Coastguard Worker CPWL_ComboBox* pWnd = GetPWLComboBox(GetCurPageView());
206*3ac0a46fSAndroid Build Coastguard Worker if (!pWnd)
207*3ac0a46fSAndroid Build Coastguard Worker return false;
208*3ac0a46fSAndroid Build Coastguard Worker
209*3ac0a46fSAndroid Build Coastguard Worker pWnd->SetSelect(index);
210*3ac0a46fSAndroid Build Coastguard Worker return true;
211*3ac0a46fSAndroid Build Coastguard Worker }
212*3ac0a46fSAndroid Build Coastguard Worker
IsIndexSelected(int index)213*3ac0a46fSAndroid Build Coastguard Worker bool CFFL_ComboBox::IsIndexSelected(int index) {
214*3ac0a46fSAndroid Build Coastguard Worker if (!IsValid())
215*3ac0a46fSAndroid Build Coastguard Worker return false;
216*3ac0a46fSAndroid Build Coastguard Worker
217*3ac0a46fSAndroid Build Coastguard Worker if (index < 0 || index >= m_pWidget->CountOptions())
218*3ac0a46fSAndroid Build Coastguard Worker return false;
219*3ac0a46fSAndroid Build Coastguard Worker
220*3ac0a46fSAndroid Build Coastguard Worker CPWL_ComboBox* pWnd = GetPWLComboBox(GetCurPageView());
221*3ac0a46fSAndroid Build Coastguard Worker return pWnd && index == pWnd->GetSelect();
222*3ac0a46fSAndroid Build Coastguard Worker }
223*3ac0a46fSAndroid Build Coastguard Worker
224*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_ENABLE_XFA
IsFieldFull(const CPDFSDK_PageView * pPageView)225*3ac0a46fSAndroid Build Coastguard Worker bool CFFL_ComboBox::IsFieldFull(const CPDFSDK_PageView* pPageView) {
226*3ac0a46fSAndroid Build Coastguard Worker CPWL_ComboBox* pComboBox = GetPWLComboBox(pPageView);
227*3ac0a46fSAndroid Build Coastguard Worker if (!pComboBox)
228*3ac0a46fSAndroid Build Coastguard Worker return false;
229*3ac0a46fSAndroid Build Coastguard Worker
230*3ac0a46fSAndroid Build Coastguard Worker CPWL_Edit* pEdit = pComboBox->GetEdit();
231*3ac0a46fSAndroid Build Coastguard Worker return pEdit && pEdit->IsTextFull();
232*3ac0a46fSAndroid Build Coastguard Worker }
233*3ac0a46fSAndroid Build Coastguard Worker #endif // PDF_ENABLE_XFA
234*3ac0a46fSAndroid Build Coastguard Worker
OnSetFocusForEdit(CPWL_Edit * pEdit)235*3ac0a46fSAndroid Build Coastguard Worker void CFFL_ComboBox::OnSetFocusForEdit(CPWL_Edit* pEdit) {
236*3ac0a46fSAndroid Build Coastguard Worker pEdit->SetCharSet(FX_Charset::kChineseSimplified);
237*3ac0a46fSAndroid Build Coastguard Worker pEdit->SetReadyToInput();
238*3ac0a46fSAndroid Build Coastguard Worker m_pFormFiller->OnSetFieldInputFocus(pEdit->GetText());
239*3ac0a46fSAndroid Build Coastguard Worker }
240*3ac0a46fSAndroid Build Coastguard Worker
GetSelectExportText()241*3ac0a46fSAndroid Build Coastguard Worker WideString CFFL_ComboBox::GetSelectExportText() {
242*3ac0a46fSAndroid Build Coastguard Worker CPWL_ComboBox* pComboBox = GetPWLComboBox(GetCurPageView());
243*3ac0a46fSAndroid Build Coastguard Worker int nExport = pComboBox ? pComboBox->GetSelect() : -1;
244*3ac0a46fSAndroid Build Coastguard Worker return m_pWidget->GetSelectExportText(nExport);
245*3ac0a46fSAndroid Build Coastguard Worker }
246*3ac0a46fSAndroid Build Coastguard Worker
GetPWLComboBox(const CPDFSDK_PageView * pPageView) const247*3ac0a46fSAndroid Build Coastguard Worker CPWL_ComboBox* CFFL_ComboBox::GetPWLComboBox(
248*3ac0a46fSAndroid Build Coastguard Worker const CPDFSDK_PageView* pPageView) const {
249*3ac0a46fSAndroid Build Coastguard Worker return static_cast<CPWL_ComboBox*>(GetPWLWindow(pPageView));
250*3ac0a46fSAndroid Build Coastguard Worker }
251*3ac0a46fSAndroid Build Coastguard Worker
CreateOrUpdatePWLComboBox(const CPDFSDK_PageView * pPageView)252*3ac0a46fSAndroid Build Coastguard Worker CPWL_ComboBox* CFFL_ComboBox::CreateOrUpdatePWLComboBox(
253*3ac0a46fSAndroid Build Coastguard Worker const CPDFSDK_PageView* pPageView) {
254*3ac0a46fSAndroid Build Coastguard Worker return static_cast<CPWL_ComboBox*>(CreateOrUpdatePWLWindow(pPageView));
255*3ac0a46fSAndroid Build Coastguard Worker }
256