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

Unified Diff: Source/core/editing/VisibleUnits.cpp

Issue 268593009: Block empty space selection Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/editing/VisibleUnits.cpp
diff --git a/Source/core/editing/VisibleUnits.cpp b/Source/core/editing/VisibleUnits.cpp
index 9ffa0c86b26111f990102052a61108d09d4f7224..adcbe0892f53355e63542650b1790b20b36b964b 100644
--- a/Source/core/editing/VisibleUnits.cpp
+++ b/Source/core/editing/VisibleUnits.cpp
@@ -766,6 +766,38 @@ static VisiblePosition startOfLine(const VisiblePosition& c, LineEndpointComputa
return c.honorEditingBoundaryAtOrBefore(visPos);
}
+bool isStartOfWordASpace(const VisiblePosition& visiblePosition)
+{
+ if (visiblePosition.isNull())
+ return false;
+
+ Position position = visiblePosition.deepEquivalent();
+ Node* node = position.anchorNode();
+ Document& document = node->document();
+
+ if (!document.documentElement())
+ return false;
+
+ Node* boundary = node->enclosingBlockFlowElement();
+ if (!boundary)
+ return false;
+
+ RefPtr<Range> searchRange(document.createRange());
+ Position start(position.parentAnchoredEquivalent());
+ TrackExceptionState exceptionState;
+
+ searchRange->selectNodeContents(boundary, exceptionState);
+ if (exceptionState.hadException())
+ return false;
+
+ searchRange->setStart(start.anchorNode(), start.deprecatedEditingOffset(), exceptionState);
+ if (exceptionState.hadException())
+ return false;
+
+ TextIterator it(searchRange.get(), TextIteratorEmitsCharactersBetweenAllVisiblePositions);
+ return it.length() ? isASCIISpace(it.characterAt(0)) : false;
+}
+
// FIXME: Rename this function to reflect the fact it ignores bidi levels.
VisiblePosition startOfLine(const VisiblePosition& currentPosition)
{
« Source/core/editing/VisibleSelection.cpp ('K') | « Source/core/editing/VisibleUnits.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698