1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 12:48:10 +00:00
serenity/Userland/Services/WebContent
Aliaksandr Kalenik ac6b3c989d LibWeb: Apply scroll boxes offsets after painting commands recording
With this change, instead of applying scroll offsets during the
recording of the painting command list, we do the following:
1. Collect all boxes with scrollable overflow into a PaintContext,
   each with an id and the total amount of scrolling offset accumulated
   from ancestor scrollable boxes.
2. During the recording phase assign a corresponding scroll_frame_id to
   each command that paints content within a scrollable box.
3. Before executing the recorded commands, translate each command that
   has a scroll_frame_id by the accumulated scroll offset.

This approach has following advantages:
- Implementing nested scrollables becomes much simpler, as the
  recording phase only requires the correct assignment of the nearest
  scrollable's scroll_frame_id, while the accumulated offset from
  ancestors is applied subsequently.
- The recording of painting commands is not tied to a specific offset
  within scrollable boxes, which means in the future, it will be
  possible to update the scrolling offset and repaint without the need
  to re-record painting commands.
2023-12-30 11:10:24 +01:00
..
CMakeLists.txt LibWeb+WebContent: Plumb ability for WebContent process to hold N pages 2023-12-01 20:47:44 +01:00
ConnectionFromClient.cpp LibWeb: Port BrowsingContext from ByteString 2023-12-24 13:26:50 +01:00
ConnectionFromClient.h LibWebView+WebContent: Drive repainting from WebContent process 2023-12-22 17:47:34 +01:00
ConsoleGlobalEnvironmentExtensions.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
ConsoleGlobalEnvironmentExtensions.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
Documentation.txt LibWeb: Remove the InProcessWebView widget 2022-04-06 19:35:07 +02:00
Forward.h LibWeb+WebContent: Plumb ability for WebContent process to hold N pages 2023-12-01 20:47:44 +01:00
ImageCodecPluginSerenity.cpp Userland: Return empty if ImageDecoder client receives an invalid frame 2023-10-03 08:33:53 +02:00
ImageCodecPluginSerenity.h LibWeb+LibWebView+WebContent: Add Web::Platform::ImageCodecPlugin 2022-09-16 15:15:50 +02:00
main.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
PageClient.cpp LibWeb: Apply scroll boxes offsets after painting commands recording 2023-12-30 11:10:24 +01:00
PageClient.h LibWebView+WebContent: Drive repainting from WebContent process 2023-12-22 17:47:34 +01:00
PageHost.cpp LibWeb: Make Web::PageClient GC-allocated 2023-12-05 09:38:32 +01:00
PageHost.h LibWeb: Make Web::PageClient GC-allocated 2023-12-05 09:38:32 +01:00
WebContentClient.ipc LibWebView+WebContent: Drive repainting from WebContent process 2023-12-22 17:47:34 +01:00
WebContentConsoleClient.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
WebContentConsoleClient.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
WebContentServer.ipc LibWebView+WebContent: Drive repainting from WebContent process 2023-12-22 17:47:34 +01:00
WebDriverClient.ipc LibWeb: Stub out Release Actions 2023-08-21 13:22:04 -06:00
WebDriverConnection.cpp Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
WebDriverConnection.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
WebDriverServer.ipc WebContent: Add a very-empty WebDriver IPC class to WebContent 2022-11-08 19:58:34 -05:00