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

Side by Side Diff: fpdfsdk/src/formfiller/FFL_TextField.cpp

Issue 1265503005: clang-format all pdfium code. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: sigh Created 5 years, 4 months 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
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 "../../include/formfiller/FFL_TextField.h" 7 #include "../../include/formfiller/FFL_TextField.h"
8 #include "../../include/formfiller/FFL_CBA_Fontmap.h" 8 #include "../../include/formfiller/FFL_CBA_Fontmap.h"
9 9
10 /* ------------------------------- CFFL_TextField ------------------------------ - */ 10 /* ------------------------------- CFFL_TextField
11 11 * ------------------------------- */
12 CFFL_TextField::CFFL_TextField(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot) : 12
13 CFFL_FormFiller(pApp, pAnnot), 13 CFFL_TextField::CFFL_TextField(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot)
14 m_pFontMap(NULL)//, 14 : CFFL_FormFiller(pApp, pAnnot),
15 //m_pSpellCheck(NULL) 15 m_pFontMap(NULL) //,
16 // m_pSpellCheck(NULL)
16 { 17 {
17 m_State.nStart = m_State.nEnd = 0; 18 m_State.nStart = m_State.nEnd = 0;
18 } 19 }
19 20
20 CFFL_TextField::~CFFL_TextField() 21 CFFL_TextField::~CFFL_TextField() {
21 { 22 delete m_pFontMap;
22 delete m_pFontMap; 23 }
23 } 24
24 25 PWL_CREATEPARAM CFFL_TextField::GetCreateParam() {
25 PWL_CREATEPARAM CFFL_TextField::GetCreateParam() 26 PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam();
26 { 27
27 PWL_CREATEPARAM cp = CFFL_FormFiller::GetCreateParam(); 28 ASSERT(m_pWidget != NULL);
28 29 int nFlags = m_pWidget->GetFieldFlags();
29 ASSERT(m_pWidget != NULL); 30
30 int nFlags = m_pWidget->GetFieldFlags(); 31 if (nFlags & FIELDFLAG_PASSWORD) {
31 32 cp.dwFlags |= PES_PASSWORD;
32 33 }
33 if (nFlags & FIELDFLAG_PASSWORD) 34
34 { 35 if (!(nFlags & FIELDFLAG_DONOTSPELLCHECK)) {
35 cp.dwFlags |= PES_PASSWORD; 36 }
37
38 if (nFlags & FIELDFLAG_MULTILINE) {
39 cp.dwFlags |= PES_MULTILINE | PES_AUTORETURN | PES_TOP;
40
41 if (!(nFlags & FIELDFLAG_DONOTSCROLL)) {
42 cp.dwFlags |= PWS_VSCROLL | PES_AUTOSCROLL;
36 } 43 }
37 44 } else {
38 if (!(nFlags & FIELDFLAG_DONOTSPELLCHECK)) 45 cp.dwFlags |= PES_CENTER;
39 { 46
47 if (!(nFlags & FIELDFLAG_DONOTSCROLL)) {
48 cp.dwFlags |= PES_AUTOSCROLL;
40 } 49 }
41 50 }
42 if (nFlags & FIELDFLAG_MULTILINE) 51
43 { 52 if (nFlags & FIELDFLAG_COMB) {
44 cp.dwFlags |= PES_MULTILINE | PES_AUTORETURN | PES_TOP; 53 cp.dwFlags |= PES_CHARARRAY;
45 54 }
46 if (!(nFlags & FIELDFLAG_DONOTSCROLL)) 55
47 { 56 if (nFlags & FIELDFLAG_RICHTEXT) {
48 cp.dwFlags |= PWS_VSCROLL | PES_AUTOSCROLL; 57 cp.dwFlags |= PES_RICH;
49 } 58 }
50 } 59
51 else 60 cp.dwFlags |= PES_UNDO;
52 { 61
53 cp.dwFlags |= PES_CENTER; 62 switch (m_pWidget->GetAlignment()) {
54
55 if (!(nFlags & FIELDFLAG_DONOTSCROLL))
56 {
57 cp.dwFlags |= PES_AUTOSCROLL;
58 }
59 }
60
61 if (nFlags & FIELDFLAG_COMB)
62 {
63 cp.dwFlags |= PES_CHARARRAY;
64 }
65
66 if (nFlags & FIELDFLAG_RICHTEXT)
67 {
68 cp.dwFlags |= PES_RICH;
69 }
70
71 cp.dwFlags |= PES_UNDO;
72
73 switch (m_pWidget->GetAlignment())
74 {
75 default: 63 default:
76 case BF_ALIGN_LEFT: 64 case BF_ALIGN_LEFT:
77 cp.dwFlags |= PES_LEFT; 65 cp.dwFlags |= PES_LEFT;
78 break; 66 break;
79 case BF_ALIGN_MIDDLE: 67 case BF_ALIGN_MIDDLE:
80 cp.dwFlags |= PES_MIDDLE; 68 cp.dwFlags |= PES_MIDDLE;
81 break; 69 break;
82 case BF_ALIGN_RIGHT: 70 case BF_ALIGN_RIGHT:
83 cp.dwFlags |= PES_RIGHT; 71 cp.dwFlags |= PES_RIGHT;
84 break; 72 break;
73 }
74
75 if (!m_pFontMap) {
76 m_pFontMap = new CBA_FontMap(m_pWidget, m_pApp->GetSysHandler());
77 m_pFontMap->Initial();
78 }
79 cp.pFontMap = m_pFontMap;
80 cp.pFocusHandler = this;
81
82 return cp;
83 }
84
85 CPWL_Wnd* CFFL_TextField::NewPDFWindow(const PWL_CREATEPARAM& cp,
86 CPDFSDK_PageView* pPageView) {
87 CPWL_Edit* pWnd = new CPWL_Edit();
88 pWnd->AttachFFLData(this);
89 pWnd->Create(cp);
90
91 ASSERT(m_pApp != NULL);
92 CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller();
93 pWnd->SetFillerNotify(pIFormFiller);
94
95 ASSERT(m_pWidget != NULL);
96 int32_t nMaxLen = m_pWidget->GetMaxLen();
97 CFX_WideString swValue = m_pWidget->GetValue();
98
99 if (nMaxLen > 0) {
100 if (pWnd->HasFlag(PES_CHARARRAY)) {
101 pWnd->SetCharArray(nMaxLen);
102 pWnd->SetAlignFormatV(PEAV_CENTER);
103 } else {
104 pWnd->SetLimitChar(nMaxLen);
85 } 105 }
86 106 }
87 if (!m_pFontMap) 107
88 { 108 pWnd->SetText(swValue.c_str());
89 m_pFontMap = new CBA_FontMap(m_pWidget, m_pApp->GetSysHandler()); 109 return pWnd;
90 m_pFontMap->Initial(); 110 }
111
112 FX_BOOL CFFL_TextField::OnChar(CPDFSDK_Annot* pAnnot,
113 FX_UINT nChar,
114 FX_UINT nFlags) {
115 switch (nChar) {
116 case FWL_VKEY_Return:
117 if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_MULTILINE)) {
118 CPDFSDK_PageView* pPageView = GetCurPageView();
119 ASSERT(pPageView != NULL);
120 m_bValid = !m_bValid;
121 CPDF_Rect rcAnnot = pAnnot->GetRect();
122 m_pApp->FFI_Invalidate(pAnnot->GetPDFPage(), rcAnnot.left, rcAnnot.top,
123 rcAnnot.right, rcAnnot.bottom);
124
125 if (m_bValid) {
126 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE))
127 pWnd->SetFocus();
128 } else {
129 if (CommitData(pPageView, nFlags)) {
130 DestroyPDFWindow(pPageView);
131 return TRUE;
132 }
133 return FALSE;
134 }
135 }
136 break;
137 case FWL_VKEY_Escape: {
138 CPDFSDK_PageView* pPageView = GetCurPageView();
139 ASSERT(pPageView != NULL);
140 EscapeFiller(pPageView, TRUE);
141 return TRUE;
91 } 142 }
92 cp.pFontMap = m_pFontMap; 143 }
93 cp.pFocusHandler = this; 144
94 145 return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
95 return cp; 146 }
96 } 147
97 148 FX_BOOL CFFL_TextField::IsDataChanged(CPDFSDK_PageView* pPageView) {
98 CPWL_Wnd* CFFL_TextField::NewPDFWindow(const PWL_CREATEPARAM& cp, CPDFSDK_PageVi ew* pPageView) 149 ASSERT(m_pWidget != NULL);
99 { 150
100 CPWL_Edit * pWnd = new CPWL_Edit(); 151 if (CPWL_Edit* pEdit = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE))
101 pWnd->AttachFFLData(this); 152 return pEdit->GetText() != m_pWidget->GetValue();
102 pWnd->Create(cp); 153
103 154 return FALSE;
104 155 }
105 156
106 ASSERT(m_pApp != NULL); 157 void CFFL_TextField::SaveData(CPDFSDK_PageView* pPageView) {
107 CFFL_IFormFiller* pIFormFiller = m_pApp->GetIFormFiller(); 158 ASSERT(m_pWidget != NULL);
108 pWnd->SetFillerNotify(pIFormFiller); 159
109 160 if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) {
110 ASSERT(m_pWidget != NULL); 161 CFX_WideString sOldValue = m_pWidget->GetValue();
111 int32_t nMaxLen = m_pWidget->GetMaxLen(); 162 CFX_WideString sNewValue = pWnd->GetText();
112 CFX_WideString swValue = m_pWidget->GetValue(); 163
113 164 m_pWidget->SetValue(sNewValue, FALSE);
114 if (nMaxLen > 0) 165 m_pWidget->ResetFieldAppearance(TRUE);
115 { 166 m_pWidget->UpdateField();
116 if (pWnd->HasFlag(PES_CHARARRAY)) 167 SetChangeMark();
117 { 168 }
118 pWnd->SetCharArray(nMaxLen); 169 }
119 pWnd->SetAlignFormatV(PEAV_CENTER); 170
171 void CFFL_TextField::GetActionData(CPDFSDK_PageView* pPageView,
172 CPDF_AAction::AActionType type,
173 PDFSDK_FieldAction& fa) {
174 switch (type) {
175 case CPDF_AAction::KeyStroke:
176 if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) {
177 fa.bFieldFull = pWnd->IsTextFull();
178
179 fa.sValue = pWnd->GetText();
180
181 if (fa.bFieldFull) {
182 fa.sChange = L"";
183 fa.sChangeEx = L"";
120 } 184 }
121 else 185 }
122 { 186 break;
123 pWnd->SetLimitChar(nMaxLen);
124 }
125 }
126
127 pWnd->SetText(swValue.c_str());
128 return pWnd;
129 }
130
131
132 FX_BOOL CFFL_TextField::OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFl ags)
133 {
134 switch (nChar)
135 {
136 case FWL_VKEY_Return:
137 if (!(m_pWidget->GetFieldFlags() & FIELDFLAG_MULTILINE))
138 {
139 CPDFSDK_PageView* pPageView = GetCurPageView();
140 ASSERT(pPageView != NULL);
141 m_bValid = !m_bValid;
142 CPDF_Rect rcAnnot = pAnnot->GetRect();
143 m_pApp->FFI_Invalidate(pAnnot->GetPDFPage(), rcAnnot.left, rcAnnot.t op, rcAnnot.right, rcAnnot.bottom);
144
145 if (m_bValid)
146 {
147 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE))
148 pWnd->SetFocus();
149 }
150 else
151 {
152 if (CommitData(pPageView, nFlags))
153 {
154 DestroyPDFWindow(pPageView);
155 return TRUE;
156 }
157 return FALSE;
158 }
159 }
160 break;
161 case FWL_VKEY_Escape:
162 {
163 CPDFSDK_PageView* pPageView = GetCurPageView();
164 ASSERT(pPageView != NULL);
165 EscapeFiller(pPageView,TRUE);
166 return TRUE;
167 }
168 }
169
170 return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags);
171 }
172
173 FX_BOOL CFFL_TextField::IsDataChanged(CPDFSDK_PageView* pPageView)
174 {
175 ASSERT(m_pWidget != NULL);
176
177 if (CPWL_Edit * pEdit = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE))
178 return pEdit->GetText() != m_pWidget->GetValue();
179
180 return FALSE;
181 }
182
183 void CFFL_TextField::SaveData(CPDFSDK_PageView* pPageView)
184 {
185 ASSERT(m_pWidget != NULL);
186
187 if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE))
188 {
189 CFX_WideString sOldValue = m_pWidget->GetValue();
190 CFX_WideString sNewValue = pWnd->GetText();
191
192 m_pWidget->SetValue(sNewValue, FALSE);
193 m_pWidget->ResetFieldAppearance(TRUE);
194 m_pWidget->UpdateField();
195 SetChangeMark();
196 }
197 }
198
199 void CFFL_TextField::GetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AA ctionType type,
200 PDFSDK_FieldAction& fa)
201 {
202 switch (type)
203 {
204 case CPDF_AAction::KeyStroke:
205 if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE))
206 {
207 fa.bFieldFull = pWnd->IsTextFull();
208
209 fa.sValue = pWnd->GetText();
210
211 if (fa.bFieldFull)
212 {
213 fa.sChange = L"";
214 fa.sChangeEx = L"";
215 }
216 }
217 break;
218 case CPDF_AAction::Validate: 187 case CPDF_AAction::Validate:
219 if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) 188 if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) {
220 { 189 fa.sValue = pWnd->GetText();
221 fa.sValue = pWnd->GetText(); 190 }
222 } 191 break;
223 break;
224 case CPDF_AAction::LoseFocus: 192 case CPDF_AAction::LoseFocus:
225 case CPDF_AAction::GetFocus: 193 case CPDF_AAction::GetFocus:
226 ASSERT(m_pWidget != NULL); 194 ASSERT(m_pWidget != NULL);
227 fa.sValue = m_pWidget->GetValue(); 195 fa.sValue = m_pWidget->GetValue();
228 break; 196 break;
229 default: 197 default:
230 break; 198 break;
231 } 199 }
232 } 200 }
233 201
234 void CFFL_TextField::SetActionData(CPDFSDK_PageView* pPageView, CPDF_AAction::AA ctionType type, 202 void CFFL_TextField::SetActionData(CPDFSDK_PageView* pPageView,
235 const PDFSDK_FieldAction& fa) 203 CPDF_AAction::AActionType type,
236 { 204 const PDFSDK_FieldAction& fa) {
237 switch (type) 205 switch (type) {
238 {
239 case CPDF_AAction::KeyStroke: 206 case CPDF_AAction::KeyStroke:
240 if (CPWL_Edit * pEdit = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) 207 if (CPWL_Edit* pEdit = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) {
241 { 208 pEdit->SetFocus();
242 pEdit->SetFocus(); 209 pEdit->SetSel(fa.nSelStart, fa.nSelEnd);
243 pEdit->SetSel(fa.nSelStart, fa.nSelEnd); 210 pEdit->ReplaceSel(fa.sChange.c_str());
244 pEdit->ReplaceSel(fa.sChange.c_str()); 211 }
245 } 212 break;
246 break;
247 default: 213 default:
248 break; 214 break;
249 } 215 }
250 } 216 }
251 217
252 218 FX_BOOL CFFL_TextField::IsActionDataChanged(CPDF_AAction::AActionType type,
253 FX_BOOL CFFL_TextField::IsActionDataChanged(CPDF_AAction::AActionType type, cons t PDFSDK_FieldAction& faOld, 219 const PDFSDK_FieldAction& faOld,
254 const PDFSDK_FieldAction& faNew) 220 const PDFSDK_FieldAction& faNew) {
255 { 221 switch (type) {
256 switch (type)
257 {
258 case CPDF_AAction::KeyStroke: 222 case CPDF_AAction::KeyStroke:
259 return (!faOld.bFieldFull && faOld.nSelEnd != faNew.nSelEnd) || faOld.nS elStart != faNew.nSelStart || 223 return (!faOld.bFieldFull && faOld.nSelEnd != faNew.nSelEnd) ||
260 faOld.sChange != faNew.sChange; 224 faOld.nSelStart != faNew.nSelStart ||
225 faOld.sChange != faNew.sChange;
261 default: 226 default:
262 break; 227 break;
263 } 228 }
264 229
265 return FALSE; 230 return FALSE;
266 } 231 }
267 232
268 void CFFL_TextField::SaveState(CPDFSDK_PageView* pPageView) 233 void CFFL_TextField::SaveState(CPDFSDK_PageView* pPageView) {
269 { 234 ASSERT(pPageView != NULL);
270 ASSERT(pPageView != NULL); 235
271 236 if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) {
272 if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, FALSE)) 237 pWnd->GetSel(m_State.nStart, m_State.nEnd);
273 { 238 m_State.sValue = pWnd->GetText();
274 pWnd->GetSel(m_State.nStart, m_State.nEnd); 239 }
275 m_State.sValue = pWnd->GetText(); 240 }
276 } 241
277 } 242 void CFFL_TextField::RestoreState(CPDFSDK_PageView* pPageView) {
278 243 ASSERT(pPageView != NULL);
279 void CFFL_TextField::RestoreState(CPDFSDK_PageView* pPageView) 244
280 { 245 if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, TRUE)) {
281 ASSERT(pPageView != NULL); 246 pWnd->SetText(m_State.sValue.c_str());
282 247 pWnd->SetSel(m_State.nStart, m_State.nEnd);
283 if (CPWL_Edit* pWnd = (CPWL_Edit*)GetPDFWindow(pPageView, TRUE)) 248 }
284 { 249 }
285 pWnd->SetText(m_State.sValue.c_str()); 250
286 pWnd->SetSel(m_State.nStart, m_State.nEnd); 251 CPWL_Wnd* CFFL_TextField::ResetPDFWindow(CPDFSDK_PageView* pPageView,
287 } 252 FX_BOOL bRestoreValue) {
288 } 253 if (bRestoreValue)
289 254 SaveState(pPageView);
290 CPWL_Wnd* CFFL_TextField::ResetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bR estoreValue) 255
291 { 256 DestroyPDFWindow(pPageView);
292 if (bRestoreValue) 257
293 SaveState(pPageView); 258 CPWL_Wnd* pRet = NULL;
294 259
295 DestroyPDFWindow(pPageView); 260 if (bRestoreValue) {
296 261 RestoreState(pPageView);
297 CPWL_Wnd* pRet = NULL; 262 pRet = GetPDFWindow(pPageView, FALSE);
298 263 } else
299 if (bRestoreValue) 264 pRet = GetPDFWindow(pPageView, TRUE);
300 { 265
301 RestoreState(pPageView); 266 m_pWidget->UpdateField();
302 pRet = GetPDFWindow(pPageView, FALSE); 267
303 } 268 return pRet;
304 else 269 }
305 pRet = GetPDFWindow(pPageView, TRUE); 270
306 271 void CFFL_TextField::OnSetFocus(CPWL_Wnd* pWnd) {
307 m_pWidget->UpdateField(); 272 ASSERT(m_pApp != NULL);
308 273
309 return pRet; 274 ASSERT(pWnd != NULL);
310 } 275
311 276 if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT) {
312 void CFFL_TextField::OnSetFocus(CPWL_Wnd* pWnd) 277 CPWL_Edit* pEdit = (CPWL_Edit*)pWnd;
313 { 278 pEdit->SetCharSet(134);
314 ASSERT(m_pApp != NULL); 279 pEdit->SetCodePage(936);
315 280
316 ASSERT(pWnd != NULL); 281 pEdit->SetReadyToInput();
317 282 CFX_WideString wsText = pEdit->GetText();
318 if (pWnd->GetClassName() == PWL_CLASSNAME_EDIT) 283 int nCharacters = wsText.GetLength();
319 { 284 CFX_ByteString bsUTFText = wsText.UTF16LE_Encode();
320 CPWL_Edit* pEdit = (CPWL_Edit*)pWnd; 285 unsigned short* pBuffer = (unsigned short*)bsUTFText.c_str();
321 pEdit->SetCharSet(134); 286 m_pApp->FFI_OnSetFieldInputFocus(m_pWidget->GetFormField(), pBuffer,
322 pEdit->SetCodePage(936); 287 nCharacters, TRUE);
323 288
324 pEdit->SetReadyToInput(); 289 pEdit->SetEditNotify(this);
325 CFX_WideString wsText = pEdit->GetText(); 290 // pUndo->BeginEdit(pDocument);
326 int nCharacters = wsText.GetLength(); 291 }
327 CFX_ByteString bsUTFText = wsText.UTF16LE_Encode(); 292 }
328 unsigned short* pBuffer = (unsigned short*)bsUTFText.c_str(); 293
329 m_pApp->FFI_OnSetFieldInputFocus(m_pWidget->GetFormField(), pBuffer, nCh aracters, TRUE); 294 void CFFL_TextField::OnKillFocus(CPWL_Wnd* pWnd) {}
330 295
331 pEdit->SetEditNotify(this); 296 FX_BOOL CFFL_TextField::CanCopy(CPDFSDK_Document* pDocument) {
332 //pUndo->BeginEdit(pDocument); 297 return FALSE;
333 } 298 }
334 } 299
335 300 FX_BOOL CFFL_TextField::CanCut(CPDFSDK_Document* pDocument) {
336 void CFFL_TextField::OnKillFocus(CPWL_Wnd* pWnd) 301 return FALSE;
337 { 302 }
338 303
339 } 304 FX_BOOL CFFL_TextField::CanPaste(CPDFSDK_Document* pDocument) {
340 305 return FALSE;
341 FX_BOOL CFFL_TextField::CanCopy(CPDFSDK_Document* pDocument) 306 }
342 { 307
343 return FALSE; 308 void CFFL_TextField::OnAddUndo(CPWL_Edit* pEdit) {}
344 }
345
346 FX_BOOL CFFL_TextField::CanCut(CPDFSDK_Document* pDocument)
347 {
348 return FALSE;
349 }
350
351 FX_BOOL CFFL_TextField::CanPaste(CPDFSDK_Document* pDocument)
352 {
353 return FALSE;
354 }
355
356 void CFFL_TextField::OnAddUndo(CPWL_Edit* pEdit)
357 {
358 }
359
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698