mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 23:47:45 +00:00
LibWeb: Attach BackgroundAttachment::Fixed to the window view port
This fixes the placement of several background images on Acid2, most notably the background of the eyes and the red rectangle near the bottom of the head.
This commit is contained in:
parent
a5ea066693
commit
e5db67d6dd
1 changed files with 13 additions and 3 deletions
|
@ -6,12 +6,14 @@
|
|||
*/
|
||||
|
||||
#include <LibGfx/Painter.h>
|
||||
#include <LibWeb/Layout/InitialContainingBlock.h>
|
||||
#include <LibWeb/Layout/Node.h>
|
||||
#include <LibWeb/Painting/BackgroundPainting.h>
|
||||
#include <LibWeb/Painting/PaintContext.h>
|
||||
|
||||
namespace Web::Painting {
|
||||
|
||||
// https://www.w3.org/TR/css-backgrounds-3/#backgrounds
|
||||
void paint_background(PaintContext& context, Layout::NodeWithStyleAndBoxModelMetrics const& layout_node, Gfx::IntRect const& border_rect, Color background_color, Vector<CSS::BackgroundLayerData> const* background_layers, BorderRadiusData const& border_radius)
|
||||
{
|
||||
auto& painter = context.painter();
|
||||
|
@ -57,10 +59,18 @@ void paint_background(PaintContext& context, Layout::NodeWithStyleAndBoxModelMet
|
|||
painter.save();
|
||||
painter.add_clip_rect(clip_rect);
|
||||
|
||||
// FIXME: Attachment
|
||||
Gfx::IntRect background_positioning_area;
|
||||
|
||||
// Origin
|
||||
auto background_positioning_area = get_box(layer.origin);
|
||||
// Attachment and Origin
|
||||
switch (layer.attachment) {
|
||||
case CSS::BackgroundAttachment::Fixed:
|
||||
background_positioning_area = layout_node.root().browsing_context().viewport_rect();
|
||||
break;
|
||||
case CSS::BackgroundAttachment::Local:
|
||||
case CSS::BackgroundAttachment::Scroll:
|
||||
background_positioning_area = get_box(layer.origin);
|
||||
break;
|
||||
}
|
||||
|
||||
// Size
|
||||
Gfx::IntRect image_rect;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue