| 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 a871d7d574005d817d31217dfcc8e5e65ea05912..22b90905b537ed8d71be0d3873721c65aa91235e 100644
|
| --- a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp
|
| @@ -296,18 +296,30 @@ void DocumentMarkerController::MoveMarkers(Node* src_node,
|
| return;
|
| DCHECK(!markers_.IsEmpty());
|
|
|
| - MarkerLists* markers = markers_.at(src_node);
|
| - if (!markers)
|
| + MarkerLists* src_markers = markers_.at(src_node);
|
| + if (!src_markers)
|
| return;
|
|
|
| + if (!markers_.Contains(dst_node)) {
|
| + markers_.insert(dst_node,
|
| + new MarkerLists(DocumentMarker::kMarkerTypeIndexesCount));
|
| + }
|
| + MarkerLists* dst_markers = markers_.at(dst_node);
|
| +
|
| bool doc_dirty = false;
|
| - for (Member<MarkerList> list : *markers) {
|
| - if (!list)
|
| + for (size_t marker_list_index = 0; marker_list_index < src_markers->size();
|
| + ++marker_list_index) {
|
| + MarkerList* src_list = src_markers->at(marker_list_index);
|
| + if (!src_list)
|
| continue;
|
|
|
| + if (!dst_markers->at(marker_list_index))
|
| + dst_markers->at(marker_list_index) = new MarkerList;
|
| + MarkerList* dst_list = dst_markers->at(marker_list_index);
|
| +
|
| unsigned end_offset = length - 1;
|
| MarkerList::iterator it;
|
| - for (it = list->begin(); it != list->end(); ++it) {
|
| + for (it = src_list->begin(); it != src_list->end(); ++it) {
|
| DocumentMarker* marker = it->Get();
|
|
|
| // stop if we are now past the specified range
|
| @@ -319,11 +331,11 @@ void DocumentMarkerController::MoveMarkers(Node* src_node,
|
| if (marker->EndOffset() > end_offset)
|
| marker->SetEndOffset(end_offset);
|
|
|
| - AddMarker(dst_node, *marker);
|
| + DocumentMarkerListEditor::AddMarker(dst_list, marker);
|
| }
|
|
|
| - // Remove the range of markers that were moved to dstNode
|
| - list->erase(0, it - list->begin());
|
| + // Remove the range of markers that were moved to dst_node
|
| + src_list->erase(0, it - src_list->begin());
|
| }
|
|
|
| // repaint the affected node
|
|
|