diff -r 000000000000 -r 6474c204b198 layout/forms/nsSelectsAreaFrame.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/layout/forms/nsSelectsAreaFrame.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,46 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef nsSelectsAreaFrame_h___ +#define nsSelectsAreaFrame_h___ + +#include "mozilla/Attributes.h" +#include "nsBlockFrame.h" + +class nsSelectsAreaFrame : public nsBlockFrame +{ +public: + NS_DECL_FRAMEARENA_HELPERS + + friend nsIFrame* NS_NewSelectsAreaFrame(nsIPresShell* aShell, nsStyleContext* aContext, nsFrameState aFlags); + + virtual void BuildDisplayList(nsDisplayListBuilder* aBuilder, + const nsRect& aDirtyRect, + const nsDisplayListSet& aLists) MOZ_OVERRIDE; + + void BuildDisplayListInternal(nsDisplayListBuilder* aBuilder, + const nsRect& aDirtyRect, + const nsDisplayListSet& aLists); + + virtual nsresult Reflow(nsPresContext* aCX, + nsHTMLReflowMetrics& aDesiredSize, + const nsHTMLReflowState& aReflowState, + nsReflowStatus& aStatus) MOZ_OVERRIDE; + + nscoord HeightOfARow() const { return mHeightOfARow; } + +protected: + nsSelectsAreaFrame(nsStyleContext* aContext) : + nsBlockFrame(aContext), + mHeightOfARow(0) + {} + + // We cache the height of a single row so that changes to the "size" + // attribute, padding, etc. can all be handled with only one reflow. We'll + // have to reflow twice if someone changes our font size or something like + // that, so that the heights of our options will change. + nscoord mHeightOfARow; +}; + +#endif /* nsSelectsAreaFrame_h___ */