Index: third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp |
diff --git a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp |
index 74c20b4a9c99d701798c180c24561eac0d183548..b46b9ef3d20596aa236792c954d012e5c62e3b79 100644 |
--- a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp |
+++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp |
@@ -674,10 +674,14 @@ void DocumentMarkerController::shiftMarkers(Node* node, unsigned startOffset, in |
node->layoutObject()->setShouldDoFullPaintInvalidation(); |
} |
-void DocumentMarkerController::setMarkersActive(Range* range, bool active) |
+bool DocumentMarkerController::setMarkersActive(Range* range, bool active) |
{ |
- if (!possiblyHasMarkers(DocumentMarker::AllMarkers())) |
- return; |
+ if (!possiblyHasMarkers(DocumentMarker::AllMarkers())) { |
+ if (active) { |
+ addTextMatchMarker(range, true); |
+ return false; |
+ } |
+ } |
Finnur
2016/01/20 14:14:03
On the face of it, this looks a bit weird -- addin
dvadym
2016/01/29 09:44:17
At first I thought to add markers here when there
|
ASSERT(!m_markers.isEmpty()); |
Node* startContainer = range->startContainer(); |
@@ -685,23 +689,29 @@ void DocumentMarkerController::setMarkersActive(Range* range, bool active) |
Node* pastLastNode = range->pastLastNode(); |
+ bool markerFound = false; |
for (Node* node = range->firstNode(); node != pastLastNode; node = NodeTraversal::next(*node)) { |
int startOffset = node == startContainer ? range->startOffset() : 0; |
int endOffset = node == endContainer ? range->endOffset() : INT_MAX; |
- setMarkersActive(node, startOffset, endOffset, active); |
+ markerFound |= setMarkersActive(node, startOffset, endOffset, active); |
} |
+ if (!markerFound && active) { |
+ addTextMatchMarker(range, true); |
+ return false; |
+ } |
+ return true; |
} |
-void DocumentMarkerController::setMarkersActive(Node* node, unsigned startOffset, unsigned endOffset, bool active) |
+bool DocumentMarkerController::setMarkersActive(Node* node, unsigned startOffset, unsigned endOffset, bool active) |
{ |
MarkerLists* markers = m_markers.get(node); |
if (!markers) |
- return; |
+ return false; |
bool docDirty = false; |
OwnPtrWillBeMember<MarkerList>& list = (*markers)[MarkerTypeToMarkerIndex(DocumentMarker::TextMatch)]; |
if (!list) |
- return; |
+ return true; |
Finnur
2016/01/20 14:14:03
Out of curiosity... why not return false here?
dvadym
2016/01/29 09:44:17
Agree, fixed.
|
MarkerList::iterator startPos = std::upper_bound(list->begin(), list->end(), startOffset, endsBefore); |
for (MarkerList::iterator marker = startPos; marker != list->end(); ++marker) { |
@@ -716,6 +726,7 @@ void DocumentMarkerController::setMarkersActive(Node* node, unsigned startOffset |
// repaint the affected node |
if (docDirty && node->layoutObject()) |
node->layoutObject()->setShouldDoFullPaintInvalidation(); |
+ return true; |
} |
#ifndef NDEBUG |