Closed Bug 716349 Opened 11 years ago Closed 11 years ago
ASSERTION: 'bad height: 'metrics
.height>=0' and ASSERTION: bad width: 'metrics .width>=0' with mspace
mspace allows the user to give arbitrary dimensions and thus it is easy to produce assertions with negative values. For example: <mspace width="-10px"/> <mspace height="-10px"/> We should fix nsMathMLmspaceFrame::Reflow. Note that mspace is cited among the MathML elements that permit "negative spacing" so we will have a bit more to do than just forbidding negative attribute values.
It will however maybe make sense to have the constraint "height >= 0 && width >= 0" rather than the less strict constraint "height + width >= 0". I hardly see how something like: <mspace height="20px" depth="-10px"/> may be useful for a space. In that case, the assertions for vertical metrics can be fixed by bug 411227, if we remove the nsMathMLElement::PARSE_ALLOW_NEGATIVE flag when parsing the values of the height/depth attributes.
Depends on: 411227
As said in comment 1, I suggest to forbid negative values for height and depth of mspace. For mspace with negative width, I think we should modify nsMathMLmspaceFrame::Reflow to set mBoundingMetrics.width = NS_MAX(0, mWidth); aDesiredSize.width = NS_MAX(0, mWidth); and this should fix this bug. Then, if we want to implement negative spaces, we should modify nsMathMLContainerFrame::RowChildFrameIterator to handle mX in a specific manner when mChildFrame->GetContent()->Tag() == == nsGkAtoms::mspace_ with mChildFrame->mWidth < 0. However, I'm not sure it will work when the mspace is a direct child of the <math/> element.
Attachment #587421 - Flags: review?(karlt) → review+
Comment on attachment 587736 [details] [diff] [review] Patch V1 Perhaps mention in one of the comments that nsLineLayout doesn't expect negative widths.
Attachment #587736 - Flags: review?(karlt) → review+
Target Milestone: --- → mozilla15
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.