style now gets propogated from text control frame to embedded webshell more correctly

git-svn-id: svn://10.0.0.236/trunk@42645 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
buster%netscape.com
1999-08-07 05:42:13 +00:00
parent 9cb3786eb7
commit 76b2185c50

View File

@@ -1097,10 +1097,12 @@ nsGfxTextControlFrame::InitializeTextControl(nsIPresShell *aPresShell, nsIDOMDoc
nsresult result;
if (!aPresShell || !aDoc) { return NS_ERROR_NULL_POINTER; }
nsIFrame *htmlFrame;
nsAutoString htmlTag("body");
result = GetFirstFrameForType(htmlTag, aPresShell, aDoc, &htmlFrame);
if (NS_SUCCEEDED(result) && htmlFrame)
/* needing a frame here is a hack. We can't remove this hack until we can
* set presContext info before style resolution on the webshell
*/
nsIFrame *frame;
result = aPresShell->GetRootFrame(&frame);
if (NS_SUCCEEDED(result) && frame)
{
PRInt32 type;
GetType(&type);
@@ -1110,12 +1112,12 @@ nsGfxTextControlFrame::InitializeTextControl(nsIPresShell *aPresShell, nsIDOMDoc
NS_ASSERTION(presContext, "null presentation context");
if (!presContext) { return NS_ERROR_NULL_POINTER; }
/* this is the code for setting the pres context, which is MUCH better
* than grabbing the imbedded HTML frame and setting it.
* alas, the mechanisms for doing this are not yet in place.
* what I want to do is hand the webshell my pres context at creation
/* set all style that propogates from the text control to its content
* into the presContext for the webshell.
* what I would prefer to do is hand the webshell my own
* pres context at creation, rather than having it create its own.
*/
/*
nsFont font(presContext->GetDefaultFixedFontDeprecated());
GetFont(presContext, font);
const nsStyleFont* controlFont;
@@ -1131,66 +1133,19 @@ nsGfxTextControlFrame::InitializeTextControl(nsIPresShell *aPresShell, nsIDOMDoc
presContext->SetDefaultBackgroundImageAttachment(controlColor->mBackgroundAttachment);
presContext->SetDefaultBackgroundImageOffset(controlColor->mBackgroundXPosition, controlColor->mBackgroundYPosition);
presContext->SetDefaultBackgroundImage(controlColor->mBackgroundImage);
*/
nsIStyleContext* bodySC = nsnull;
htmlFrame->GetStyleContext(&bodySC);
nsStyleSpacing* bodySpacing = nsnull;
bodySpacing = (nsStyleSpacing*)bodySC->GetMutableStyleData(eStyleStruct_Spacing);
nsStyleCoord zero(0);
bodySpacing->mMargin.SetLeft(zero);
bodySpacing->mMargin.SetRight(zero);
bodySpacing->mMargin.SetTop(zero);
bodySpacing->mMargin.SetBottom(zero);
bodySpacing->mPadding.SetLeft(zero);
bodySpacing->mPadding.SetRight(zero);
bodySpacing->mPadding.SetTop(zero);
bodySpacing->mPadding.SetBottom(zero);
bodySpacing->mBorder.SetLeft(zero);
bodySpacing->mBorder.SetRight(zero);
bodySpacing->mBorder.SetTop(zero);
bodySpacing->mBorder.SetBottom(zero);
nsStylePosition* bodyPosition = nsnull;
bodyPosition = (nsStylePosition*)bodySC->GetMutableStyleData(eStyleStruct_Position);
const nsStylePosition* controlPosition;
GetStyleData(eStyleStruct_Position, (const nsStyleStruct *&)controlPosition);
*bodyPosition = *controlPosition;
/* qqq
if (NS_FORM_INPUT_TEXT == type || NS_FORM_INPUT_PASSWORD == type) {
bodyPosition->mWidth.SetIntValue(10000, eStyleUnit_Chars);
}
*/
nsStyleFont* bodyFont = nsnull;
bodyFont = (nsStyleFont*)bodySC->GetMutableStyleData(eStyleStruct_Font);
//const nsStyleFont* controlFont;
//GetStyleData(eStyleStruct_Font, (const nsStyleStruct *&)controlFont);
//*bodyFont = *controlFont;
nsFont font(presContext->GetDefaultFixedFontDeprecated());
GetFont(presContext, font);
bodyFont->mFont = font;
bodyFont->mFixedFont = font;
nsStyleColor* bodyColor = nsnull;
bodyColor = (nsStyleColor*)bodySC->GetMutableStyleData(eStyleStruct_Color);
const nsStyleColor* controlColor;
GetStyleData(eStyleStruct_Color, (const nsStyleStruct *&)controlColor);
*bodyColor = *controlColor;
nsStyleText* bodyText = nsnull;
bodyText = (nsStyleText*)bodySC->GetMutableStyleData(eStyleStruct_Text);
const nsStyleText* controlText;
GetStyleData(eStyleStruct_Text, (const nsStyleStruct *&)controlText);
*bodyText = *controlText;
if (NS_FORM_INPUT_TEXT == type || NS_FORM_INPUT_PASSWORD == type) {
// qqq bodyText->mWhiteSpace = NS_STYLE_WHITESPACE_MOZ_PRE_WRAP;
bodyText->mWhiteSpace = NS_STYLE_WHITESPACE_PRE;
}
bodyText->mTextAlign = NS_STYLE_TEXT_ALIGN_LEFT;
bodySC->RecalcAutomaticData(presContext);
NS_RELEASE(bodySC);
/* HACK:
* since I don't yet have a hook for setting info on the pres context before style is
* resolved, I need to call remap style on the root frame's style context.
* The above code for setting presContext data should happen on a presContext that
* I create and pass into the webshell, rather than having the webshell create its own
*/
nsIStyleContext* sc = nsnull;
result = frame->GetStyleContext(&sc);
if (NS_FAILED(result)) { return result; }
if (nsnull==sc) { return NS_ERROR_NULL_POINTER; }
sc->RemapStyle(presContext);
// end HACK
// now that the style context is initialized, initialize the content
nsAutoString value;
@@ -1379,7 +1334,6 @@ nsEnderDocumentObserver::nsEnderDocumentObserver()
nsEnderDocumentObserver::~nsEnderDocumentObserver()
{
printf("destroying nsEnderDocumentObserver\n");
}
nsresult
@@ -2131,7 +2085,6 @@ NS_IMPL_RELEASE(EnderTempObserver);
EnderTempObserver::~EnderTempObserver()
{
printf("destroyed EnderTempObserver\n");
}
nsresult