mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-25 16:59:01 +09:00
Map intersectionRect to the coordinate space of the target document.
Spec says: "Map intersectionRect to the coordinate space of the viewport of the Document containing the target." Tag #249
This commit is contained in:
parent
52f04699c0
commit
475d865c14
1 changed files with 8 additions and 7 deletions
|
|
@ -319,6 +319,7 @@ DOMIntersectionObserver::Update(nsIDocument* aDocument, DOMHighResTimeStamp time
|
|||
nsIFrame* targetFrame = target->GetPrimaryFrame();
|
||||
nsRect targetRect;
|
||||
Maybe<nsRect> intersectionRect;
|
||||
bool isSameDoc = root && root->GetComposedDoc() == target->GetComposedDoc();
|
||||
|
||||
if (rootFrame && targetFrame) {
|
||||
// If mRoot is set we are testing intersection with a container element
|
||||
|
|
@ -327,7 +328,7 @@ DOMIntersectionObserver::Update(nsIDocument* aDocument, DOMHighResTimeStamp time
|
|||
// Skip further processing of this target if it is not in the same
|
||||
// Document as the intersection root, e.g. if root is an element of
|
||||
// the main document and target an element from an embedded iframe.
|
||||
if (target->GetComposedDoc() != root->GetComposedDoc()) {
|
||||
if (!isSameDoc) {
|
||||
continue;
|
||||
}
|
||||
// Skip further processing of this target if is not a descendant of the
|
||||
|
|
@ -399,12 +400,12 @@ DOMIntersectionObserver::Update(nsIDocument* aDocument, DOMHighResTimeStamp time
|
|||
intersectionRectRelativeToRoot,
|
||||
rootIntersectionRect
|
||||
);
|
||||
if (intersectionRect.isSome()) {
|
||||
intersectionRect = Some(nsLayoutUtils::TransformFrameRectToAncestor(
|
||||
nsLayoutUtils::GetContainingBlockForClientRect(rootFrame),
|
||||
intersectionRect.value(),
|
||||
targetFrame->PresContext()->PresShell()->GetRootScrollFrame()
|
||||
));
|
||||
if (intersectionRect.isSome() && !isSameDoc) {
|
||||
nsRect rect = intersectionRect.value();
|
||||
nsPresContext* presContext = targetFrame->PresContext();
|
||||
nsLayoutUtils::TransformRect(rootFrame,
|
||||
presContext->PresShell()->GetRootScrollFrame(), rect);
|
||||
intersectionRect = Some(rect);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue