Title: [240544] trunk/Source/WebCore
Revision
240544
Author
[email protected]
Date
2019-01-26 04:44:17 -0800 (Sat, 26 Jan 2019)

Log Message

[LFC] Box::nextInFlowOrFloatingSibling() should always return sibling floats as well.
https://bugs.webkit.org/show_bug.cgi?id=193855

Reviewed by Antti Koivisto.

Use iterative algorithm to find next/previous siblings.

* layout/layouttree/LayoutBox.cpp:
(WebCore::Layout::Box::nextInFlowOrFloatingSibling const):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (240543 => 240544)


--- trunk/Source/WebCore/ChangeLog	2019-01-26 09:07:25 UTC (rev 240543)
+++ trunk/Source/WebCore/ChangeLog	2019-01-26 12:44:17 UTC (rev 240544)
@@ -1,3 +1,15 @@
+2019-01-26  Zalan Bujtas  <[email protected]>
+
+        [LFC] Box::nextInFlowOrFloatingSibling() should always return sibling floats as well.
+        https://bugs.webkit.org/show_bug.cgi?id=193855
+
+        Reviewed by Antti Koivisto.
+
+        Use iterative algorithm to find next/previous siblings.
+
+        * layout/layouttree/LayoutBox.cpp:
+        (WebCore::Layout::Box::nextInFlowOrFloatingSibling const):
+
 2019-01-25  Ryosuke Niwa  <[email protected]>
 
         Need a mechanism to override navigator.userAgent

Modified: trunk/Source/WebCore/layout/layouttree/LayoutBox.cpp (240543 => 240544)


--- trunk/Source/WebCore/layout/layouttree/LayoutBox.cpp	2019-01-26 09:07:25 UTC (rev 240543)
+++ trunk/Source/WebCore/layout/layouttree/LayoutBox.cpp	2019-01-26 12:44:17 UTC (rev 240544)
@@ -222,42 +222,34 @@
 
 const Box* Box::nextInFlowSibling() const
 {
-    if (auto* nextSibling = this->nextSibling()) {
-        if (nextSibling->isInFlow())
-            return nextSibling;
-        return nextSibling->nextInFlowSibling();
-    }
-    return nullptr;
+    auto* nextSibling = this->nextSibling();
+    while (nextSibling && !nextSibling->isInFlow())
+        nextSibling = nextSibling->nextSibling();
+    return nextSibling;
 }
 
 const Box* Box::nextInFlowOrFloatingSibling() const
 {
-    if (auto* nextSibling = this->nextSibling()) {
-        if (nextSibling->isInFlow() || nextSibling->isFloatingPositioned())
-            return nextSibling;
-        return nextSibling->nextInFlowSibling();
-    }
-    return nullptr;
+    auto* nextSibling = this->nextSibling();
+    while (nextSibling && !(nextSibling->isInFlow() || nextSibling->isFloatingPositioned()))
+        nextSibling = nextSibling->nextSibling();
+    return nextSibling;
 }
 
 const Box* Box::previousInFlowSibling() const
 {
-    if (auto* previousSibling = this->previousSibling()) {
-        if (previousSibling->isInFlow())
-            return previousSibling;
-        return previousSibling->previousInFlowSibling();
-    }
-    return nullptr;
+    auto* previousSibling = this->previousSibling();
+    while (previousSibling && !previousSibling->isInFlow())
+        previousSibling = previousSibling->previousSibling();
+    return previousSibling;
 }
 
 const Box* Box::previousInFlowOrFloatingSibling() const
 {
-    if (auto* previousSibling = this->previousSibling()) {
-        if (previousSibling->isInFlow() || previousSibling->isFloatingPositioned())
-            return previousSibling;
-        return previousSibling->previousInFlowOrFloatingSibling();
-    }
-    return nullptr;
+    auto* previousSibling = this->previousSibling();
+    while (previousSibling && !(previousSibling->isInFlow() || previousSibling->isFloatingPositioned()))
+        previousSibling = previousSibling->previousSibling();
+    return previousSibling;
 }
 
 bool Box::isOverflowVisible() const
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to