[Qt] Assert in GestureTapHighlighter.
[WebKit-https.git] / Source / WebCore / page / GestureTapHighlighter.cpp
index 55c8048b09821d56e28765ad1c52d00d3d7ab0f1..85e41a48708e064387d55ffa52aa609a2d8a0196 100644 (file)
@@ -95,6 +95,8 @@ inline bool strikes(const LayoutRect& a, const LayoutRect& b)
 
 inline void shiftXEdgesToContainIfStrikes(LayoutRect& rect, const LayoutRect& other)
 {
+    if (rect.isEmpty())
+        return;
     LayoutUnit leftSide = rect.x();
     LayoutUnit rightSide = rect.maxX();
 
@@ -156,6 +158,9 @@ Path pathForRenderer(RenderObject* o)
 
     // Add the first box, but merge it with the center boxes if it intersects.
     if (rects.size() && !rects.first().isEmpty()) {
+        // Adjust center boxes to boundary of first
+        if (drawableRects.size())
+            shiftXEdgesToContainIfStrikes(drawableRects.last(), rects.first());
         if (drawableRects.size() && drawableRects.last().intersects(rects.first()))
             drawableRects.last().unite(rects.first());
         else
@@ -164,19 +169,15 @@ Path pathForRenderer(RenderObject* o)
 
     // Add the last box, but merge it with the center boxes if it intersects.
     if (rects.size() > 1 && !rects.last().isEmpty()) {
+        // Adjust center boxes to boundary of last
+        if (drawableRects.size())
+            shiftXEdgesToContainIfStrikes(drawableRects.last(), rects.last());
         if (drawableRects.size() && drawableRects.last().intersects(rects.last()))
             drawableRects.last().unite(rects.last());
         else
             drawableRects.append(rects.last());
     }
 
-    // Adjust middle to boundaries of first and last.
-    if (drawableRects.size() == 3) {
-        LayoutRect& middle = drawableRects.at(1);
-        shiftXEdgesToContainIfStrikes(middle, drawableRects.at(0));
-        shiftXEdgesToContainIfStrikes(middle, drawableRects.at(2));
-    }
-
     for (size_t i = 0; i < drawableRects.size(); ++i) {
         LayoutRect prev = i ? drawableRects.at(i - 1) : LayoutRect();
         LayoutRect next = i < (drawableRects.size() - 1) ? drawableRects.at(i + 1) : LayoutRect();