/* This Source Code Form is subject to the terms of the Mozilla Public *License,v.2.0.IfacopyoftheMPLwasnotdistributedwiththis
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
class DepthOrderedFrameList { public: // Add a frame to the set being tracked. void Add(nsIFrame* aFrame);
// Remove this frame if present. void Remove(nsIFrame* aFrame) {
mFrames.remove(aFrame);
mSortedFrames.ClearAndRetainStorage();
}
// Remove and return one of the shallowest frames from the list. // (If two frames are at the same depth, order is indeterminate.)
nsIFrame* PopShallowestRoot();
// Remove all frames. void Clear() {
mFrames.clear();
mSortedFrames.Clear();
}
// Is this frame one of the elements in the list? bool Contains(nsIFrame* aFrame) const { return mFrames.has(aFrame); }
// Are there no elements? bool IsEmpty() const { return mFrames.empty(); }
// Is the given frame an ancestor of any dirty root? bool FrameIsAncestorOfAnyElement(nsIFrame* aFrame) const;
auto IterFromShallowest() const {
EnsureSortedList(); return Reversed(mSortedFrames);
}
private: // Set of the frames we're tracking and their depth in the frame tree. This // is the primary record maintained by the Add and Remove methods. The sorted // list in mSortedFrames is created on demand when we need to iterate in depth // order.
HashMap<nsIFrame*, uint32_t> mFrames;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.