| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
| 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights |
| 7 * reserved. | 7 * reserved. |
| 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
| 9 * (http://www.torchmobile.com/) | 9 * (http://www.torchmobile.com/) |
| 10 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 const DocumentMarker::MarkerType new_marker_type = new_marker->GetType(); | 222 const DocumentMarker::MarkerType new_marker_type = new_marker->GetType(); |
| 223 if (!ListForType(markers, new_marker_type)) | 223 if (!ListForType(markers, new_marker_type)) |
| 224 ListForType(markers, new_marker_type) = CreateListForType(new_marker_type); | 224 ListForType(markers, new_marker_type) = CreateListForType(new_marker_type); |
| 225 | 225 |
| 226 DocumentMarkerList* const list = ListForType(markers, new_marker_type); | 226 DocumentMarkerList* const list = ListForType(markers, new_marker_type); |
| 227 list->Add(new_marker); | 227 list->Add(new_marker); |
| 228 | 228 |
| 229 // repaint the affected node | 229 // repaint the affected node |
| 230 if (node->GetLayoutObject()) { | 230 if (node->GetLayoutObject()) { |
| 231 node->GetLayoutObject()->SetShouldDoFullPaintInvalidation( | 231 node->GetLayoutObject()->SetShouldDoFullPaintInvalidation( |
| 232 kPaintInvalidationDocumentMarkerChange); | 232 PaintInvalidationReason::kDocumentMarker); |
| 233 } | 233 } |
| 234 } | 234 } |
| 235 | 235 |
| 236 // Moves markers from src_node to dst_node. Markers are moved if their start | 236 // Moves markers from src_node to dst_node. Markers are moved if their start |
| 237 // offset is less than length. Markers that run past that point are truncated. | 237 // offset is less than length. Markers that run past that point are truncated. |
| 238 void DocumentMarkerController::MoveMarkers(Node* src_node, | 238 void DocumentMarkerController::MoveMarkers(Node* src_node, |
| 239 int length, | 239 int length, |
| 240 Node* dst_node) { | 240 Node* dst_node) { |
| 241 if (length <= 0) | 241 if (length <= 0) |
| 242 return; | 242 return; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 265 ListForType(dst_markers, type) = CreateListForType(type); | 265 ListForType(dst_markers, type) = CreateListForType(type); |
| 266 | 266 |
| 267 DocumentMarkerList* const dst_list = ListForType(dst_markers, type); | 267 DocumentMarkerList* const dst_list = ListForType(dst_markers, type); |
| 268 if (src_list->MoveMarkers(length, dst_list)) | 268 if (src_list->MoveMarkers(length, dst_list)) |
| 269 doc_dirty = true; | 269 doc_dirty = true; |
| 270 } | 270 } |
| 271 | 271 |
| 272 // repaint the affected node | 272 // repaint the affected node |
| 273 if (doc_dirty && dst_node->GetLayoutObject()) { | 273 if (doc_dirty && dst_node->GetLayoutObject()) { |
| 274 dst_node->GetLayoutObject()->SetShouldDoFullPaintInvalidation( | 274 dst_node->GetLayoutObject()->SetShouldDoFullPaintInvalidation( |
| 275 kPaintInvalidationDocumentMarkerChange); | 275 PaintInvalidationReason::kDocumentMarker); |
| 276 } | 276 } |
| 277 } | 277 } |
| 278 | 278 |
| 279 void DocumentMarkerController::RemoveMarkersInternal( | 279 void DocumentMarkerController::RemoveMarkersInternal( |
| 280 Node* node, | 280 Node* node, |
| 281 unsigned start_offset, | 281 unsigned start_offset, |
| 282 int length, | 282 int length, |
| 283 DocumentMarker::MarkerTypes marker_types) { | 283 DocumentMarker::MarkerTypes marker_types) { |
| 284 if (length <= 0) | 284 if (length <= 0) |
| 285 return; | 285 return; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 316 | 316 |
| 317 if (empty_lists_count == DocumentMarker::kMarkerTypeIndexesCount) { | 317 if (empty_lists_count == DocumentMarker::kMarkerTypeIndexesCount) { |
| 318 markers_.erase(node); | 318 markers_.erase(node); |
| 319 if (markers_.IsEmpty()) | 319 if (markers_.IsEmpty()) |
| 320 possibly_existing_marker_types_ = 0; | 320 possibly_existing_marker_types_ = 0; |
| 321 } | 321 } |
| 322 | 322 |
| 323 // repaint the affected node | 323 // repaint the affected node |
| 324 if (doc_dirty && node->GetLayoutObject()) { | 324 if (doc_dirty && node->GetLayoutObject()) { |
| 325 node->GetLayoutObject()->SetShouldDoFullPaintInvalidation( | 325 node->GetLayoutObject()->SetShouldDoFullPaintInvalidation( |
| 326 kPaintInvalidationDocumentMarkerChange); | 326 PaintInvalidationReason::kDocumentMarker); |
| 327 } | 327 } |
| 328 } | 328 } |
| 329 | 329 |
| 330 DocumentMarkerVector DocumentMarkerController::MarkersFor( | 330 DocumentMarkerVector DocumentMarkerController::MarkersFor( |
| 331 Node* node, | 331 Node* node, |
| 332 DocumentMarker::MarkerTypes marker_types) { | 332 DocumentMarker::MarkerTypes marker_types) { |
| 333 DocumentMarkerVector result; | 333 DocumentMarkerVector result; |
| 334 | 334 |
| 335 MarkerLists* markers = markers_.at(node); | 335 MarkerLists* markers = markers_.at(node); |
| 336 if (!markers) | 336 if (!markers) |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 569 } | 569 } |
| 570 | 570 |
| 571 node_can_be_removed = | 571 node_can_be_removed = |
| 572 empty_lists_count == DocumentMarker::kMarkerTypeIndexesCount; | 572 empty_lists_count == DocumentMarker::kMarkerTypeIndexesCount; |
| 573 } | 573 } |
| 574 | 574 |
| 575 if (needs_repainting) { | 575 if (needs_repainting) { |
| 576 const Node& node = *iterator->key; | 576 const Node& node = *iterator->key; |
| 577 if (LayoutObject* layout_object = node.GetLayoutObject()) { | 577 if (LayoutObject* layout_object = node.GetLayoutObject()) { |
| 578 layout_object->SetShouldDoFullPaintInvalidation( | 578 layout_object->SetShouldDoFullPaintInvalidation( |
| 579 kPaintInvalidationDocumentMarkerChange); | 579 PaintInvalidationReason::kDocumentMarker); |
| 580 } | 580 } |
| 581 InvalidatePaintForTickmarks(node); | 581 InvalidatePaintForTickmarks(node); |
| 582 } | 582 } |
| 583 | 583 |
| 584 if (node_can_be_removed) { | 584 if (node_can_be_removed) { |
| 585 markers_.erase(iterator); | 585 markers_.erase(iterator); |
| 586 if (markers_.IsEmpty()) | 586 if (markers_.IsEmpty()) |
| 587 possibly_existing_marker_types_ = 0; | 587 possibly_existing_marker_types_ = 0; |
| 588 } | 588 } |
| 589 } | 589 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 602 // inner loop: process each marker in the current node | 602 // inner loop: process each marker in the current node |
| 603 MarkerLists* markers = i->value.Get(); | 603 MarkerLists* markers = i->value.Get(); |
| 604 for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) { | 604 for (DocumentMarker::MarkerType type : DocumentMarker::AllMarkers()) { |
| 605 DocumentMarkerList* const list = ListForType(markers, type); | 605 DocumentMarkerList* const list = ListForType(markers, type); |
| 606 if (!list || list->IsEmpty() || !marker_types.Contains(type)) | 606 if (!list || list->IsEmpty() || !marker_types.Contains(type)) |
| 607 continue; | 607 continue; |
| 608 | 608 |
| 609 // cause the node to be redrawn | 609 // cause the node to be redrawn |
| 610 if (LayoutObject* layout_object = node->GetLayoutObject()) { | 610 if (LayoutObject* layout_object = node->GetLayoutObject()) { |
| 611 layout_object->SetShouldDoFullPaintInvalidation( | 611 layout_object->SetShouldDoFullPaintInvalidation( |
| 612 kPaintInvalidationDocumentMarkerChange); | 612 PaintInvalidationReason::kDocumentMarker); |
| 613 break; | 613 break; |
| 614 } | 614 } |
| 615 } | 615 } |
| 616 } | 616 } |
| 617 } | 617 } |
| 618 | 618 |
| 619 bool DocumentMarkerController::SetMarkersActive(const EphemeralRange& range, | 619 bool DocumentMarkerController::SetMarkersActive(const EphemeralRange& range, |
| 620 bool active) { | 620 bool active) { |
| 621 if (!PossiblyHasMarkers(DocumentMarker::AllMarkers())) | 621 if (!PossiblyHasMarkers(DocumentMarker::AllMarkers())) |
| 622 return false; | 622 return false; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 if ((*marker)->StartOffset() >= end_offset) | 673 if ((*marker)->StartOffset() >= end_offset) |
| 674 break; | 674 break; |
| 675 | 675 |
| 676 (*marker)->SetIsActiveMatch(active); | 676 (*marker)->SetIsActiveMatch(active); |
| 677 doc_dirty = true; | 677 doc_dirty = true; |
| 678 } | 678 } |
| 679 | 679 |
| 680 // repaint the affected node | 680 // repaint the affected node |
| 681 if (doc_dirty && node->GetLayoutObject()) { | 681 if (doc_dirty && node->GetLayoutObject()) { |
| 682 node->GetLayoutObject()->SetShouldDoFullPaintInvalidation( | 682 node->GetLayoutObject()->SetShouldDoFullPaintInvalidation( |
| 683 kPaintInvalidationDocumentMarkerChange); | 683 PaintInvalidationReason::kDocumentMarker); |
| 684 } | 684 } |
| 685 return doc_dirty; | 685 return doc_dirty; |
| 686 } | 686 } |
| 687 | 687 |
| 688 #ifndef NDEBUG | 688 #ifndef NDEBUG |
| 689 void DocumentMarkerController::ShowMarkers() const { | 689 void DocumentMarkerController::ShowMarkers() const { |
| 690 StringBuilder builder; | 690 StringBuilder builder; |
| 691 MarkerMap::const_iterator end = markers_.end(); | 691 MarkerMap::const_iterator end = markers_.end(); |
| 692 for (MarkerMap::const_iterator node_iterator = markers_.begin(); | 692 for (MarkerMap::const_iterator node_iterator = markers_.begin(); |
| 693 node_iterator != end; ++node_iterator) { | 693 node_iterator != end; ++node_iterator) { |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 749 } | 749 } |
| 750 | 750 |
| 751 } // namespace blink | 751 } // namespace blink |
| 752 | 752 |
| 753 #ifndef NDEBUG | 753 #ifndef NDEBUG |
| 754 void showDocumentMarkers(const blink::DocumentMarkerController* controller) { | 754 void showDocumentMarkers(const blink::DocumentMarkerController* controller) { |
| 755 if (controller) | 755 if (controller) |
| 756 controller->ShowMarkers(); | 756 controller->ShowMarkers(); |
| 757 } | 757 } |
| 758 #endif | 758 #endif |
| OLD | NEW |