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 687 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
698 | 698 |
699 (*marker)->setActiveMatch(active); | 699 (*marker)->setActiveMatch(active); |
700 docDirty = true; | 700 docDirty = true; |
701 } | 701 } |
702 | 702 |
703 // repaint the affected node | 703 // repaint the affected node |
704 if (docDirty && node->renderer()) | 704 if (docDirty && node->renderer()) |
705 node->renderer()->setShouldDoFullPaintInvalidation(); | 705 node->renderer()->setShouldDoFullPaintInvalidation(); |
706 } | 706 } |
707 | 707 |
708 bool DocumentMarkerController::hasMarkers(Range* range, DocumentMarker::MarkerTy
pes markerTypes) | |
709 { | |
710 if (!possiblyHasMarkers(markerTypes)) | |
711 return false; | |
712 ASSERT(!m_markers.isEmpty()); | |
713 | |
714 Node* startContainer = range->startContainer(); | |
715 ASSERT(startContainer); | |
716 Node* endContainer = range->endContainer(); | |
717 ASSERT(endContainer); | |
718 | |
719 Node* pastLastNode = range->pastLastNode(); | |
720 for (Node* node = range->firstNode(); node != pastLastNode; node = NodeTrave
rsal::next(*node)) { | |
721 for (const DocumentMarker* marker : markersFor(node)) { | |
722 if (!markerTypes.contains(marker->type())) | |
723 continue; | |
724 if (node == startContainer && marker->endOffset() <= static_cast<uns
igned>(range->startOffset())) | |
725 continue; | |
726 if (node == endContainer && marker->startOffset() >= static_cast<uns
igned>(range->endOffset())) | |
727 continue; | |
728 return true; | |
729 } | |
730 } | |
731 return false; | |
732 } | |
733 | |
734 #ifndef NDEBUG | 708 #ifndef NDEBUG |
735 void DocumentMarkerController::showMarkers() const | 709 void DocumentMarkerController::showMarkers() const |
736 { | 710 { |
737 fprintf(stderr, "%d nodes have markers:\n", m_markers.size()); | 711 fprintf(stderr, "%d nodes have markers:\n", m_markers.size()); |
738 MarkerMap::const_iterator end = m_markers.end(); | 712 MarkerMap::const_iterator end = m_markers.end(); |
739 for (MarkerMap::const_iterator nodeIterator = m_markers.begin(); nodeIterato
r != end; ++nodeIterator) { | 713 for (MarkerMap::const_iterator nodeIterator = m_markers.begin(); nodeIterato
r != end; ++nodeIterator) { |
740 const Node* node = nodeIterator->key; | 714 const Node* node = nodeIterator->key; |
741 fprintf(stderr, "%p", node); | 715 fprintf(stderr, "%p", node); |
742 MarkerLists* markers = m_markers.get(node); | 716 MarkerLists* markers = m_markers.get(node); |
743 for (size_t markerListIndex = 0; markerListIndex < DocumentMarker::Marke
rTypeIndexesCount; ++markerListIndex) { | 717 for (size_t markerListIndex = 0; markerListIndex < DocumentMarker::Marke
rTypeIndexesCount; ++markerListIndex) { |
(...skipping 11 matching lines...) Expand all Loading... |
755 | 729 |
756 } // namespace blink | 730 } // namespace blink |
757 | 731 |
758 #ifndef NDEBUG | 732 #ifndef NDEBUG |
759 void showDocumentMarkers(const blink::DocumentMarkerController* controller) | 733 void showDocumentMarkers(const blink::DocumentMarkerController* controller) |
760 { | 734 { |
761 if (controller) | 735 if (controller) |
762 controller->showMarkers(); | 736 controller->showMarkers(); |
763 } | 737 } |
764 #endif | 738 #endif |
OLD | NEW |