Line data Source code
1 : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 : *
3 : * This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this
5 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef nsPopupSetFrame_h__
8 : #define nsPopupSetFrame_h__
9 :
10 : #include "mozilla/Attributes.h"
11 : #include "nsIAtom.h"
12 : #include "nsBoxFrame.h"
13 :
14 : nsIFrame* NS_NewPopupSetFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
15 :
16 : class nsPopupSetFrame final : public nsBoxFrame
17 : {
18 : public:
19 10 : NS_DECL_FRAMEARENA_HELPERS(nsPopupSetFrame)
20 :
21 1 : explicit nsPopupSetFrame(nsStyleContext* aContext)
22 1 : : nsBoxFrame(aContext, kClassID)
23 1 : {}
24 :
25 0 : ~nsPopupSetFrame() {}
26 :
27 : virtual void Init(nsIContent* aContent,
28 : nsContainerFrame* aParent,
29 : nsIFrame* aPrevInFlow) override;
30 :
31 : virtual void SetInitialChildList(ChildListID aListID,
32 : nsFrameList& aChildList) override;
33 : virtual void AppendFrames(ChildListID aListID,
34 : nsFrameList& aFrameList) override;
35 : virtual void RemoveFrame(ChildListID aListID,
36 : nsIFrame* aOldFrame) override;
37 : virtual void InsertFrames(ChildListID aListID,
38 : nsIFrame* aPrevFrame,
39 : nsFrameList& aFrameList) override;
40 :
41 : virtual const nsFrameList& GetChildList(ChildListID aList) const override;
42 : virtual void GetChildLists(nsTArray<ChildList>* aLists) const override;
43 :
44 : NS_IMETHOD DoXULLayout(nsBoxLayoutState& aBoxLayoutState) override;
45 :
46 : // Used to destroy our popup frames.
47 : virtual void DestroyFrom(nsIFrame* aDestructRoot) override;
48 :
49 : #ifdef DEBUG_FRAME_DUMP
50 0 : virtual nsresult GetFrameName(nsAString& aResult) const override
51 : {
52 0 : return MakeFrameName(NS_LITERAL_STRING("PopupSet"), aResult);
53 : }
54 : #endif
55 :
56 : protected:
57 : void AddPopupFrameList(nsFrameList& aPopupFrameList);
58 : void RemovePopupFrame(nsIFrame* aPopup);
59 :
60 : nsFrameList mPopupList;
61 : };
62 :
63 : #endif
|