| 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
reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights
reserved. |
| 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
| 8 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 8 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| 9 * | 9 * |
| 10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 | 90 |
| 91 void DocumentMarkerController::clear() | 91 void DocumentMarkerController::clear() |
| 92 { | 92 { |
| 93 m_markers.clear(); | 93 m_markers.clear(); |
| 94 m_possiblyExistingMarkerTypes = 0; | 94 m_possiblyExistingMarkerTypes = 0; |
| 95 } | 95 } |
| 96 | 96 |
| 97 void DocumentMarkerController::addMarker(Range* range, DocumentMarker::MarkerTyp
e type, const String& description, uint32_t hash) | 97 void DocumentMarkerController::addMarker(Range* range, DocumentMarker::MarkerTyp
e type, const String& description, uint32_t hash) |
| 98 { | 98 { |
| 99 // Use a TextIterator to visit the potentially multiple nodes the range cove
rs. | 99 // Use a TextIterator to visit the potentially multiple nodes the range cove
rs. |
| 100 for (TextIterator markedText(range); !markedText.atEnd(); markedText.advance
()) { | 100 for (TextIterator markedText(range->startPosition(), range->endPosition());
!markedText.atEnd(); markedText.advance()) { |
| 101 addMarker(markedText.startContainer(), DocumentMarker(type, markedText.s
tartOffset(), markedText.endOffset(), description, hash)); | 101 addMarker(markedText.startContainer(), DocumentMarker(type, markedText.s
tartOffset(), markedText.endOffset(), description, hash)); |
| 102 } | 102 } |
| 103 } | 103 } |
| 104 | 104 |
| 105 void DocumentMarkerController::addMarker(const Position& start, const Position&
end, DocumentMarker::MarkerType type, const String& description, uint32_t hash) | 105 void DocumentMarkerController::addMarker(const Position& start, const Position&
end, DocumentMarker::MarkerType type, const String& description, uint32_t hash) |
| 106 { | 106 { |
| 107 // Use a TextIterator to visit the potentially multiple nodes the range cove
rs. | 107 // Use a TextIterator to visit the potentially multiple nodes the range cove
rs. |
| 108 for (TextIterator markedText(start, end); !markedText.atEnd(); markedText.ad
vance()) { | 108 for (TextIterator markedText(start, end); !markedText.atEnd(); markedText.ad
vance()) { |
| 109 addMarker(markedText.startContainer(), DocumentMarker(type, markedText.s
tartOffset(), markedText.endOffset(), description, hash)); | 109 addMarker(markedText.startContainer(), DocumentMarker(type, markedText.s
tartOffset(), markedText.endOffset(), description, hash)); |
| 110 } | 110 } |
| 111 } | 111 } |
| 112 | 112 |
| 113 void DocumentMarkerController::addTextMatchMarker(const Range* range, bool activ
eMatch) | 113 void DocumentMarkerController::addTextMatchMarker(const Range* range, bool activ
eMatch) |
| 114 { | 114 { |
| 115 // Use a TextIterator to visit the potentially multiple nodes the range cove
rs. | 115 // Use a TextIterator to visit the potentially multiple nodes the range cove
rs. |
| 116 for (TextIterator markedText(range); !markedText.atEnd(); markedText.advance
()) { | 116 for (TextIterator markedText(range->startPosition(), range->endPosition());
!markedText.atEnd(); markedText.advance()) { |
| 117 unsigned startOffset = markedText.startOffset(); | 117 unsigned startOffset = markedText.startOffset(); |
| 118 unsigned endOffset = markedText.endOffset(); | 118 unsigned endOffset = markedText.endOffset(); |
| 119 addMarker(markedText.startContainer(), DocumentMarker(startOffset, endOf
fset, activeMatch)); | 119 addMarker(markedText.startContainer(), DocumentMarker(startOffset, endOf
fset, activeMatch)); |
| 120 if (endOffset > startOffset) { | 120 if (endOffset > startOffset) { |
| 121 // Rendered rects for markers in WebKit are not populated until each
time | 121 // Rendered rects for markers in WebKit are not populated until each
time |
| 122 // the markers are painted. However, we need it to happen sooner, be
cause | 122 // the markers are painted. However, we need it to happen sooner, be
cause |
| 123 // the whole purpose of tickmarks on the scrollbar is to show where | 123 // the whole purpose of tickmarks on the scrollbar is to show where |
| 124 // matches off-screen are (that haven't been painted yet). | 124 // matches off-screen are (that haven't been painted yet). |
| 125 Node* node = markedText.startContainer(); | 125 Node* node = markedText.startContainer(); |
| 126 DocumentMarkerVector markers = markersFor(node); | 126 DocumentMarkerVector markers = markersFor(node); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 142 ASSERT(!m_markers.isEmpty()); | 142 ASSERT(!m_markers.isEmpty()); |
| 143 | 143 |
| 144 int startOffset = markedText.startOffset(); | 144 int startOffset = markedText.startOffset(); |
| 145 int endOffset = markedText.endOffset(); | 145 int endOffset = markedText.endOffset(); |
| 146 removeMarkers(markedText.startContainer(), startOffset, endOffset - star
tOffset, markerTypes, shouldRemovePartiallyOverlappingMarker); | 146 removeMarkers(markedText.startContainer(), startOffset, endOffset - star
tOffset, markerTypes, shouldRemovePartiallyOverlappingMarker); |
| 147 } | 147 } |
| 148 } | 148 } |
| 149 | 149 |
| 150 void DocumentMarkerController::removeMarkers(Range* range, DocumentMarker::Marke
rTypes markerTypes, RemovePartiallyOverlappingMarkerOrNot shouldRemovePartiallyO
verlappingMarker) | 150 void DocumentMarkerController::removeMarkers(Range* range, DocumentMarker::Marke
rTypes markerTypes, RemovePartiallyOverlappingMarkerOrNot shouldRemovePartiallyO
verlappingMarker) |
| 151 { | 151 { |
| 152 TextIterator markedText(range); | 152 TextIterator markedText(range->startPosition(), range->endPosition()); |
| 153 DocumentMarkerController::removeMarkers(markedText, markerTypes, shouldRemov
ePartiallyOverlappingMarker); | 153 DocumentMarkerController::removeMarkers(markedText, markerTypes, shouldRemov
ePartiallyOverlappingMarker); |
| 154 } | 154 } |
| 155 | 155 |
| 156 void DocumentMarkerController::removeMarkers(const Position& start, const Positi
on& end, DocumentMarker::MarkerTypes markerTypes, RemovePartiallyOverlappingMark
erOrNot shouldRemovePartiallyOverlappingMarker) | 156 void DocumentMarkerController::removeMarkers(const Position& start, const Positi
on& end, DocumentMarker::MarkerTypes markerTypes, RemovePartiallyOverlappingMark
erOrNot shouldRemovePartiallyOverlappingMarker) |
| 157 { | 157 { |
| 158 TextIterator markedText(start, end); | 158 TextIterator markedText(start, end); |
| 159 DocumentMarkerController::removeMarkers(markedText, markerTypes, shouldRemov
ePartiallyOverlappingMarker); | 159 DocumentMarkerController::removeMarkers(markedText, markerTypes, shouldRemov
ePartiallyOverlappingMarker); |
| 160 } | 160 } |
| 161 | 161 |
| 162 static bool startsFurther(const OwnPtrWillBeMember<RenderedDocumentMarker>& lhv,
const DocumentMarker* rhv) | 162 static bool startsFurther(const OwnPtrWillBeMember<RenderedDocumentMarker>& lhv,
const DocumentMarker* rhv) |
| (...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 729 | 729 |
| 730 } // namespace blink | 730 } // namespace blink |
| 731 | 731 |
| 732 #ifndef NDEBUG | 732 #ifndef NDEBUG |
| 733 void showDocumentMarkers(const blink::DocumentMarkerController* controller) | 733 void showDocumentMarkers(const blink::DocumentMarkerController* controller) |
| 734 { | 734 { |
| 735 if (controller) | 735 if (controller) |
| 736 controller->showMarkers(); | 736 controller->showMarkers(); |
| 737 } | 737 } |
| 738 #endif | 738 #endif |
| OLD | NEW |