Index: third_party/WebKit/Source/core/editing/FrameSelection.cpp |
diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.cpp b/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
index de34916614b35d263230620fbca35d9e65f60208..ce0560309d764268def12ef56548b40061c018a6 100644 |
--- a/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
+++ b/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
@@ -1075,15 +1075,25 @@ void FrameSelection::scheduleVisualUpdateForPaintInvalidationIfNeeded() const { |
frameView->scheduleVisualUpdateForPaintInvalidationIfNeeded(); |
} |
+static bool hasWord(const String& text) { |
yosin_UTC9
2017/03/01 03:31:03
nit: s/hasWord/hasNonSeparatorCharacter/
Since th
yoichio
2017/03/01 03:42:09
Done.
|
+ for (unsigned i = 0; i < text.length(); i++) { |
+ if (!isSeparator(text.characterStartingAt(i))) |
+ return true; |
+ } |
+ return false; |
+} |
+ |
bool FrameSelection::selectWordAroundPosition(const VisiblePosition& position) { |
static const EWordSide wordSideList[2] = {RightWordIfOnBoundary, |
LeftWordIfOnBoundary}; |
for (EWordSide wordSide : wordSideList) { |
+ // TODO(yoichio): We should have Position version of |start/endOfWord| |
+ // for avoiding unnecessary canonicalization. Then we don't need |hasWord|. |
VisiblePosition start = startOfWord(position, wordSide); |
VisiblePosition end = endOfWord(position, wordSide); |
String text = |
plainText(EphemeralRange(start.deepEquivalent(), end.deepEquivalent())); |
- if (!text.isEmpty() && !isSeparator(text.characterStartingAt(0))) { |
+ if (!text.isEmpty() && hasWord(text)) { |
setSelection(SelectionInDOMTree::Builder() |
.collapse(start.toPositionWithAffinity()) |
.extend(end.deepEquivalent()) |