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

Side by Side Diff: pdf/pdfium/pdfium_page.cc

Issue 2924343005: Add functionality for copying text within form text fields and form combobox text fields (Closed)
Patch Set: Form combobox text selection for copying Created 3 years, 6 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
« pdf/pdfium/pdfium_engine.cc ('K') | « pdf/pdfium/pdfium_page.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium 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 #include "pdf/pdfium/pdfium_page.h" 5 #include "pdf/pdfium/pdfium_page.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 257
258 // If there is a control and link at the same point, figure out their z-order 258 // If there is a control and link at the same point, figure out their z-order
259 // to determine which is on top. 259 // to determine which is on top.
260 if (link && control > FPDF_FORMFIELD_UNKNOWN) { 260 if (link && control > FPDF_FORMFIELD_UNKNOWN) {
261 int control_z_order = FPDFPage_FormFieldZOrderAtPoint( 261 int control_z_order = FPDFPage_FormFieldZOrderAtPoint(
262 engine_->form(), GetPage(), new_x, new_y); 262 engine_->form(), GetPage(), new_x, new_y);
263 int link_z_order = FPDFLink_GetLinkZOrderAtPoint(GetPage(), new_x, new_y); 263 int link_z_order = FPDFLink_GetLinkZOrderAtPoint(GetPage(), new_x, new_y);
264 DCHECK_NE(control_z_order, link_z_order); 264 DCHECK_NE(control_z_order, link_z_order);
265 if (control_z_order > link_z_order) { 265 if (control_z_order > link_z_order) {
266 *form_type = control; 266 *form_type = control;
267
268 if (*form_type == FPDF_FORMFIELD_TEXTFIELD)
Lei Zhang 2017/06/17 02:21:18 We now have 3 (or more?) places that are trying to
drgage 2017/06/19 21:53:52 Do you still think this will be necessary after re
Lei Zhang 2017/06/20 00:26:24 Given the pdfium_engine.cc code in question forgot
drgage 2017/06/20 23:14:27 Done.
269 return PDFiumPage::FORM_TEXT_AREA;
270
271 if (*form_type == FPDF_FORMFIELD_COMBOBOX)
272 return PDFiumPage::FORM_COMBOBOX_TEXT_AREA;
273
267 return PDFiumPage::NONSELECTABLE_AREA; 274 return PDFiumPage::NONSELECTABLE_AREA;
268 } 275 }
269 276
270 // We don't handle all possible link types of the PDF. For example, 277 // We don't handle all possible link types of the PDF. For example,
271 // launch actions, cross-document links, etc. 278 // launch actions, cross-document links, etc.
272 // In that case, GetLinkTarget() will return NONSELECTABLE_AREA 279 // In that case, GetLinkTarget() will return NONSELECTABLE_AREA
273 // and we should proceed with area detection. 280 // and we should proceed with area detection.
274 PDFiumPage::Area area = GetLinkTarget(link, target); 281 PDFiumPage::Area area = GetLinkTarget(link, target);
275 if (area != PDFiumPage::NONSELECTABLE_AREA) 282 if (area != PDFiumPage::NONSELECTABLE_AREA)
276 return area; 283 return area;
277 } else if (link) { 284 } else if (link) {
278 // We don't handle all possible link types of the PDF. For example, 285 // We don't handle all possible link types of the PDF. For example,
279 // launch actions, cross-document links, etc. 286 // launch actions, cross-document links, etc.
280 // See identical block above. 287 // See identical block above.
281 PDFiumPage::Area area = GetLinkTarget(link, target); 288 PDFiumPage::Area area = GetLinkTarget(link, target);
282 if (area != PDFiumPage::NONSELECTABLE_AREA) 289 if (area != PDFiumPage::NONSELECTABLE_AREA)
283 return area; 290 return area;
284 } else if (control > FPDF_FORMFIELD_UNKNOWN) { 291 } else if (control > FPDF_FORMFIELD_UNKNOWN) {
285 *form_type = control; 292 *form_type = control;
293
294 if (*form_type == FPDF_FORMFIELD_TEXTFIELD)
295 return PDFiumPage::FORM_TEXT_AREA;
296
297 if (*form_type == FPDF_FORMFIELD_COMBOBOX)
298 return PDFiumPage::FORM_COMBOBOX_TEXT_AREA;
299
286 return PDFiumPage::NONSELECTABLE_AREA; 300 return PDFiumPage::NONSELECTABLE_AREA;
287 } 301 }
288 302
289 if (rv < 0) 303 if (rv < 0)
290 return NONSELECTABLE_AREA; 304 return NONSELECTABLE_AREA;
291 305
292 return GetLink(*char_index, target) != -1 ? WEBLINK_AREA : TEXT_AREA; 306 return GetLink(*char_index, target) != -1 ? WEBLINK_AREA : TEXT_AREA;
293 } 307 }
294 308
295 base::char16 PDFiumPage::GetCharAtIndex(int index) { 309 base::char16 PDFiumPage::GetCharAtIndex(int index) {
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 page_->loading_count_--; 536 page_->loading_count_--;
523 } 537 }
524 538
525 PDFiumPage::Link::Link() = default; 539 PDFiumPage::Link::Link() = default;
526 540
527 PDFiumPage::Link::Link(const Link& that) = default; 541 PDFiumPage::Link::Link(const Link& that) = default;
528 542
529 PDFiumPage::Link::~Link() = default; 543 PDFiumPage::Link::~Link() = default;
530 544
531 } // namespace chrome_pdf 545 } // namespace chrome_pdf
OLDNEW
« pdf/pdfium/pdfium_engine.cc ('K') | « pdf/pdfium/pdfium_page.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698