Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.cpp

Issue 1605863002: Restart search in page when new text is found. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added default value for local var Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 656 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 667
668 updateMarkerRenderedRect(node, **marker); 668 updateMarkerRenderedRect(node, **marker);
669 } 669 }
670 } 670 }
671 671
672 // repaint the affected node 672 // repaint the affected node
673 if (docDirty && node->layoutObject()) 673 if (docDirty && node->layoutObject())
674 node->layoutObject()->setShouldDoFullPaintInvalidation(); 674 node->layoutObject()->setShouldDoFullPaintInvalidation();
675 } 675 }
676 676
677 void DocumentMarkerController::setMarkersActive(Range* range, bool active) 677 bool DocumentMarkerController::setMarkersActive(Range* range, bool active)
678 { 678 {
679 if (!possiblyHasMarkers(DocumentMarker::AllMarkers())) 679 if (!possiblyHasMarkers(DocumentMarker::AllMarkers()))
680 return; 680 return false;
681
681 ASSERT(!m_markers.isEmpty()); 682 ASSERT(!m_markers.isEmpty());
682 683
683 Node* startContainer = range->startContainer(); 684 Node* startContainer = range->startContainer();
684 Node* endContainer = range->endContainer(); 685 Node* endContainer = range->endContainer();
685 686
686 Node* pastLastNode = range->pastLastNode(); 687 Node* pastLastNode = range->pastLastNode();
687 688
689 bool markerFound = false;
688 for (Node* node = range->firstNode(); node != pastLastNode; node = NodeTrave rsal::next(*node)) { 690 for (Node* node = range->firstNode(); node != pastLastNode; node = NodeTrave rsal::next(*node)) {
689 int startOffset = node == startContainer ? range->startOffset() : 0; 691 int startOffset = node == startContainer ? range->startOffset() : 0;
690 int endOffset = node == endContainer ? range->endOffset() : INT_MAX; 692 int endOffset = node == endContainer ? range->endOffset() : INT_MAX;
691 setMarkersActive(node, startOffset, endOffset, active); 693 markerFound |= setMarkersActive(node, startOffset, endOffset, active);
692 } 694 }
695 return markerFound;
693 } 696 }
694 697
695 void DocumentMarkerController::setMarkersActive(Node* node, unsigned startOffset , unsigned endOffset, bool active) 698 bool DocumentMarkerController::setMarkersActive(Node* node, unsigned startOffset , unsigned endOffset, bool active)
696 { 699 {
697 MarkerLists* markers = m_markers.get(node); 700 MarkerLists* markers = m_markers.get(node);
698 if (!markers) 701 if (!markers)
699 return; 702 return false;
700 703
701 bool docDirty = false; 704 bool docDirty = false;
702 OwnPtrWillBeMember<MarkerList>& list = (*markers)[MarkerTypeToMarkerIndex(Do cumentMarker::TextMatch)]; 705 OwnPtrWillBeMember<MarkerList>& list = (*markers)[MarkerTypeToMarkerIndex(Do cumentMarker::TextMatch)];
703 if (!list) 706 if (!list)
704 return; 707 return false;
705 MarkerList::iterator startPos = std::upper_bound(list->begin(), list->end(), startOffset, endsBefore); 708 MarkerList::iterator startPos = std::upper_bound(list->begin(), list->end(), startOffset, endsBefore);
706 for (MarkerList::iterator marker = startPos; marker != list->end(); ++marker ) { 709 for (MarkerList::iterator marker = startPos; marker != list->end(); ++marker ) {
707 710
708 // Markers are returned in order, so stop if we are now past the specifi ed range. 711 // Markers are returned in order, so stop if we are now past the specifi ed range.
709 if ((*marker)->startOffset() >= endOffset) 712 if ((*marker)->startOffset() >= endOffset)
710 break; 713 break;
711 714
712 (*marker)->setActiveMatch(active); 715 (*marker)->setActiveMatch(active);
713 docDirty = true; 716 docDirty = true;
714 } 717 }
715 718
716 // repaint the affected node 719 // repaint the affected node
717 if (docDirty && node->layoutObject()) 720 if (docDirty && node->layoutObject())
718 node->layoutObject()->setShouldDoFullPaintInvalidation(); 721 node->layoutObject()->setShouldDoFullPaintInvalidation();
722 return docDirty;
719 } 723 }
720 724
721 #ifndef NDEBUG 725 #ifndef NDEBUG
722 void DocumentMarkerController::showMarkers() const 726 void DocumentMarkerController::showMarkers() const
723 { 727 {
724 fprintf(stderr, "%d nodes have markers:\n", m_markers.size()); 728 fprintf(stderr, "%d nodes have markers:\n", m_markers.size());
725 MarkerMap::const_iterator end = m_markers.end(); 729 MarkerMap::const_iterator end = m_markers.end();
726 for (MarkerMap::const_iterator nodeIterator = m_markers.begin(); nodeIterato r != end; ++nodeIterator) { 730 for (MarkerMap::const_iterator nodeIterator = m_markers.begin(); nodeIterato r != end; ++nodeIterator) {
727 const Node* node = nodeIterator->key; 731 const Node* node = nodeIterator->key;
728 fprintf(stderr, "%p", node); 732 fprintf(stderr, "%p", node);
(...skipping 13 matching lines...) Expand all
742 746
743 } // namespace blink 747 } // namespace blink
744 748
745 #ifndef NDEBUG 749 #ifndef NDEBUG
746 void showDocumentMarkers(const blink::DocumentMarkerController* controller) 750 void showDocumentMarkers(const blink::DocumentMarkerController* controller)
747 { 751 {
748 if (controller) 752 if (controller)
749 controller->showMarkers(); 753 controller->showMarkers();
750 } 754 }
751 #endif 755 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698