mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-09 09:34:57 +09:00
LibWeb: Ensure scroll offset is applied to mask-images
When recording the display list for a stacking context, the following operations (relevant to this bug) happened: * push a stacking context * as part of that push a None-value to the scroll frame id stack * apply filters * apply masking * paint recursively This meant that mask-images were always recorded without scroll frame id, causing them to be painted without any scroll offset. As a result mask-images would break as soon as the website using them was scrolled. Instead, push to the scroll frame id stack later to solve the problem: * push a stacking context * apply filters * apply masking * push a None-value to the scroll frame id stack * paint recursively
This commit is contained in:
parent
ed65d5b342
commit
164afdcc59
Notes:
github-actions[bot]
2025-05-29 20:03:16 +00:00
Author: https://github.com/InvalidUsernameException
Commit: 164afdcc59
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4916
Reviewed-by: https://github.com/gmta ✅
Reviewed-by: https://github.com/kalenikaliaksandr ✅
4 changed files with 31 additions and 2 deletions
|
@ -310,12 +310,10 @@ void DisplayListRecorder::push_stacking_context(PushStackingContextParams params
|
|||
.matrix = params.transform.matrix,
|
||||
},
|
||||
.clip_path = params.clip_path });
|
||||
m_scroll_frame_id_stack.append({});
|
||||
}
|
||||
|
||||
void DisplayListRecorder::pop_stacking_context()
|
||||
{
|
||||
(void)m_scroll_frame_id_stack.take_last();
|
||||
append(PopStackingContext {});
|
||||
}
|
||||
|
||||
|
|
|
@ -371,7 +371,9 @@ void StackingContext::paint(PaintContext& context) const
|
|||
}
|
||||
}
|
||||
|
||||
context.display_list_recorder().push_scroll_frame_id({});
|
||||
paint_internal(context);
|
||||
context.display_list_recorder().pop_scroll_frame_id();
|
||||
|
||||
if (!filter.is_empty()) {
|
||||
context.display_list_recorder().restore();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue