I bisected this regression to 7daf5cd
Invaliding when pseudo-element style changes revealed another issue that scroll_by here should not cause relayout, because it results in infinite recursion:
// Scrolling by zero offset will clamp scroll offset back to valid range if it was out of bounds
// after the viewport size change.
if (auto window = this->window())
window->scroll_by(0, 0);
Part of stacktrace:
frame #701: 0x0000000107ea74f8 liblagom-web.0.dylib`::scroll_by() at Window.cpp:1376:5 [opt]
frame #702: 0x0000000107ea757c liblagom-web.0.dylib`::scroll_by() at Window.cpp:1395:5 [opt]
frame #703: 0x0000000107c9896c liblagom-web.0.dylib`::update_layout() at Document.cpp:1153:17 [opt]
frame #704: 0x0000000107ea71b8 liblagom-web.0.dylib`::scroll() at Window.cpp:1309:15 [opt]
frame #705: 0x0000000107ea74f8 liblagom-web.0.dylib`::scroll_by() at Window.cpp:1376:5 [opt]
frame #706: 0x0000000107ea757c liblagom-web.0.dylib`::scroll_by() at Window.cpp:1395:5 [opt]
frame #707: 0x0000000107c9896c liblagom-web.0.dylib`::update_layout() at Document.cpp:1153:17 [opt]
frame #708: 0x0000000107ea71b8 liblagom-web.0.dylib`::scroll() at Window.cpp:1309:15 [opt]
frame #709: 0x0000000107ea74f8 liblagom-web.0.dylib`::scroll_by() at Window.cpp:1376:5 [opt]
frame #710: 0x0000000107ea757c liblagom-web.0.dylib`::scroll_by() at Window.cpp:1395:5 [opt]
frame #711: 0x0000000107c9896c liblagom-web.0.dylib`::update_layout() at Document.cpp:1153:17 [opt]
frame #712: 0x0000000107ea71b8 liblagom-web.0.dylib`::scroll() at Window.cpp:1309:15 [opt]
frame #713: 0x0000000107ea74f8 liblagom-web.0.dylib`::scroll_by() at Window.cpp:1376:5 [opt]
frame #714: 0x0000000107ea757c liblagom-web.0.dylib`::scroll_by() at Window.cpp:1395:5 [opt]
frame #715: 0x0000000107c9896c liblagom-web.0.dylib`::update_layout() at Document.cpp:1153:17 [opt]
frame #716: 0x0000000107ea71b8 liblagom-web.0.dylib`::scroll() at Window.cpp:1309:15 [opt]
frame #717: 0x0000000107ea74f8 liblagom-web.0.dylib`::scroll_by() at Window.cpp:1376:5 [opt]
frame #718: 0x0000000107ea757c liblagom-web.0.dylib`::scroll_by() at Window.cpp:1395:5 [opt]
frame #719: 0x0000000107c9896c liblagom-web.0.dylib`::update_layout() at Document.cpp:1153:17 [opt]
frame #720: 0x0000000107ea71b8 liblagom-web.0.dylib`::scroll() at Window.cpp:1309:15 [opt]
frame #721: 0x0000000107ea74f8 liblagom-web.0.dylib`::scroll_by() at Window.cpp:1376:5 [opt]
frame #722: 0x0000000107ea757c liblagom-web.0.dylib`::scroll_by() at Window.cpp:1395:5 [opt]
frame #723: 0x0000000107c9896c liblagom-web.0.dylib`::update_layout() at Document.cpp:1153:17 [opt]
frame #724: 0x0000000107ea71b8 liblagom-web.0.dylib`::scroll() at Window.cpp:1309:15 [opt]
frame #725: 0x0000000107ea74f8 liblagom-web.0.dylib`::scroll_by() at Window.cpp:1376:5 [opt]
frame #726: 0x0000000107ea757c liblagom-web.0.dylib`::scroll_by() at Window.cpp:1395:5 [opt]
frame #727: 0x0000000107c9896c liblagom-web.0.dylib`::update_layout() at Document.cpp:1153:17 [opt]
frame #728: 0x0000000107ea71b8 liblagom-web.0.dylib`::scroll() at Window.cpp:1309:15 [opt]
frame #729: 0x0000000107ea74f8 liblagom-web.0.dylib`::scroll_by() at Window.cpp:1376:5 [opt]
frame #730: 0x0000000107ea757c liblagom-web.0.dylib`::scroll_by() at Window.cpp:1395:5 [opt]
frame #731: 0x0000000107c9896c liblagom-web.0.dylib`::update_layout() at Document.cpp:1153:17 [opt]
frame #732: 0x0000000107ea71b8 liblagom-web.0.dylib`::scroll() at Window.cpp:1309:15 [opt]
frame #733: 0x0000000107ea74f8 liblagom-web.0.dylib`::scroll_by() at Window.cpp:1376:5 [opt]
frame #734: 0x0000000107ea757c liblagom-web.0.dylib`::scroll_by() at Window.cpp:1395:5 [opt]
frame #735: 0x0000000107c9896c liblagom-web.0.dylib`::update_layout() at Document.cpp:1153:17 [opt]
frame #736: 0x0000000107ea71b8 liblagom-web.0.dylib`::scroll() at Window.cpp:1309:15 [opt]
frame #737: 0x0000000107ea74f8 liblagom-web.0.dylib`::scroll_by() at Window.cpp:1376:5 [opt]
frame #738: 0x0000000107ea757c liblagom-web.0.dylib`::scroll_by() at Window.cpp:1395:5 [opt]
frame #739: 0x0000000107c9896c liblagom-web.0.dylib`::update_layout() at Document.cpp:1153:17 [opt]
frame #740: 0x0000000107d92f9c liblagom-web.0.dylib`::process() [inlined] operator() at EventLoop.cpp:293:22 [opt]
frame #741: 0x0000000107d92f94 liblagom-web.0.dylib`::process() [inlined] operator()<(lambda at /Users/kalenik/ladybird/Userland/Libraries/LibWeb/HTML/EventLoop/EventLoop.cpp:285:44)> at EventLoop.cpp:201:17 [opt]
frame #742: 0x0000000107d92f28 liblagom-web.0.dylib`::process() at EventLoop.cpp:285:5 [opt]
frame #743: 0x0000000107f899f4 liblagom-web.0.dylib`::call() [inlined] operator() at SafeFunction.h:85:25 [opt]
frame #744: 0x0000000107f899d8 liblagom-web.0.dylib`::call() [inlined] operator() at TimerSerenity.cpp:23:13 [opt]
frame #745: 0x0000000107f899b0 liblagom-web.0.dylib`::call() at Function.h:187:20 [opt]
frame #746: 0x0000000104aa4320 liblagom-core.0.dylib`::operator()() at Function.h:120:25 [opt]
frame #747: 0x0000000104aa37ec liblagom-core.0.dylib`::dispatch_event() at EventReceiver.cpp:162:17 [opt]
frame #748: 0x00000001041131c0 WebContent`::impl() [inlined] qt_timer_fired at EventLoopImplementationQt.cpp:219:12 [opt]
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too