xref: /aosp_15_r20/external/pdfium/fpdfsdk/formfiller/cffl_combobox.cpp (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
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