| 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 |