Bug 370303: Cleanup in layout/forms. r+sr=roc.

git-svn-id: svn://10.0.0.236/trunk@220186 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
sharparrow1%yahoo.com
2007-02-15 10:58:31 +00:00
parent 94b87aa7a6
commit db1730f015
10 changed files with 23 additions and 236 deletions

View File

@@ -41,15 +41,13 @@
#include "nsIEventStateManager.h"
#include "nsIScrollableView.h"
#include "nsILookAndFeel.h"
#include "nsIViewManager.h"
//#define FCF_NOISY
const PRInt32 kSizeNotSet = -1;
nsFormControlFrame::nsFormControlFrame(nsStyleContext* aContext) :
nsLeafFrame(aContext),
mDidInit(PR_FALSE)
nsLeafFrame(aContext)
{
}
@@ -60,8 +58,7 @@ nsFormControlFrame::~nsFormControlFrame()
void
nsFormControlFrame::Destroy()
{
// XXXldb Do we really need to do this? Shouldn't only those frames
// that use it do it?
// Unregister the access key registered in reflow
nsFormControlFrame::RegUnRegAccessKey(NS_STATIC_CAST(nsIFrame*, this), PR_FALSE);
nsLeafFrame::Destroy();
}
@@ -84,55 +81,15 @@ nsFormControlFrame::QueryInterface(const nsIID& aIID, void** aInstancePtr)
nscoord
nsFormControlFrame::GetIntrinsicWidth()
{
// Intrinsic width is 144 twips. Why? I have no idea; that's what
// it was before I touched this code, and the original checkin
// comment is not so helpful.
return 144;
// Actual width is set in forms.css
return 0;
}
nscoord
nsFormControlFrame::GetIntrinsicHeight()
{
// Intrinsic height is 144 twips. Why? I have no idea; that's what
// it was before I touched this code, and the original checkin
// comment is not so helpful.
return 144;
}
NS_IMETHODIMP
nsFormControlFrame::DidReflow(nsPresContext* aPresContext,
const nsHTMLReflowState* aReflowState,
nsDidReflowStatus aStatus)
{
nsresult rv = nsLeafFrame::DidReflow(aPresContext, aReflowState, aStatus);
// The view is created hidden; once we have reflowed it and it has been
// positioned then we show it.
if (NS_FRAME_REFLOW_FINISHED == aStatus) {
nsIView* view = GetView();
if (view) {
nsViewVisibility newVis = GetStyleVisibility()->IsVisible()
? nsViewVisibility_kShow
: nsViewVisibility_kHide;
// only change if different.
if (newVis != view->GetVisibility()) {
nsIViewManager* vm = view->GetViewManager();
if (vm) {
vm->SetViewVisibility(view, newVis);
}
}
}
}
return rv;
}
NS_IMETHODIMP
nsFormControlFrame::SetInitialChildList(nsIAtom* aListName,
nsIFrame* aChildList)
{
return NS_OK;
// Actual width is set in forms.css
return 0;
}
NS_METHOD
@@ -236,69 +193,3 @@ nsFormControlFrame::GetScreenHeight(nsPresContext* aPresContext,
aHeight = aPresContext->AppUnitsToDevPixels(screen.height);
return NS_OK;
}
// Calculate a frame's position in screen coordinates
nsresult
nsFormControlFrame::GetAbsoluteFramePosition(nsPresContext* aPresContext,
nsIFrame *aFrame,
nsRect& aAbsoluteTwipsRect,
nsRect& aAbsolutePixelRect)
{
nsresult rv = NS_OK;
aAbsoluteTwipsRect = aFrame->GetRect();
// zero these out,
// because the GetOffsetFromView figures them out
// XXXbz why do we need to do this, really? Will we ever fail to
// get a containing view?
aAbsoluteTwipsRect.x = 0;
aAbsoluteTwipsRect.y = 0;
// Start with frame's offset from it it's containing view
nsIView *view = nsnull;
nsPoint frameOffset;
rv = aFrame->GetOffsetFromView(frameOffset, &view);
if (NS_SUCCEEDED(rv) && view) {
aAbsoluteTwipsRect.MoveTo(frameOffset);
nsIWidget* widget;
// Walk up the views, looking for a widget
do {
// add in the offset of the view from its parent.
aAbsoluteTwipsRect += view->GetPosition();
widget = view->GetWidget();
if (widget) {
// account for space above and to the left of the view origin.
// the widget is aligned with view's bounds, not its origin
nsRect bounds = view->GetBounds();
aAbsoluteTwipsRect.x -= bounds.x;
aAbsoluteTwipsRect.y -= bounds.y;
// Add in the absolute offset of the widget.
nsRect absBounds;
nsRect zeroRect;
// XXX a twip version of this would be really nice here!
widget->WidgetToScreen(zeroRect, absBounds);
// Convert widget coordinates to twips
aAbsoluteTwipsRect.x += aPresContext->DevPixelsToAppUnits(absBounds.x);
aAbsoluteTwipsRect.y += aPresContext->DevPixelsToAppUnits(absBounds.y);
break;
}
view = view->GetParent();
} while (view);
}
// convert to pixel coordinates
if (NS_SUCCEEDED(rv)) {
aAbsolutePixelRect.x = aPresContext->AppUnitsToDevPixels(aAbsoluteTwipsRect.x);
aAbsolutePixelRect.y = aPresContext->AppUnitsToDevPixels(aAbsoluteTwipsRect.y);
aAbsolutePixelRect.width = aPresContext->AppUnitsToDevPixels(aAbsoluteTwipsRect.width);
aAbsolutePixelRect.height = aPresContext->AppUnitsToDevPixels(aAbsoluteTwipsRect.height);
}
return rv;
}