Bug 469861. Create a block for any block-level <math>. r=dbaron

This commit is contained in:
Boris Zbarsky 2010-02-26 21:32:31 -05:00
Родитель 81c895a376
Коммит 246f1863c7
5 изменённых файлов: 38 добавлений и 1 удалений

Просмотреть файл

@ -0,0 +1,15 @@
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:m="http://www.w3.org/1998/Math/MathML" >
<head>
<style type="text/css">
math, mtable { position: fixed; }
math { display: inline-table; }
</style>
</head>
<body>
<m:math><m:mtable></m:mtable></m:math>
</body>
</html>

Просмотреть файл

@ -0,0 +1,15 @@
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:m="http://www.w3.org/1998/Math/MathML" >
<head>
<style type="text/css">
math, mtable { position: fixed; }
math { display: table; }
</style>
</head>
<body>
<m:math><m:mtable></m:mtable></m:math>
</body>
</html>

Просмотреть файл

@ -245,6 +245,8 @@ load 468578-1.xhtml
load 468645-1.xhtml
load 468645-2.xhtml
load 468645-3.xhtml
load 469861-1.xhtml
load 469861-2.xhtml
load 471594-1.xhtml
load 479114-1.html
load 477333-1.xhtml

Просмотреть файл

@ -4629,7 +4629,10 @@ nsCSSFrameConstructor::FindMathMLData(nsIContent* aContent,
// Handle <math> specially, because it sometimes produces inlines
if (aTag == nsGkAtoms::math) {
if (aStyleContext->GetStyleDisplay()->mDisplay == NS_STYLE_DISPLAY_BLOCK) {
// This needs to match the test in EnsureBlockDisplay in
// nsRuleNode.cpp. Though the behavior here for the display:table
// case is pretty weird...
if (aStyleContext->GetStyleDisplay()->IsBlockOutside()) {
static const FrameConstructionData sBlockMathData =
FCDATA_DECL(FCDATA_FORCE_NULL_ABSPOS_CONTAINER |
FCDATA_WRAP_KIDS_IN_BLOCKS,

Просмотреть файл

@ -151,6 +151,8 @@ static void EnsureBlockDisplay(PRUint8& display)
// do not muck with these at all - already blocks
// This is equivalent to nsStyleDisplay::IsBlockOutside. (XXX Maybe we
// should just call that?)
// This needs to match the check done in
// nsCSSFrameConstructor::FindMathMLData for <math>.
break;
case NS_STYLE_DISPLAY_INLINE_TABLE :