'Pseudo' frames from <mtd> and <mtr>outside <mtable> were not added to the flow, and thus were not destroyed at tear down, b=347355, r+sr=bzbarsky

git-svn-id: svn://10.0.0.236/trunk@207212 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
rbs%maths.uq.edu.au
2006-08-12 07:46:29 +00:00
parent 48f4b86760
commit 2578c6ff13
2 changed files with 16 additions and 2 deletions

View File

@@ -7131,8 +7131,6 @@ nsCSSFrameConstructor::ConstructMathMLFrame(nsFrameConstructorState& aState,
PRBool isReplaced = PR_FALSE;
PRBool ignoreInterTagWhitespace = PR_TRUE;
// XXXbz somewhere here we should process pseudo frames if !aHasPseudoParent
NS_ASSERTION(aTag != nsnull, "null MathML tag");
if (aTag == nsnull)
return NS_OK;
@@ -7143,6 +7141,17 @@ nsCSSFrameConstructor::ConstructMathMLFrame(nsFrameConstructorState& aState,
// Make sure to keep IsSpecialContent in synch with this code
const nsStyleDisplay* disp = aStyleContext->GetStyleDisplay();
// Leverage IsSpecialContent to check if one of the |if aTag| below will
// surely match (knowing that aNameSpaceID == kNameSpaceID_MathML here)
if (IsSpecialContent(aContent, aTag, aNameSpaceID, aStyleContext) ||
(aTag == nsMathMLAtoms::mtable_ &&
disp->mDisplay == NS_STYLE_DISPLAY_TABLE)) {
// process pending pseudo frames
if (!aHasPseudoParent && !aState.mPseudoFrames.IsEmpty()) {
ProcessPseudoFrames(aState, aFrameItems);
}
}
if (aTag == nsMathMLAtoms::mi_ ||
aTag == nsMathMLAtoms::mn_ ||
aTag == nsMathMLAtoms::ms_ ||

View File

@@ -298,6 +298,11 @@ mtd {
white-space: nowrap;
}
// Don't support mtr without mtable, nor mtd without mtr
:not(mtable) > mtr,
:not(mtr) > mtd {
display: none !important;
}
/***********************/
/* -- mtd: columnalign */