本文整理汇总了C++中nsFrameList::FirstChild方法的典型用法代码示例。如果您正苦于以下问题:C++ nsFrameList::FirstChild方法的具体用法?C++ nsFrameList::FirstChild怎么用?C++ nsFrameList::FirstChild使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类nsFrameList
的用法示例。
在下文中一共展示了nsFrameList::FirstChild方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
NS_IMETHODIMP
nsTableOuterFrame::SetInitialChildList(nsIAtom* aListName,
nsFrameList& aChildList)
{
if (nsGkAtoms::captionList == aListName) {
// the frame constructor already checked for table-caption display type
mCaptionFrames.SetFrames(aChildList);
mCaptionFrame = mCaptionFrames.FirstChild();
}
else {
NS_ASSERTION(!aListName, "wrong childlist");
NS_ASSERTION(mFrames.IsEmpty(), "Frame leak!");
mInnerTableFrame = nsnull;
if (aChildList.NotEmpty()) {
if (nsGkAtoms::tableFrame == aChildList.FirstChild()->GetType()) {
mInnerTableFrame = (nsTableFrame*)aChildList.FirstChild();
mFrames.SetFrames(aChildList);
}
else {
NS_ERROR("expected a table frame");
return NS_ERROR_INVALID_ARG;
}
}
}
return NS_OK;
}
示例2: AppendFrames
NS_IMETHODIMP
nsTableOuterFrame::InsertFrames(ChildListID aListID,
nsIFrame* aPrevFrame,
nsFrameList& aFrameList)
{
if (kCaptionList == aListID) {
NS_ASSERTION(!aPrevFrame || aPrevFrame->GetParent() == this,
"inserting after sibling frame with different parent");
NS_ASSERTION(aFrameList.IsEmpty() ||
aFrameList.FirstChild()->GetType() == nsGkAtoms::tableCaptionFrame,
"inserting non-caption frame into captionList");
mCaptionFrames.InsertFrames(nsnull, aPrevFrame, aFrameList);
// Reflow the new caption frame. It's already marked dirty, so
// just tell the pres shell.
PresContext()->PresShell()->
FrameNeedsReflow(this, nsIPresShell::eTreeChange,
NS_FRAME_HAS_DIRTY_CHILDREN);
return NS_OK;
}
else {
NS_PRECONDITION(!aPrevFrame, "invalid previous frame");
return AppendFrames(aListID, aFrameList);
}
}
示例3: PresContext
NS_IMETHODIMP
nsTableOuterFrame::AppendFrames(ChildListID aListID,
nsFrameList& aFrameList)
{
nsresult rv;
// We only have two child frames: the inner table and a caption frame.
// The inner frame is provided when we're initialized, and it cannot change
if (kCaptionList == aListID) {
NS_ASSERTION(aFrameList.IsEmpty() ||
aFrameList.FirstChild()->GetType() == nsGkAtoms::tableCaptionFrame,
"appending non-caption frame to captionList");
mCaptionFrames.AppendFrames(this, aFrameList);
rv = NS_OK;
// Reflow the new caption frame. It's already marked dirty, so
// just tell the pres shell.
PresContext()->PresShell()->
FrameNeedsReflow(this, nsIPresShell::eTreeChange,
NS_FRAME_HAS_DIRTY_CHILDREN);
}
else {
NS_PRECONDITION(false, "unexpected child list");
rv = NS_ERROR_UNEXPECTED;
}
return rv;
}
示例4: GetChildList
NS_IMETHODIMP
nsSVGDisplayContainerFrame::InsertFrames(ChildListID aListID,
nsIFrame* aPrevFrame,
nsFrameList& aFrameList)
{
// memorize first old frame after insertion point
// XXXbz once again, this would work a lot better if the nsIFrame
// methods returned framelist iterators....
nsIFrame* firstOldFrame = aPrevFrame ?
aPrevFrame->GetNextSibling() : GetChildList(aListID).FirstChild();
nsIFrame* firstNewFrame = aFrameList.FirstChild();
// Insert the new frames
nsSVGContainerFrame::InsertFrames(aListID, aPrevFrame, aFrameList);
// Call InitialUpdate on the new frames ONLY if our nsSVGOuterSVGFrame has had
// its initial reflow (our NS_FRAME_FIRST_REFLOW bit is clear) - bug 399863.
if (!(GetStateBits() & NS_FRAME_FIRST_REFLOW)) {
for (nsIFrame* kid = firstNewFrame; kid != firstOldFrame;
kid = kid->GetNextSibling()) {
nsISVGChildFrame* SVGFrame = do_QueryFrame(kid);
if (SVGFrame) {
SVGFrame->InitialUpdate();
}
}
}
return NS_OK;
}
示例5:
void
nsTableWrapperFrame::SetInitialChildList(ChildListID aListID,
nsFrameList& aChildList)
{
if (kCaptionList == aListID) {
// the frame constructor already checked for table-caption display type
MOZ_ASSERT(mCaptionFrames.IsEmpty(),
"already have child frames in CaptionList");
mCaptionFrames.SetFrames(aChildList);
} else {
MOZ_ASSERT(kPrincipalList != aListID ||
(aChildList.FirstChild() &&
aChildList.FirstChild() == aChildList.LastChild() &&
nsGkAtoms::tableFrame == aChildList.FirstChild()->GetType()),
"expected a single table frame in principal child list");
nsContainerFrame::SetInitialChildList(aListID, aChildList);
}
}
示例6: Slice
nsFrameList::Slice
nsFrameList::InsertFrames(nsIFrame* aParent, nsIFrame* aPrevSibling,
nsFrameList& aFrameList)
{
NS_PRECONDITION(aFrameList.NotEmpty(), "Unexpected empty list");
if (aParent) {
aFrameList.ApplySetParent(aParent);
}
NS_ASSERTION(IsEmpty() ||
FirstChild()->GetParent() == aFrameList.FirstChild()->GetParent(),
"frame to add has different parent");
NS_ASSERTION(!aPrevSibling ||
aPrevSibling->GetParent() == aFrameList.FirstChild()->GetParent(),
"prev sibling has different parent");
#ifdef DEBUG_FRAME_LIST
// ContainsFrame is O(N)
NS_ASSERTION(!aPrevSibling || ContainsFrame(aPrevSibling),
"prev sibling is not on this list");
#endif
nsIFrame* firstNewFrame = aFrameList.FirstChild();
nsIFrame* nextSibling;
if (aPrevSibling) {
nextSibling = aPrevSibling->GetNextSibling();
aPrevSibling->SetNextSibling(firstNewFrame);
}
else {
nextSibling = mFirstChild;
mFirstChild = firstNewFrame;
}
nsIFrame* lastNewFrame = aFrameList.LastChild();
lastNewFrame->SetNextSibling(nextSibling);
if (!nextSibling) {
mLastChild = lastNewFrame;
}
VerifyList();
aFrameList.Clear();
return Slice(*this, firstNewFrame, nextSibling);
}
示例7:
NS_IMETHODIMP
nsTableOuterFrame::SetInitialChildList(ChildListID aListID,
nsFrameList& aChildList)
{
if (kCaptionList == aListID) {
// the frame constructor already checked for table-caption display type
mCaptionFrames.SetFrames(aChildList);
}
else {
NS_ASSERTION(aListID == kPrincipalList, "wrong childlist");
NS_ASSERTION(mFrames.IsEmpty(), "Frame leak!");
NS_ASSERTION(aChildList.FirstChild() &&
nsGkAtoms::tableFrame == aChildList.FirstChild()->GetType(),
"expected a table frame");
mFrames.SetFrames(aChildList);
}
return NS_OK;
}
示例8:
void
nsTableOuterFrame::SetInitialChildList(ChildListID aListID,
nsFrameList& aChildList)
{
MOZ_ASSERT(kCaptionList == aListID || aListID == kPrincipalList,
"unexpected child list");
MOZ_ASSERT(GetChildList(aListID).IsEmpty(),
"already have child frames in SetInitialChildList");
if (kCaptionList == aListID) {
// the frame constructor already checked for table-caption display type
mCaptionFrames.SetFrames(aChildList);
} else {
MOZ_ASSERT(aChildList.FirstChild() &&
aChildList.FirstChild() == aChildList.LastChild() &&
nsGkAtoms::tableFrame == aChildList.FirstChild()->GetType(),
"expected a single table frame");
mFrames.SetFrames(aChildList);
}
}
示例9: while
nsresult
nsPopupSetFrame::AddPopupFrameList(nsFrameList& aPopupFrameList)
{
while (!aPopupFrameList.IsEmpty()) {
nsIFrame* f = aPopupFrameList.FirstChild();
// Clears out prev/next sibling points appropriately. Every frame
// in our popup list has null next and prev pointers, they're logically
// each in their own list.
aPopupFrameList.RemoveFrame(f);
nsresult rv = AddPopupFrame(f);
NS_ENSURE_SUCCESS(rv, rv);
}
return NS_OK;
}
示例10: PresContext
void
nsTableWrapperFrame::AppendFrames(ChildListID aListID,
nsFrameList& aFrameList)
{
// We only have two child frames: the inner table and a caption frame.
// The inner frame is provided when we're initialized, and it cannot change
MOZ_ASSERT(kCaptionList == aListID, "unexpected child list");
MOZ_ASSERT(aFrameList.IsEmpty() ||
aFrameList.FirstChild()->IsTableCaption(),
"appending non-caption frame to captionList");
mCaptionFrames.AppendFrames(this, aFrameList);
// Reflow the new caption frame. It's already marked dirty, so
// just tell the pres shell.
PresContext()->PresShell()->FrameNeedsReflow(this, nsIPresShell::eTreeChange,
NS_FRAME_HAS_DIRTY_CHILDREN);
}
示例11: GetChildList
NS_IMETHODIMP
nsSVGDisplayContainerFrame::InsertFrames(ChildListID aListID,
nsIFrame* aPrevFrame,
nsFrameList& aFrameList)
{
// memorize first old frame after insertion point
// XXXbz once again, this would work a lot better if the nsIFrame
// methods returned framelist iterators....
nsIFrame* firstOldFrame = aPrevFrame ?
aPrevFrame->GetNextSibling() : GetChildList(aListID).FirstChild();
nsIFrame* firstNewFrame = aFrameList.FirstChild();
// Insert the new frames
nsSVGContainerFrame::InsertFrames(aListID, aPrevFrame, aFrameList);
// If we are not a non-display SVG frame and we do not have a bounds update
// pending, then we need to schedule one for our new children:
if (!(GetStateBits() &
(NS_FRAME_IS_DIRTY | NS_FRAME_HAS_DIRTY_CHILDREN |
NS_STATE_SVG_NONDISPLAY_CHILD))) {
for (nsIFrame* kid = firstNewFrame; kid != firstOldFrame;
kid = kid->GetNextSibling()) {
nsISVGChildFrame* SVGFrame = do_QueryFrame(kid);
if (SVGFrame) {
NS_ABORT_IF_FALSE(!(kid->GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD),
"Check for this explicitly in the |if|, then");
bool isFirstReflow = (kid->GetStateBits() & NS_FRAME_FIRST_REFLOW);
// Remove bits so that ScheduleBoundsUpdate will work:
kid->RemoveStateBits(NS_FRAME_FIRST_REFLOW | NS_FRAME_IS_DIRTY |
NS_FRAME_HAS_DIRTY_CHILDREN);
// No need to invalidate the new kid's old bounds, so we just use
// nsSVGUtils::ScheduleBoundsUpdate.
nsSVGUtils::ScheduleReflowSVG(kid);
if (isFirstReflow) {
// Add back the NS_FRAME_FIRST_REFLOW bit:
kid->AddStateBits(NS_FRAME_FIRST_REFLOW);
}
}
}
}
return NS_OK;
}
示例12:
void
DetailsFrame::SetInitialChildList(ChildListID aListID, nsFrameList& aChildList)
{
if (aListID == kPrincipalList) {
auto* details = HTMLDetailsElement::FromContent(GetContent());
bool isOpen = details->Open();
if (isOpen) {
// If details is open, the first summary needs to be rendered as if it is
// the first child.
for (nsIFrame* child : aChildList) {
auto* realFrame = nsPlaceholderFrame::GetRealFrameFor(child);
auto* cif = realFrame->GetContentInsertionFrame();
if (cif && cif->GetType() == nsGkAtoms::summaryFrame) {
// Take out the first summary frame and insert it to the beginning of
// the list.
aChildList.RemoveFrame(child);
aChildList.InsertFrame(nullptr, nullptr, child);
break;
}
}
}
#ifdef DEBUG
nsIFrame* realFrame =
nsPlaceholderFrame::GetRealFrameFor(isOpen ?
aChildList.FirstChild() :
aChildList.OnlyChild());
MOZ_ASSERT(realFrame, "Principal list of details should not be empty!");
nsIFrame* summaryFrame = realFrame->GetContentInsertionFrame();
MOZ_ASSERT(summaryFrame->GetType() == nsGkAtoms::summaryFrame,
"The frame should be summary frame!");
#endif
}
nsBlockFrame::SetInitialChildList(aListID, aChildList);
}