Index: Source/web/WebLocalFrameImpl.cpp |
diff --git a/Source/web/WebLocalFrameImpl.cpp b/Source/web/WebLocalFrameImpl.cpp |
index 9da6d1bc717b6c2687451c6a1db43f858cdc1764..c2e4a7605977dea95d620971f7948e6fcdeedbe3 100644 |
--- a/Source/web/WebLocalFrameImpl.cpp |
+++ b/Source/web/WebLocalFrameImpl.cpp |
@@ -1842,6 +1842,31 @@ void WebLocalFrameImpl::setFindEndstateFocusAndSelection() |
} |
} |
+bool WebLocalFrameImpl::setCaretSelectionFromRangeSelection() |
+{ |
+ if (hasSelection()) { |
yosin_UTC9
2014/06/13 04:20:15
nit: We prefer early return, e.g.
if (!hasSelecti
|
+ // Check whether Selection exists |
+ FrameSelection& selection = frame()->selection(); |
+ if (selection.isInTextField() && selection.isRange()) { |
yosin_UTC9
2014/06/13 04:20:15
We may want not lose selection for contenteditable
AKVT
2014/06/16 10:34:34
Done.
AKVT
2014/06/16 10:34:34
Done.
|
+ // Check whether it's a range selection. It appears to be reduandant. |
yosin_UTC9
2014/06/13 04:20:15
It seems Selection.collapseToEnd() == selection().
AKVT
2014/06/16 10:34:34
Done.
|
+ // During copy, Range selection should be available. For safety purpse added this condition. |
Yuta Kitamura
2014/06/16 07:58:43
typo: purpse
AKVT
2014/06/16 10:34:34
Done.
|
+ RefPtrWillBeRawPtr<Range> selectedRange = selection.toNormalizedRange(); |
+ if (!selectedRange) |
+ return false; |
+ |
+ int startOffset = selectedRange->startOffset(); |
+ int endOffset = selectedRange->endOffset(); |
+ if (startOffset != endOffset) { |
+ // Convert to Caret selection without clearing selection to allow continouous editing after copy. |
+ frame()->inputMethodController().setEditableSelectionOffsets(PlainTextRange(endOffset, endOffset)); |
+ return true; |
+ } |
+ } |
+ } |
+ |
+ return false; |
+} |
+ |
void WebLocalFrameImpl::didFail(const ResourceError& error, bool wasProvisional) |
{ |
if (!client()) |