1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2026-01-12 22:41:00 +00:00
serenity/Userland/Libraries
Andreas Kling 990e7219d6 LibWeb: Fix iframes flickering on window resize
After finishing layout, iframe layout boxes (FrameBox) get notified
about their new size by LayoutState::commit(). This information is
forwarded to the nested browsing context, where it can be used for
layout of the nested document.

The problem here was that we notified the FrameBox twice. Once when
assigning the used offset to its paintable, and once when assigning its
size. Because the offset was assigned first, we ended up telling the
FrameBox "btw, your size is 0x0". This caused us to throw away all
the layout information we had for the nested document.

We'd then say "actually, your size is 300x200" (or something) but by
then it was already too late, and we had to do a full relayout.
This caused iframes to flicker as every time their containing document
was laid out, we'd nuke the iframe layout and redo it (on a zero timer).

The fix is pleasantly simple: we didn't need to inform the nested
document of its offset in the containing document's layout anyway. Only
its size is relevant. So we can simply remove the first call, which
removes the bogus 0x0 temporary size.

Note that iframes may still flicker if they change size in the
containing document. That's a separate issue that will require more
finesse to solve. However, this fixes a very noticeable common case.
2023-05-15 14:08:08 +02:00
..
LibArchive LibArchive: Read Tar archive headers through read_value 2023-03-13 15:16:20 +00:00
LibAudio AK: Add the Input word to input-only buffered streams 2023-05-09 11:18:46 +02:00
LibC Userland: Silence or resolve new GCC 13 warnings 2023-05-15 07:00:29 +02:00
LibCards Base+LibCards: Move card backs from /icons/ to /graphics/ 2023-05-05 11:52:33 +01:00
LibChess AK: Add the Input word to input-only buffered streams 2023-05-09 11:18:46 +02:00
LibCMake LibSyntax+Libraries: Replace TextStyle with Gfx::TextAttributes 2023-03-15 14:55:49 +01:00
LibCodeComprehension LibCpp: Support for parsing c-style fixed arrays (arr[2]) 2023-04-26 09:40:25 +01:00
LibCompress AK: Add the Input word to input-only buffered streams 2023-05-09 11:18:46 +02:00
LibConfig LibCore: Big first step towards pluggable Core::EventLoop 2023-04-25 14:48:40 +02:00
LibCore LibCore: Remove DeprecatedFile::read_link 2023-05-15 06:50:43 +02:00
LibCoredump LibCoredump+CrashReporter: Make CrashReporter work on AArch64 2023-04-23 14:30:59 +02:00
LibCpp LibCpp: Support for parsing c-style fixed arrays (arr[2]) 2023-04-26 09:40:25 +01:00
LibCrypt LibCrypt: Start installing headers again 2023-03-20 09:33:30 +01:00
LibCrypto LibCrypto+LibTLS: Avoid crashing on invalid input 2023-05-08 06:43:28 +02:00
LibDebug LibDebug: Stub out LocListX and remove stub expression evaluator 2023-05-14 09:21:08 +02:00
LibDesktop Everywhere: Remove NonnullRefPtr.h includes 2023-03-06 23:46:35 +01:00
LibDeviceTree Everywhere: Remove unused DeprecatedString includes 2023-04-09 22:00:54 +02:00
LibDiff LibDiff: Make Diff::generate_only_additions take text as StringView 2022-12-20 10:58:54 +01:00
LibDNS AK: Rename Stream::write_entire_buffer to Stream::write_until_depleted 2023-03-13 15:16:20 +00:00
LibDSP Piano: Allow per-track controls (again) 2023-05-05 01:32:09 +02:00
LibEDID LibEDID: Fix compiler error when ENABLE_PNP_IDS_DOWNLOAD=OFF 2023-04-06 10:26:21 -04:00
LibELF LibELF: Only call IFUNC resolvers after populating the PLT 2023-05-14 13:47:53 +02:00
LibFileSystem Userland: Allow our access check to pass flags to faccessat syscall 2023-05-13 17:59:37 -06:00
LibFileSystemAccessClient FileSystemAccessServer: Use ECANCELED instead of -1 2023-05-05 15:12:24 +01:00
LibGemini AK+Everywhere: Change URL::path() to serialize_path() 2023-04-15 06:37:04 +02:00
LibGfx LibGfx: Reverse coordinate subtraction in Rect::constrained_to() 2023-05-15 12:15:39 +02:00
LibGL LibGL: Implement support for the GL_RGB5_A1 internal image format 2023-05-04 16:11:28 +02:00
LibGLSL Everywhere: Use _{short_,}string to create Strings from literals 2023-02-25 20:51:49 +01:00
LibGPU LibGPU: Remove DeprecatedString usage 2023-01-30 13:49:52 -05:00
LibGUI LibGUI: Put a governor on Action activation 2023-05-15 12:15:39 +02:00
LibHTTP AK+Everywhere: Change URL::path() to serialize_path() 2023-04-15 06:37:04 +02:00
LibIDL Libraries: Convert DeprecatedFile usages to LibFileSystem 2023-03-24 10:58:43 +00:00
LibImageDecoderClient LibImageDecoderClient: Fix minor const-correctness issue 2023-02-21 00:54:04 +01:00
LibIMAP Everywhere: Remove unintentional partial stream reads and writes 2023-03-13 15:16:20 +00:00
LibIPC LibCore: Big first step towards pluggable Core::EventLoop 2023-04-25 14:48:40 +02:00
LibJS Userland: Silence or resolve new GCC 13 warnings 2023-05-15 07:00:29 +02:00
LibKeyboard LibKeyboard: Read keymap through File, not DeprecatedFile 2023-05-12 19:46:54 +01:00
LibLine Userland: Remove serialize-to-JSON functions only used for Inspector 2023-04-25 14:48:40 +02:00
LibLocale Everywhere: Use ReadonlySpan<T> instead of Span<T const> 2023-02-08 19:15:45 +00:00
LibMain Everywhere: Explicitly link all binaries against the LibC target 2022-11-01 14:49:09 +00:00
LibManual LibManual: Allow querying on a help URL 2023-05-08 21:03:19 -06:00
LibMarkdown LibMarkdown+LibSyntax: Add a Markdown syntax highlighter 2023-05-05 17:08:40 +01:00
LibPartition LibPartition: Make Kernel parts const-correct re: StorageDevice& 2023-02-21 00:54:04 +01:00
LibPCIDB AK+Everywhere: Rename String to DeprecatedString 2022-12-06 08:54:33 +01:00
LibPDF LibGfx+Fuzz: Convert ImageDecoder::initialize to ErrorOr 2023-05-12 09:40:24 +01:00
LibProtocol LibCore: Simplify Core::Notifier by only allowing one event type 2023-04-25 14:48:40 +02:00
LibRegex LibRegex: Avoid calling GenericLexer::consume() past EOF 2023-04-14 12:33:54 +02:00
LibSanitizer LibC: Properly implement stack protectors 2022-11-01 14:49:09 +00:00
LibSoftGPU LibSoftGPU: Use multiplication instead of division for linear fog 2023-02-18 01:45:00 +01:00
LibSQL AK: Add the Input word to input-only buffered streams 2023-05-09 11:18:46 +02:00
LibSymbolication LibSymbolication: Use Core::File instead of Core::DeprecatedFile 2023-04-27 07:27:14 +02:00
LibSyntax LibMarkdown+LibSyntax: Add a Markdown syntax highlighter 2023-05-05 17:08:40 +01:00
LibSystem
LibTest LibTest: Add a EXPECT_APPROXIMATE_WITH_ERROR macro with custom error 2023-04-30 00:46:11 +02:00
LibTextCodec LibTextCodec: Change UTF-8's decoder to replace invalid code points 2023-05-12 05:47:36 +02:00
LibThreading LibThreading: Create WorkerThread class run a single task concurrently 2023-04-23 23:14:30 +02:00
LibTimeZone AK+LibTimeZone: Add debug only formatter for Optional 2023-04-28 09:42:28 +02:00
LibTLS LibCrypto+LibTLS: Avoid crashing on invalid input 2023-05-08 06:43:28 +02:00
LibUnicode AK+LibUnicode: Implement String::equals_ignoring_case without allocating 2023-03-08 18:57:53 +00:00
LibUSBDB AK+Everywhere: Rename String to DeprecatedString 2022-12-06 08:54:33 +01:00
LibVideo LibVideo: Add PlaybackManager::from_mapped_file 2023-05-14 15:56:49 -06:00
LibVirtGPU LibCore: Remove Stream.h 2023-02-13 00:50:07 +00:00
LibVT LibCore: Simplify Core::Notifier by only allowing one event type 2023-04-25 14:48:40 +02:00
LibWasm AK+Everywhere: Disallow Error::from_string_view(FooString) 2023-04-28 05:55:20 +02:00
LibWeb LibWeb: Fix iframes flickering on window resize 2023-05-15 14:08:08 +02:00
LibWebSocket AK+Everywhere: Change URL::path() to serialize_path() 2023-04-15 06:37:04 +02:00
LibWebView Ladybird+LibWebView: Move backing store management code to LibWebView 2023-05-15 12:13:34 +02:00
LibX86 LibX86: Remove i686 support 2022-12-28 11:53:41 +01:00
LibXML LibXML: Notify the listener about the root node as well 2023-05-05 01:33:49 +02:00
CMakeLists.txt LibFileSystem: Create LibFileSystem 2023-03-21 19:03:21 +00:00