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

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: Selection bug fix 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) {
269 return PDFiumPage::FORM_TEXT_AREA;
270 }
267 return PDFiumPage::NONSELECTABLE_AREA; 271 return PDFiumPage::NONSELECTABLE_AREA;
268 } 272 }
269 273
270 // We don't handle all possible link types of the PDF. For example, 274 // We don't handle all possible link types of the PDF. For example,
271 // launch actions, cross-document links, etc. 275 // launch actions, cross-document links, etc.
272 // In that case, GetLinkTarget() will return NONSELECTABLE_AREA 276 // In that case, GetLinkTarget() will return NONSELECTABLE_AREA
273 // and we should proceed with area detection. 277 // and we should proceed with area detection.
274 PDFiumPage::Area area = GetLinkTarget(link, target); 278 PDFiumPage::Area area = GetLinkTarget(link, target);
275 if (area != PDFiumPage::NONSELECTABLE_AREA) 279 if (area != PDFiumPage::NONSELECTABLE_AREA)
276 return area; 280 return area;
277 } else if (link) { 281 } else if (link) {
278 // We don't handle all possible link types of the PDF. For example, 282 // We don't handle all possible link types of the PDF. For example,
279 // launch actions, cross-document links, etc. 283 // launch actions, cross-document links, etc.
280 // See identical block above. 284 // See identical block above.
281 PDFiumPage::Area area = GetLinkTarget(link, target); 285 PDFiumPage::Area area = GetLinkTarget(link, target);
282 if (area != PDFiumPage::NONSELECTABLE_AREA) 286 if (area != PDFiumPage::NONSELECTABLE_AREA)
283 return area; 287 return area;
284 } else if (control > FPDF_FORMFIELD_UNKNOWN) { 288 } else if (control > FPDF_FORMFIELD_UNKNOWN) {
285 *form_type = control; 289 *form_type = control;
290
291 // TODO(drgage): add in case for combobox later
292 if (*form_type == FPDF_FORMFIELD_TEXTFIELD) {
293 return PDFiumPage::FORM_TEXT_AREA;
294 }
286 return PDFiumPage::NONSELECTABLE_AREA; 295 return PDFiumPage::NONSELECTABLE_AREA;
287 } 296 }
288 297
289 if (rv < 0) 298 if (rv < 0)
290 return NONSELECTABLE_AREA; 299 return NONSELECTABLE_AREA;
291 300
292 return GetLink(*char_index, target) != -1 ? WEBLINK_AREA : TEXT_AREA; 301 return GetLink(*char_index, target) != -1 ? WEBLINK_AREA : TEXT_AREA;
293 } 302 }
294 303
295 base::char16 PDFiumPage::GetCharAtIndex(int index) { 304 base::char16 PDFiumPage::GetCharAtIndex(int index) {
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 page_->loading_count_--; 531 page_->loading_count_--;
523 } 532 }
524 533
525 PDFiumPage::Link::Link() = default; 534 PDFiumPage::Link::Link() = default;
526 535
527 PDFiumPage::Link::Link(const Link& that) = default; 536 PDFiumPage::Link::Link(const Link& that) = default;
528 537
529 PDFiumPage::Link::~Link() = default; 538 PDFiumPage::Link::~Link() = default;
530 539
531 } // namespace chrome_pdf 540 } // 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