فهرست منبع

LibWeb: Return overflow rect width from Element::scroll_width()

Spec says that this function has to return "width of the element
scrolling area" which is width of "scrolling overflow rect" in our
model.
Aliaksandr Kalenik 1 سال پیش
والد
کامیت
9f581d0bc9

+ 1 - 0
Tests/LibWeb/Text/expected/DOM/element-scroll-width.txt

@@ -0,0 +1 @@
+Item 1Item 2Item 3Item 4Item 5Item 6Item 7Item 8Item 9Item 10Item 11Item 12  1200

+ 26 - 0
Tests/LibWeb/Text/input/DOM/element-scroll-width.html

@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<script src="../include.js"></script>
+<style>
+    * {
+        outline: 1px solid black;
+    }
+
+    .scrollable {
+        width: 300px;
+        overflow-x: auto;
+        white-space: nowrap;
+    }
+
+    span {
+        width: 100px;
+        height: 100px;
+        display: inline-block;
+    }
+</style>
+<div class="scrollable"><span>Item 1</span><span>Item 2</span><span>Item 3</span><span>Item 4</span><span>Item 5</span><span>Item 6</span><span>Item 7</span><span>Item 8</span><span>Item 9</span><span>Item 10</span><span>Item 11</span><span>Item 12</span></div>
+<script>
+    test(() => {
+        const scrollable = document.querySelector(".scrollable");
+        println(scrollable.scrollWidth);
+    });
+</script>

+ 1 - 1
Userland/Libraries/LibWeb/DOM/Element.cpp

@@ -1394,7 +1394,7 @@ int Element::scroll_width() const
         return 0;
 
     // 7. Return the width of the element’s scrolling area.
-    return paintable_box()->border_box_width().to_int();
+    return paintable_box()->scrollable_overflow_rect()->width().to_int();
 }
 
 // https://drafts.csswg.org/cssom-view/#dom-element-scrollheight