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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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); !markedText.atEnd(); markedText.advance
()) { |
101 RefPtrWillBeRawPtr<Range> textPiece = markedText.range(); | 101 addMarker(markedText.startContainer(), DocumentMarker(type, markedText.s
tartOffset(), markedText.endOffset(), description, hash)); |
102 addMarker(textPiece->startContainer(), DocumentMarker(type, textPiece->s
tartOffset(), textPiece->endOffset(), description, hash)); | |
103 } | 102 } |
104 } | 103 } |
105 | 104 |
106 void DocumentMarkerController::addMarker(Range* range, DocumentMarker::MarkerTyp
e type, const String& description) | 105 void DocumentMarkerController::addMarker(Range* range, DocumentMarker::MarkerTyp
e type, const String& description) |
107 { | 106 { |
108 // 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. |
109 for (TextIterator markedText(range); !markedText.atEnd(); markedText.advance
()) { | 108 for (TextIterator markedText(range); !markedText.atEnd(); markedText.advance
()) { |
110 RefPtrWillBeRawPtr<Range> textPiece = markedText.range(); | 109 addMarker(markedText.startContainer(), DocumentMarker(type, markedText.s
tartOffset(), markedText.endOffset(), description)); |
111 addMarker(textPiece->startContainer(), DocumentMarker(type, textPiece->s
tartOffset(), textPiece->endOffset(), description)); | |
112 } | 110 } |
113 } | 111 } |
114 | 112 |
115 void DocumentMarkerController::addMarker(Range* range, DocumentMarker::MarkerTyp
e type) | 113 void DocumentMarkerController::addMarker(Range* range, DocumentMarker::MarkerTyp
e type) |
116 { | 114 { |
117 // 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. |
118 for (TextIterator markedText(range); !markedText.atEnd(); markedText.advance
()) { | 116 for (TextIterator markedText(range); !markedText.atEnd(); markedText.advance
()) { |
119 RefPtrWillBeRawPtr<Range> textPiece = markedText.range(); | 117 addMarker(markedText.startContainer(), DocumentMarker(type, markedText.s
tartOffset(), markedText.endOffset())); |
120 addMarker(textPiece->startContainer(), DocumentMarker(type, textPiece->s
tartOffset(), textPiece->endOffset())); | |
121 } | 118 } |
122 | 119 |
123 } | 120 } |
124 | 121 |
125 void DocumentMarkerController::addTextMatchMarker(const Range* range, bool activ
eMatch) | 122 void DocumentMarkerController::addTextMatchMarker(const Range* range, bool activ
eMatch) |
126 { | 123 { |
127 // Use a TextIterator to visit the potentially multiple nodes the range cove
rs. | 124 // Use a TextIterator to visit the potentially multiple nodes the range cove
rs. |
128 for (TextIterator markedText(range); !markedText.atEnd(); markedText.advance
()) { | 125 for (TextIterator markedText(range); !markedText.atEnd(); markedText.advance
()) { |
129 RefPtrWillBeRawPtr<Range> textPiece = markedText.range(); | 126 unsigned startOffset = markedText.startOffset(); |
130 unsigned startOffset = textPiece->startOffset(); | 127 unsigned endOffset = markedText.endOffset(); |
131 unsigned endOffset = textPiece->endOffset(); | 128 addMarker(markedText.startContainer(), DocumentMarker(startOffset, endOf
fset, activeMatch)); |
132 addMarker(textPiece->startContainer(), DocumentMarker(startOffset, endOf
fset, activeMatch)); | |
133 if (endOffset > startOffset) { | 129 if (endOffset > startOffset) { |
134 // Rendered rects for markers in WebKit are not populated until each
time | 130 // Rendered rects for markers in WebKit are not populated until each
time |
135 // the markers are painted. However, we need it to happen sooner, be
cause | 131 // the markers are painted. However, we need it to happen sooner, be
cause |
136 // the whole purpose of tickmarks on the scrollbar is to show where | 132 // the whole purpose of tickmarks on the scrollbar is to show where |
137 // matches off-screen are (that haven't been painted yet). | 133 // matches off-screen are (that haven't been painted yet). |
138 Node* node = textPiece->startContainer(); | 134 Node* node = markedText.startContainer(); |
139 DocumentMarkerVector markers = markersFor(node); | 135 DocumentMarkerVector markers = markersFor(node); |
140 toRenderedDocumentMarker(markers[markers.size() - 1])->setRenderedRe
ct(range->boundingBox()); | 136 toRenderedDocumentMarker(markers[markers.size() - 1])->setRenderedRe
ct(range->boundingBox()); |
141 } | 137 } |
142 } | 138 } |
143 } | 139 } |
144 | 140 |
145 void DocumentMarkerController::prepareForDestruction() | 141 void DocumentMarkerController::prepareForDestruction() |
146 { | 142 { |
147 clear(); | 143 clear(); |
148 } | 144 } |
(...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 | 770 |
775 } // namespace blink | 771 } // namespace blink |
776 | 772 |
777 #ifndef NDEBUG | 773 #ifndef NDEBUG |
778 void showDocumentMarkers(const blink::DocumentMarkerController* controller) | 774 void showDocumentMarkers(const blink::DocumentMarkerController* controller) |
779 { | 775 { |
780 if (controller) | 776 if (controller) |
781 controller->showMarkers(); | 777 controller->showMarkers(); |
782 } | 778 } |
783 #endif | 779 #endif |
OLD | NEW |