addMarker() should not encompass the consecutive marker.
authorJinwoo Song <jinwoo7.song@samsung.com>
Mon, 3 Jun 2013 03:28:21 +0000 (12:28 +0900)
committerGerrit Code Review <gerrit2@kim11>
Mon, 3 Jun 2013 05:23:04 +0000 (14:23 +0900)
[Title] addMarker() should not encompass the consecutive marker.
[Issue#] N_SE-39678
[Problem] Consecutively searching characters are set highlighted in finding text.
[Cause] addMarker() in DocumentMarkerController did not create a new marker for the consecutively added string,
        instead it encompassed the new marker to the existed one.
[Solution] Do not encompass the new marker to exist markers when the new markers's start offset
           is equal to exist markers' endOffset. Markers should be seperately created to set highlight
           each markers distinguishable.

Change-Id: Iaa67b0c45692fa738cac8e1d1022516e484434db

Source/WebCore/dom/DocumentMarkerController.cpp
Source/WebKit2/WebProcess/WebPage/FindController.cpp

index a3ebc93..87dbb23 100644 (file)
@@ -155,7 +155,15 @@ void DocumentMarkerController::addMarker(Node* node, const DocumentMarker& newMa
             DocumentMarker marker = list->at(i);
             if (marker.startOffset() > toInsert.startOffset())
                 break;
+#if ENABLE(TIZEN_FIND_STRING)
+            // We should not encompass the new marker to exist markers when the new markers's start offset
+            // is equal to exist markers' endOffset. Markers should be seperately created to set highlight
+            // each markers distinguishable. For example, consecutive same characters with different ragne
+            // should be marked differently.
+            if (marker.type() == toInsert.type() && marker.endOffset() > toInsert.startOffset()) {
+#else
             if (marker.type() == toInsert.type() && marker.endOffset() >= toInsert.startOffset()) {
+#endif
                 toInsert.setStartOffset(marker.startOffset());
                 list->remove(i);
                 numMarkers--;
@@ -593,7 +601,12 @@ void DocumentMarkerController::setMarkersActive(Node* node, unsigned startOffset
             break;
 
         // Skip marker that is wrong type or before target.
+#if ENABLE(TIZEN_FIND_STRING)
+        // We should skip the overlaping marker.
+        if (marker.endOffset() <= startOffset || marker.type() != DocumentMarker::TextMatch)
+#else
         if (marker.endOffset() < startOffset || marker.type() != DocumentMarker::TextMatch)
+#endif
             continue;
 
         marker.setActiveMatch(active);
index 2688357..89609c0 100644 (file)
@@ -176,7 +176,6 @@ void FindController::setActiveMatchHighlight(int activeMatchIndex)
     m_activeMatch->firstNode()->renderer()->scrollRectToVisible(m_activeMatch->boundingBox(),
         ScrollAlignment::alignCenterIfNeeded, ScrollAlignment::alignCenterIfNeeded);
 
-    frame->document()->markers()->addTextMatchMarker(m_activeMatch.get(), true);
     frame->document()->markers()->setMarkersActive(m_activeMatch.get(), true);
 }
 #endif