Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Side by Side Diff: Source/WebCore/rendering/mathml/RenderMathMLSubSup.cpp

Issue 11418230: Merge 133221 - REGRESSION (r128837): mathml/presentation/subsup.xhtml became flaky (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1312/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/WebCore/rendering/mathml/RenderMathMLSubSup.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Alex Milowski (alex@milowski.com). All rights reserved. 2 * Copyright (C) 2010 Alex Milowski (alex@milowski.com). All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 { 54 {
55 RenderObject* baseWrapper = firstChild(); 55 RenderObject* baseWrapper = firstChild();
56 if (!baseWrapper) 56 if (!baseWrapper)
57 return 0; 57 return 0;
58 RenderObject* base = baseWrapper->firstChild(); 58 RenderObject* base = baseWrapper->firstChild();
59 if (!base || !base->isBoxModelObject()) 59 if (!base || !base->isBoxModelObject())
60 return 0; 60 return 0;
61 return toRenderBoxModelObject(base); 61 return toRenderBoxModelObject(base);
62 } 62 }
63 63
64 void RenderMathMLSubSup::fixScriptsStyle() 64 void RenderMathMLSubSup::fixAnonymousStyles()
65 { 65 {
66 // Set the base wrapper's style so that baseHeight in layout() will be an un stretched height.
67 ASSERT(firstChild() && firstChild()->style()->refCount() == 1);
68 firstChild()->style()->setAlignSelf(AlignFlexStart);
69
66 ASSERT(m_scripts && m_scripts->style()->refCount() == 1); 70 ASSERT(m_scripts && m_scripts->style()->refCount() == 1);
67 RenderStyle* scriptsStyle = m_scripts->style(); 71 RenderStyle* scriptsStyle = m_scripts->style();
68 scriptsStyle->setFlexDirection(FlowColumn); 72 scriptsStyle->setFlexDirection(FlowColumn);
69 scriptsStyle->setJustifyContent(m_kind == Sub ? JustifyFlexEnd : m_kind == S uper ? JustifyFlexStart : JustifySpaceBetween); 73 scriptsStyle->setJustifyContent(m_kind == Sub ? JustifyFlexEnd : m_kind == S uper ? JustifyFlexStart : JustifySpaceBetween);
70 // Set this wrapper's font-size for its line-height & baseline position, for its children. 74 // Set this wrapper's font-size for its line-height & baseline position, for its children.
71 scriptsStyle->setFontSize(static_cast<int>(0.75 * style()->fontSize())); 75 scriptsStyle->setFontSize(static_cast<int>(0.75 * style()->fontSize()));
72 } 76 }
73 77
74 // FIXME: Handle arbitrary addChild/removeChild correctly throughout MathML. 78 // FIXME: Handle arbitrary addChild/removeChild correctly throughout MathML.
75 void RenderMathMLSubSup::addChild(RenderObject* child, RenderObject* beforeChild ) 79 void RenderMathMLSubSup::addChild(RenderObject* child, RenderObject* beforeChild )
76 { 80 {
77 if (isEmpty()) { 81 if (isEmpty()) {
78 RenderMathMLBlock* baseWrapper = createAnonymousMathMLBlock(); 82 RenderMathMLBlock* baseWrapper = createAnonymousMathMLBlock();
79 RenderMathMLBlock::addChild(baseWrapper); 83 RenderMathMLBlock::addChild(baseWrapper);
80 84
81 m_scripts = createAnonymousMathMLBlock(); 85 m_scripts = createAnonymousMathMLBlock();
82 RenderMathMLBlock::addChild(m_scripts); 86 RenderMathMLBlock::addChild(m_scripts);
83 fixScriptsStyle(); 87
88 fixAnonymousStyles();
84 } 89 }
85 90
86 if (firstChild()->isEmpty()) 91 if (firstChild()->isEmpty())
87 firstChild()->addChild(child); 92 firstChild()->addChild(child);
88 else 93 else
89 m_scripts->addChild(child, beforeChild && beforeChild->parent() == m_scr ipts ? beforeChild : 0); 94 m_scripts->addChild(child, beforeChild && beforeChild->parent() == m_scr ipts ? beforeChild : 0);
90 } 95 }
91 96
92 void RenderMathMLSubSup::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle) 97 void RenderMathMLSubSup::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
93 { 98 {
94 RenderMathMLBlock::styleDidChange(diff, oldStyle); 99 RenderMathMLBlock::styleDidChange(diff, oldStyle);
95 100
96 if (m_scripts) 101 if (!isEmpty())
97 fixScriptsStyle(); 102 fixAnonymousStyles();
98 } 103 }
99 104
100 RenderMathMLOperator* RenderMathMLSubSup::unembellishedOperator() 105 RenderMathMLOperator* RenderMathMLSubSup::unembellishedOperator()
101 { 106 {
102 RenderBoxModelObject* base = this->base(); 107 RenderBoxModelObject* base = this->base();
103 if (!base || !base->isRenderMathMLBlock()) 108 if (!base || !base->isRenderMathMLBlock())
104 return 0; 109 return 0;
105 return toRenderMathMLBlock(base)->unembellishedOperator(); 110 return toRenderMathMLBlock(base)->unembellishedOperator();
106 } 111 }
107 112
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 157
153 setChildNeedsLayout(true, MarkOnlyThis); 158 setChildNeedsLayout(true, MarkOnlyThis);
154 baseWrapper->setNeedsLayout(true, MarkOnlyThis); 159 baseWrapper->setNeedsLayout(true, MarkOnlyThis);
155 160
156 RenderMathMLBlock::layout(); 161 RenderMathMLBlock::layout();
157 } 162 }
158 163
159 } 164 }
160 165
161 #endif // ENABLE(MATHML) 166 #endif // ENABLE(MATHML)
OLDNEW
« no previous file with comments | « Source/WebCore/rendering/mathml/RenderMathMLSubSup.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698