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

Side by Side Diff: third_party/WebKit/Source/core/editing/SelectionController.cpp

Issue 1668453002: Make empty selection behavior behave like Android EditText. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix compile error in WebViewTest Created 4 years, 10 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 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed.
3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) 4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies)
5 * Copyright (C) 2015 Google Inc. All rights reserved. 5 * Copyright (C) 2015 Google Inc. All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 if (!innerNode || !innerNode->layoutObject()) 297 if (!innerNode || !innerNode->layoutObject())
298 return; 298 return;
299 299
300 const VisiblePositionTemplate<Strategy> pos = createVisiblePosition(fromPosi tionInDOMTree<Strategy>(innerNode->layoutObject()->positionForPoint(result.local Point()))); 300 const VisiblePositionTemplate<Strategy> pos = createVisiblePosition(fromPosi tionInDOMTree<Strategy>(innerNode->layoutObject()->positionForPoint(result.local Point())));
301 if (pos.isNotNull()) { 301 if (pos.isNotNull()) {
302 newSelection = VisibleSelectionTemplate<Strategy>(pos); 302 newSelection = VisibleSelectionTemplate<Strategy>(pos);
303 newSelection.expandUsingGranularity(WordGranularity); 303 newSelection.expandUsingGranularity(WordGranularity);
304 } 304 }
305 305
306 #if OS(ANDROID) 306 #if OS(ANDROID)
307 // If node is not editable and doesn't have text except space, tab or 307 // If node doesn't have text except space, tab or line break, do not
308 // line break, do not select that 'empty' area. 308 // select that 'empty' area.
309 if (!innerNode->hasEditableStyle()) { 309 EphemeralRangeTemplate<Strategy> range = EphemeralRangeTemplate<Strategy>(ne wSelection.start(), newSelection.end());
310 EphemeralRangeTemplate<Strategy> range = EphemeralRangeTemplate<Strategy >(newSelection.start(), newSelection.end()); 310 String str = plainText(range, TextIteratorDefaultBehavior);
yosin_UTC9 2016/02/03 06:49:28 nit: |const String&| to avoid unnecessary copy of
311 String str = plainText(range, TextIteratorDefaultBehavior); 311 if (str.isEmpty() || str.simplifyWhiteSpace().containsOnlyWhitespace())
312 if (str.isEmpty() || str.simplifyWhiteSpace().containsOnlyWhitespace()) 312 return;
313 return;
314 }
315 #endif 313 #endif
316 314
317 if (appendTrailingWhitespace == AppendTrailingWhitespace::ShouldAppend && ne wSelection.isRange()) 315 if (appendTrailingWhitespace == AppendTrailingWhitespace::ShouldAppend && ne wSelection.isRange())
318 newSelection.appendTrailingWhitespace(); 316 newSelection.appendTrailingWhitespace();
319 317
320 updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelection ToRespectUserSelectAll(innerNode, newSelection), WordGranularity); 318 updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelection ToRespectUserSelectAll(innerNode, newSelection), WordGranularity);
321 } 319 }
322 320
323 template <typename Strategy> 321 template <typename Strategy>
324 void SelectionController::selectClosestMisspellingFromHitTestResult(const HitTes tResult& result, AppendTrailingWhitespace appendTrailingWhitespace) 322 void SelectionController::selectClosestMisspellingFromHitTestResult(const HitTes tResult& result, AppendTrailingWhitespace appendTrailingWhitespace)
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 else 676 else
679 m_selectionState = SelectionState::HaveNotStartedSelection; 677 m_selectionState = SelectionState::HaveNotStartedSelection;
680 } 678 }
681 679
682 FrameSelection& SelectionController::selection() const 680 FrameSelection& SelectionController::selection() const
683 { 681 {
684 return m_frame->selection(); 682 return m_frame->selection();
685 } 683 }
686 684
687 } // namespace blink 685 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698