gecko-dev/layout/mathml/nsMathMLmsqrtFrame.cpp
Matt Woodrow 46694e7e28 Bug 1388614 - Make sure MathML display items are unique. r=karlt
FrameLayerBuilder requires the the (frame,per-frame-key) for each display item is unique. It only enforces this in certain situations though, so there's cases where we've gotten away without this.

Retained display lists introduces more situations where we rely on this, so I've found a few.

MathML nsDisplayNotation and nsDisplayMathMLBar are the two fixed by this patch.
2017-08-10 23:26:42 +12:00

58 lines
1.6 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsMathMLmsqrtFrame.h"
#include "mozilla/gfx/2D.h"
//
// <msqrt> -- form a radical - implementation
//
nsIFrame*
NS_NewMathMLmsqrtFrame(nsIPresShell* aPresShell, nsStyleContext* aContext)
{
return new (aPresShell) nsMathMLmsqrtFrame(aContext);
}
NS_IMPL_FRAMEARENA_HELPERS(nsMathMLmsqrtFrame)
nsMathMLmsqrtFrame::nsMathMLmsqrtFrame(nsStyleContext* aContext) :
nsMathMLmencloseFrame(aContext, kClassID)
{
}
nsMathMLmsqrtFrame::~nsMathMLmsqrtFrame()
{
}
void
nsMathMLmsqrtFrame::Init(nsIContent* aContent,
nsContainerFrame* aParent,
nsIFrame* aPrevInFlow)
{
nsMathMLContainerFrame::Init(aContent, aParent, aPrevInFlow);
AllocateMathMLChar(NOTATION_RADICAL);
mNotationsToDraw += NOTATION_RADICAL;
}
NS_IMETHODIMP
nsMathMLmsqrtFrame::InheritAutomaticData(nsIFrame* aParent)
{
nsMathMLContainerFrame::InheritAutomaticData(aParent);
mPresentationData.flags |= NS_MATHML_STRETCH_ALL_CHILDREN_VERTICALLY;
return NS_OK;
}
nsresult
nsMathMLmsqrtFrame::AttributeChanged(int32_t aNameSpaceID,
nsIAtom* aAttribute,
int32_t aModType)
{
return nsMathMLContainerFrame::
AttributeChanged(aNameSpaceID, aAttribute, aModType);
}