mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 919144. Part 4: Create nsLayoutUtils::IsFixedPosFrameInDisplayPort. r=mats
--HG-- extra : rebase_source : a7b7179efd91838ec7205f7109182c78814d33c5
This commit is contained in:
parent
7676e34f90
commit
65c65dd2ce
@ -1198,6 +1198,25 @@ nsLayoutUtils::GetScrollableFrameFor(const nsIFrame *aScrolledFrame)
|
|||||||
return sf;
|
return sf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
nsLayoutUtils::IsFixedPosFrameInDisplayPort(const nsIFrame* aFrame, nsRect* aDisplayPort)
|
||||||
|
{
|
||||||
|
// Fixed-pos frames are parented by the viewport frame or the page content frame.
|
||||||
|
// We'll assume that printing/print preview don't have displayports for their
|
||||||
|
// pages!
|
||||||
|
nsIFrame* parent = aFrame->GetParent();
|
||||||
|
if (!parent || parent->GetParent() ||
|
||||||
|
aFrame->StyleDisplay()->mPosition != NS_STYLE_POSITION_FIXED) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
nsIFrame* rootScrollFrame =
|
||||||
|
aFrame->PresContext()->PresShell()->GetRootScrollFrame();
|
||||||
|
// Treat a fixed-pos frame as an animated geometry root if it belongs to
|
||||||
|
// a viewport which has a scrollframe and a displayport.
|
||||||
|
return rootScrollFrame &&
|
||||||
|
nsLayoutUtils::GetDisplayPort(rootScrollFrame->GetContent(), aDisplayPort);
|
||||||
|
}
|
||||||
|
|
||||||
nsIFrame*
|
nsIFrame*
|
||||||
nsLayoutUtils::GetAnimatedGeometryRootFor(nsIFrame* aFrame,
|
nsLayoutUtils::GetAnimatedGeometryRootFor(nsIFrame* aFrame,
|
||||||
const nsIFrame* aStopAtAncestor)
|
const nsIFrame* aStopAtAncestor)
|
||||||
|
@ -361,6 +361,15 @@ public:
|
|||||||
static bool IsAncestorFrameCrossDoc(const nsIFrame* aAncestorFrame, const nsIFrame* aFrame,
|
static bool IsAncestorFrameCrossDoc(const nsIFrame* aAncestorFrame, const nsIFrame* aFrame,
|
||||||
const nsIFrame* aCommonAncestor = nullptr);
|
const nsIFrame* aCommonAncestor = nullptr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true if aFrame is a fixed-pos frame and is a child of a viewport
|
||||||
|
* which has a displayport. These frames get special treatment from the compositor.
|
||||||
|
* aDisplayPort, if non-null, is set to the display port rectangle (relative to
|
||||||
|
* the viewport).
|
||||||
|
*/
|
||||||
|
static bool IsFixedPosFrameInDisplayPort(const nsIFrame* aFrame,
|
||||||
|
nsRect* aDisplayPort = nullptr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds the nearest ancestor frame that is considered to have (or will have)
|
* Finds the nearest ancestor frame that is considered to have (or will have)
|
||||||
* "animated geometry". For example the scrolled frames of scrollframes which
|
* "animated geometry". For example the scrolled frames of scrollframes which
|
||||||
|
Loading…
Reference in New Issue
Block a user