Files
ladybird/Tests/LibWeb/Text/input/input-scroll-cursor-into-view.html
Jelle Raaijmakers ded42e649b LibWeb: Do not scroll cursor into view on programmatic selection changes
We were mimicking Firefox' behavior that whenever a programmatic change
to an <input>'s or <textarea>'s selection happened, the new selection
focus is brought into view by scrolling. Currently we run a layout
update synchronously for that to make sure we have the fragment's
correct dimensions, which caused a significant performance regression in
Speedometer.

Since this is non-standard behavior, let's mimic Chromium instead which
does not scroll at all - only for direct user initiated input such as
typing.

Relevant issues:

* https://github.com/whatwg/html/issues/6217
* https://bugzilla.mozilla.org/show_bug.cgi?id=232405
* https://issues.chromium.org/issues/41081857
2026-02-17 10:24:00 +01:00

33 lines
913 B
HTML

<!DOCTYPE html>
<style>
input {
font-size: 16px;
width: 100px;
padding: 2px;
border: 1px solid;
}
</style>
<input value="foobarbazloremipsum foobarbazloremipsum" />
<script src="include.js"></script>
<script>
test(() => {
const input = document.querySelector("input");
input.offsetWidth;
input.focus();
// Click near the left edge before scrolling.
const rect = input.getBoundingClientRect();
const x = rect.left + 5;
const y = rect.top + rect.height / 2;
internals.click(x, y);
println(`before: ${input.selectionStart}`);
// Move cursor to the end via keyboard, which should scroll the input.
internals.sendKey(input, "End");
// Click in the same spot after scrolling.
internals.click(x, y);
println(`after: ${input.selectionStart}`);
});
</script>