зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1449401 - Remove moz-math-anonymous ua-only pseudo. r=heycam
We do not expose it nor ever style it. Just use the parent style all the time. This avoids problematic style resolution calls during reflow. Differential Revision: https://phabricator.services.mozilla.com/D84358
This commit is contained in:
Родитель
a33994587b
Коммит
5adefab54c
|
@ -763,9 +763,6 @@ var PageStyleActor = protocol.ActorClassWithSpec(pageStyleSpec, {
|
||||||
return this._nodeIsTextfieldLike(node);
|
return this._nodeIsTextfieldLike(node);
|
||||||
case ":-moz-focus-inner":
|
case ":-moz-focus-inner":
|
||||||
return this._nodeIsButtonLike(node);
|
return this._nodeIsButtonLike(node);
|
||||||
case ":-moz-math-anonymous":
|
|
||||||
// This one should be internal, really.
|
|
||||||
return false;
|
|
||||||
case ":-moz-meter-bar":
|
case ":-moz-meter-bar":
|
||||||
return node.nodeName == "METER";
|
return node.nodeName == "METER";
|
||||||
case ":-moz-progress-bar":
|
case ":-moz-progress-bar":
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
":-moz-color-swatch",
|
":-moz-color-swatch",
|
||||||
":-moz-focus-inner",
|
":-moz-focus-inner",
|
||||||
":-moz-focus-outer",
|
":-moz-focus-outer",
|
||||||
":-moz-math-anonymous",
|
|
||||||
":-moz-meter-bar",
|
":-moz-meter-bar",
|
||||||
":-moz-placeholder",
|
":-moz-placeholder",
|
||||||
":-moz-progress-bar",
|
":-moz-progress-bar",
|
||||||
|
|
|
@ -208,14 +208,6 @@ mtable[framespacing] > mtr > mtd {
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************/
|
|
||||||
/* This rule is used to give a ComputedStyle suitable for nsMathMLChars.
|
|
||||||
We don't actually style -moz-math-anonymous by default. */
|
|
||||||
/*
|
|
||||||
::-moz-math-anonymous {
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
/* This is used when wrapping non-MathML inline elements inside math. */
|
/* This is used when wrapping non-MathML inline elements inside math. */
|
||||||
*|*::-moz-mathml-anonymous-block {
|
*|*::-moz-mathml-anonymous-block {
|
||||||
|
|
|
@ -1806,41 +1806,17 @@ void nsDisplayMathMLCharDebug::Paint(nsDisplayListBuilder* aBuilder,
|
||||||
void nsMathMLChar::Display(nsDisplayListBuilder* aBuilder, nsIFrame* aForFrame,
|
void nsMathMLChar::Display(nsDisplayListBuilder* aBuilder, nsIFrame* aForFrame,
|
||||||
const nsDisplayListSet& aLists, uint32_t aIndex,
|
const nsDisplayListSet& aLists, uint32_t aIndex,
|
||||||
const nsRect* aSelectedRect) {
|
const nsRect* aSelectedRect) {
|
||||||
bool usingParentStyle = false;
|
|
||||||
ComputedStyle* computedStyle = mComputedStyle;
|
ComputedStyle* computedStyle = mComputedStyle;
|
||||||
|
|
||||||
if (mDraw == DRAW_NORMAL) {
|
|
||||||
// normal drawing if there is nothing special about this char
|
|
||||||
// Use our parent element's style
|
|
||||||
usingParentStyle = true;
|
|
||||||
computedStyle = aForFrame->Style();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!computedStyle->StyleVisibility()->IsVisible()) {
|
if (!computedStyle->StyleVisibility()->IsVisible()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool isSelected = aSelectedRect && !aSelectedRect->IsEmpty();
|
const bool isSelected = aSelectedRect && !aSelectedRect->IsEmpty();
|
||||||
|
|
||||||
// if the leaf computed style that we use for stretchy chars has a background
|
|
||||||
// color we use it -- this feature is mostly used for testing and debugging
|
|
||||||
// purposes. Normally, users will set the background on the container frame.
|
|
||||||
// paint the selection background -- beware MathML frames overlap a lot
|
|
||||||
if (isSelected) {
|
if (isSelected) {
|
||||||
aLists.BorderBackground()->AppendNewToTop<nsDisplayMathMLSelectionRect>(
|
aLists.BorderBackground()->AppendNewToTop<nsDisplayMathMLSelectionRect>(
|
||||||
aBuilder, aForFrame, *aSelectedRect);
|
aBuilder, aForFrame, *aSelectedRect);
|
||||||
} else if (mRect.width && mRect.height) {
|
} else if (mRect.width && mRect.height) {
|
||||||
if (!usingParentStyle &&
|
|
||||||
NS_GET_A(computedStyle->StyleBackground()->BackgroundColor(
|
|
||||||
computedStyle)) > 0) {
|
|
||||||
nsDisplayBackgroundImage::AppendBackgroundItemsToTop(
|
|
||||||
aBuilder, aForFrame, mRect + aBuilder->ToReferenceFrame(aForFrame),
|
|
||||||
aLists.BorderBackground(),
|
|
||||||
/* aAllowWillPaintBorderOptimization */ true, computedStyle);
|
|
||||||
}
|
|
||||||
// else
|
|
||||||
// our container frame will take care of painting its background
|
|
||||||
|
|
||||||
#if defined(DEBUG) && defined(SHOW_BOUNDING_BOX)
|
#if defined(DEBUG) && defined(SHOW_BOUNDING_BOX)
|
||||||
// for visual debug
|
// for visual debug
|
||||||
aLists.BorderBackground()->AppendNewToTop<nsDisplayMathMLCharDebug>(
|
aLists.BorderBackground()->AppendNewToTop<nsDisplayMathMLCharDebug>(
|
||||||
|
|
|
@ -86,23 +86,6 @@ nsMathMLFrame::UpdatePresentationData(uint32_t aFlagsValues,
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper to give a ComputedStyle suitable for doing the stretching of
|
|
||||||
// a MathMLChar. Frame classes that use this should ensure that the
|
|
||||||
// extra leaf ComputedStyle given to the MathMLChars are accessible to
|
|
||||||
// the Style System via the Get/Set AdditionalComputedStyle() APIs.
|
|
||||||
/* static */
|
|
||||||
void nsMathMLFrame::ResolveMathMLCharStyle(nsPresContext* aPresContext,
|
|
||||||
nsIContent* aContent,
|
|
||||||
ComputedStyle* aParentComputedStyle,
|
|
||||||
nsMathMLChar* aMathMLChar) {
|
|
||||||
PseudoStyleType pseudoType = PseudoStyleType::mozMathAnonymous; // savings
|
|
||||||
RefPtr<ComputedStyle> newComputedStyle;
|
|
||||||
newComputedStyle = aPresContext->StyleSet()->ResolvePseudoElementStyle(
|
|
||||||
*aContent->AsElement(), pseudoType, aParentComputedStyle);
|
|
||||||
|
|
||||||
aMathMLChar->SetComputedStyle(newComputedStyle);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* static */
|
/* static */
|
||||||
void nsMathMLFrame::GetEmbellishDataFrom(nsIFrame* aFrame,
|
void nsMathMLFrame::GetEmbellishDataFrom(nsIFrame* aFrame,
|
||||||
nsEmbellishData& aEmbellishData) {
|
nsEmbellishData& aEmbellishData) {
|
||||||
|
|
|
@ -90,13 +90,6 @@ class nsMathMLFrame : public nsIMathMLFrame {
|
||||||
|
|
||||||
bool IsMrowLike() override { return false; }
|
bool IsMrowLike() override { return false; }
|
||||||
|
|
||||||
// helper to give a ComputedStyle suitable for doing the stretching to the
|
|
||||||
// MathMLChar. Frame classes that use this should make the extra ComputedStyle
|
|
||||||
// accessible to the Style System via Get/Set AdditionalmComputedStyle.
|
|
||||||
static void ResolveMathMLCharStyle(
|
|
||||||
nsPresContext* aPresContext, nsIContent* aContent,
|
|
||||||
mozilla::ComputedStyle* aParenComputedStyle, nsMathMLChar* aMathMLChar);
|
|
||||||
|
|
||||||
// helper to get the mEmbellishData of a frame
|
// helper to get the mEmbellishData of a frame
|
||||||
// The MathML REC precisely defines an "embellished operator" as:
|
// The MathML REC precisely defines an "embellished operator" as:
|
||||||
// - an <mo> element;
|
// - an <mo> element;
|
||||||
|
|
|
@ -85,10 +85,8 @@ nsresult nsMathMLmencloseFrame::AllocateMathMLChar(nsMencloseNotation mask) {
|
||||||
mRadicalCharIndex = i;
|
mRadicalCharIndex = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsPresContext* presContext = PresContext();
|
|
||||||
mMathMLChar[i].SetData(Char);
|
mMathMLChar[i].SetData(Char);
|
||||||
ResolveMathMLCharStyle(presContext, mContent, mComputedStyle,
|
mMathMLChar[i].SetComputedStyle(Style());
|
||||||
&mMathMLChar[i]);
|
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
@ -694,24 +692,14 @@ nsresult nsMathMLmencloseFrame::AttributeChanged(int32_t aNameSpaceID,
|
||||||
aModType);
|
aModType);
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////
|
void nsMathMLmencloseFrame::DidSetComputedStyle(ComputedStyle* aOldStyle) {
|
||||||
// the Style System will use these to pass the proper ComputedStyle to our
|
nsMathMLContainerFrame::DidSetComputedStyle(aOldStyle);
|
||||||
// MathMLChar
|
for (auto& ch : mMathMLChar) {
|
||||||
ComputedStyle* nsMathMLmencloseFrame::GetAdditionalComputedStyle(
|
ch.SetComputedStyle(Style());
|
||||||
int32_t aIndex) const {
|
}
|
||||||
int32_t len = mMathMLChar.Length();
|
|
||||||
if (aIndex >= 0 && aIndex < len)
|
|
||||||
return mMathMLChar[aIndex].GetComputedStyle();
|
|
||||||
else
|
|
||||||
return nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void nsMathMLmencloseFrame::SetAdditionalComputedStyle(
|
//////////////////
|
||||||
int32_t aIndex, ComputedStyle* aComputedStyle) {
|
|
||||||
int32_t len = mMathMLChar.Length();
|
|
||||||
if (aIndex >= 0 && aIndex < len)
|
|
||||||
mMathMLChar[aIndex].SetComputedStyle(aComputedStyle);
|
|
||||||
}
|
|
||||||
|
|
||||||
class nsDisplayNotation final : public nsPaintedDisplayItem {
|
class nsDisplayNotation final : public nsPaintedDisplayItem {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -63,10 +63,7 @@ class nsMathMLmencloseFrame : public nsMathMLContainerFrame {
|
||||||
virtual nsresult AttributeChanged(int32_t aNameSpaceID, nsAtom* aAttribute,
|
virtual nsresult AttributeChanged(int32_t aNameSpaceID, nsAtom* aAttribute,
|
||||||
int32_t aModType) override;
|
int32_t aModType) override;
|
||||||
|
|
||||||
virtual void SetAdditionalComputedStyle(
|
void DidSetComputedStyle(ComputedStyle* aOldStyle) override;
|
||||||
int32_t aIndex, ComputedStyle* aComputedStyle) override;
|
|
||||||
virtual ComputedStyle* GetAdditionalComputedStyle(
|
|
||||||
int32_t aIndex) const override;
|
|
||||||
|
|
||||||
virtual void BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
virtual void BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||||
const nsDisplayListSet& aLists) override;
|
const nsDisplayListSet& aLists) override;
|
||||||
|
|
|
@ -105,7 +105,7 @@ void nsMathMLmfencedFrame::CreateFencesAndSeparators(
|
||||||
if (!value.IsEmpty()) {
|
if (!value.IsEmpty()) {
|
||||||
mOpenChar = new nsMathMLChar;
|
mOpenChar = new nsMathMLChar;
|
||||||
mOpenChar->SetData(value);
|
mOpenChar->SetData(value);
|
||||||
ResolveMathMLCharStyle(aPresContext, mContent, mComputedStyle, mOpenChar);
|
mOpenChar->SetComputedStyle(Style());
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////
|
//////////////
|
||||||
|
@ -120,7 +120,7 @@ void nsMathMLmfencedFrame::CreateFencesAndSeparators(
|
||||||
if (!value.IsEmpty()) {
|
if (!value.IsEmpty()) {
|
||||||
mCloseChar = new nsMathMLChar;
|
mCloseChar = new nsMathMLChar;
|
||||||
mCloseChar->SetData(value);
|
mCloseChar->SetData(value);
|
||||||
ResolveMathMLCharStyle(aPresContext, mContent, mComputedStyle, mCloseChar);
|
mCloseChar->SetComputedStyle(Style());
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////
|
//////////////
|
||||||
|
@ -145,8 +145,7 @@ void nsMathMLmfencedFrame::CreateFencesAndSeparators(
|
||||||
sepChar = value[mSeparatorsCount - 1];
|
sepChar = value[mSeparatorsCount - 1];
|
||||||
}
|
}
|
||||||
mSeparatorsChar[i].SetData(sepChar);
|
mSeparatorsChar[i].SetData(sepChar);
|
||||||
ResolveMathMLCharStyle(aPresContext, mContent, mComputedStyle,
|
mSeparatorsChar[i].SetComputedStyle(Style());
|
||||||
&mSeparatorsChar[i]);
|
|
||||||
}
|
}
|
||||||
mSeparatorsCount = sepCount;
|
mSeparatorsCount = sepCount;
|
||||||
} else {
|
} else {
|
||||||
|
@ -630,60 +629,16 @@ nscoord nsMathMLmfencedFrame::FixInterFrameSpacing(ReflowOutput& aDesiredSize) {
|
||||||
return gap;
|
return gap;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------
|
void nsMathMLmfencedFrame::DidSetComputedStyle(ComputedStyle* aOldStyle) {
|
||||||
// the Style System will use these to pass the proper ComputedStyle to our
|
nsMathMLContainerFrame::DidSetComputedStyle(aOldStyle);
|
||||||
// MathMLChar
|
|
||||||
ComputedStyle* nsMathMLmfencedFrame::GetAdditionalComputedStyle(
|
|
||||||
int32_t aIndex) const {
|
|
||||||
int32_t openIndex = -1;
|
|
||||||
int32_t closeIndex = -1;
|
|
||||||
int32_t lastIndex = mSeparatorsCount - 1;
|
|
||||||
|
|
||||||
if (mOpenChar) {
|
if (mOpenChar) {
|
||||||
lastIndex++;
|
mOpenChar->SetComputedStyle(Style());
|
||||||
openIndex = lastIndex;
|
|
||||||
}
|
}
|
||||||
if (mCloseChar) {
|
if (mCloseChar) {
|
||||||
lastIndex++;
|
mCloseChar->SetComputedStyle(Style());
|
||||||
closeIndex = lastIndex;
|
|
||||||
}
|
}
|
||||||
if (aIndex < 0 || aIndex > lastIndex) {
|
for (int32_t i = 0; i < mSeparatorsCount; ++i) {
|
||||||
return nullptr;
|
mSeparatorsChar[i].SetComputedStyle(Style());
|
||||||
}
|
|
||||||
|
|
||||||
if (aIndex < mSeparatorsCount) {
|
|
||||||
return mSeparatorsChar[aIndex].GetComputedStyle();
|
|
||||||
} else if (aIndex == openIndex) {
|
|
||||||
return mOpenChar->GetComputedStyle();
|
|
||||||
} else if (aIndex == closeIndex) {
|
|
||||||
return mCloseChar->GetComputedStyle();
|
|
||||||
}
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void nsMathMLmfencedFrame::SetAdditionalComputedStyle(
|
|
||||||
int32_t aIndex, ComputedStyle* aComputedStyle) {
|
|
||||||
int32_t openIndex = -1;
|
|
||||||
int32_t closeIndex = -1;
|
|
||||||
int32_t lastIndex = mSeparatorsCount - 1;
|
|
||||||
|
|
||||||
if (mOpenChar) {
|
|
||||||
lastIndex++;
|
|
||||||
openIndex = lastIndex;
|
|
||||||
}
|
|
||||||
if (mCloseChar) {
|
|
||||||
lastIndex++;
|
|
||||||
closeIndex = lastIndex;
|
|
||||||
}
|
|
||||||
if (aIndex < 0 || aIndex > lastIndex) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (aIndex < mSeparatorsCount) {
|
|
||||||
mSeparatorsChar[aIndex].SetComputedStyle(aComputedStyle);
|
|
||||||
} else if (aIndex == openIndex) {
|
|
||||||
mOpenChar->SetComputedStyle(aComputedStyle);
|
|
||||||
} else if (aIndex == closeIndex) {
|
|
||||||
mCloseChar->SetComputedStyle(aComputedStyle);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,10 +30,7 @@ class nsMathMLmfencedFrame final : public nsMathMLContainerFrame {
|
||||||
void DestroyFrom(nsIFrame* aDestructRoot,
|
void DestroyFrom(nsIFrame* aDestructRoot,
|
||||||
PostDestroyData& aPostDestroyData) override;
|
PostDestroyData& aPostDestroyData) override;
|
||||||
|
|
||||||
virtual void SetAdditionalComputedStyle(
|
void DidSetComputedStyle(ComputedStyle* aOldStyle) override;
|
||||||
int32_t aIndex, ComputedStyle* aComputedStyle) override;
|
|
||||||
virtual ComputedStyle* GetAdditionalComputedStyle(
|
|
||||||
int32_t aIndex) const override;
|
|
||||||
|
|
||||||
NS_IMETHOD
|
NS_IMETHOD
|
||||||
InheritAutomaticData(nsIFrame* aParent) override;
|
InheritAutomaticData(nsIFrame* aParent) override;
|
||||||
|
|
|
@ -19,9 +19,6 @@ using namespace mozilla;
|
||||||
// <mo> -- operator, fence, or separator - implementation
|
// <mo> -- operator, fence, or separator - implementation
|
||||||
//
|
//
|
||||||
|
|
||||||
// additional ComputedStyle to be used by our MathMLChar.
|
|
||||||
#define NS_MATHML_CHAR_STYLE_CONTEXT_INDEX 0
|
|
||||||
|
|
||||||
nsIFrame* NS_NewMathMLmoFrame(PresShell* aPresShell, ComputedStyle* aStyle) {
|
nsIFrame* NS_NewMathMLmoFrame(PresShell* aPresShell, ComputedStyle* aStyle) {
|
||||||
return new (aPresShell) nsMathMLmoFrame(aStyle, aPresShell->GetPresContext());
|
return new (aPresShell) nsMathMLmoFrame(aStyle, aPresShell->GetPresContext());
|
||||||
}
|
}
|
||||||
|
@ -109,11 +106,10 @@ void nsMathMLmoFrame::ProcessTextData() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// don't bother doing anything special if we don't have a single child
|
// don't bother doing anything special if we don't have a single child
|
||||||
nsPresContext* presContext = PresContext();
|
|
||||||
if (mFrames.GetLength() != 1) {
|
if (mFrames.GetLength() != 1) {
|
||||||
data.Truncate(); // empty data to reset the char
|
data.Truncate(); // empty data to reset the char
|
||||||
mMathMLChar.SetData(data);
|
mMathMLChar.SetData(data);
|
||||||
ResolveMathMLCharStyle(presContext, mContent, mComputedStyle, &mMathMLChar);
|
mMathMLChar.SetComputedStyle(Style());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,7 +164,7 @@ void nsMathMLmoFrame::ProcessTextData() {
|
||||||
(mEmbellishData.direction != NS_STRETCH_DIRECTION_UNSUPPORTED);
|
(mEmbellishData.direction != NS_STRETCH_DIRECTION_UNSUPPORTED);
|
||||||
if (isMutable) mFlags |= NS_MATHML_OPERATOR_MUTABLE;
|
if (isMutable) mFlags |= NS_MATHML_OPERATOR_MUTABLE;
|
||||||
|
|
||||||
ResolveMathMLCharStyle(presContext, mContent, mComputedStyle, &mMathMLChar);
|
mMathMLChar.SetComputedStyle(Style());
|
||||||
}
|
}
|
||||||
|
|
||||||
// get our 'form' and lookup in the Operator Dictionary to fetch
|
// get our 'form' and lookup in the Operator Dictionary to fetch
|
||||||
|
@ -1052,25 +1048,7 @@ nsresult nsMathMLmoFrame::AttributeChanged(int32_t aNameSpaceID,
|
||||||
aModType);
|
aModType);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------
|
void nsMathMLmoFrame::DidSetComputedStyle(ComputedStyle* aOldStyle) {
|
||||||
// No need to track the ComputedStyle given to our MathML char.
|
nsMathMLTokenFrame::DidSetComputedStyle(aOldStyle);
|
||||||
// the Style System will use these to pass the proper ComputedStyle to our
|
mMathMLChar.SetComputedStyle(Style());
|
||||||
// MathMLChar
|
|
||||||
ComputedStyle* nsMathMLmoFrame::GetAdditionalComputedStyle(
|
|
||||||
int32_t aIndex) const {
|
|
||||||
switch (aIndex) {
|
|
||||||
case NS_MATHML_CHAR_STYLE_CONTEXT_INDEX:
|
|
||||||
return mMathMLChar.GetComputedStyle();
|
|
||||||
default:
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void nsMathMLmoFrame::SetAdditionalComputedStyle(
|
|
||||||
int32_t aIndex, ComputedStyle* aComputedStyle) {
|
|
||||||
switch (aIndex) {
|
|
||||||
case NS_MATHML_CHAR_STYLE_CONTEXT_INDEX:
|
|
||||||
mMathMLChar.SetComputedStyle(aComputedStyle);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,15 +26,12 @@ class nsMathMLmoFrame final : public nsMathMLTokenFrame {
|
||||||
friend nsIFrame* NS_NewMathMLmoFrame(mozilla::PresShell* aPresShell,
|
friend nsIFrame* NS_NewMathMLmoFrame(mozilla::PresShell* aPresShell,
|
||||||
ComputedStyle* aStyle);
|
ComputedStyle* aStyle);
|
||||||
|
|
||||||
virtual eMathMLFrameType GetMathMLFrameType() override;
|
eMathMLFrameType GetMathMLFrameType() override;
|
||||||
|
|
||||||
virtual void SetAdditionalComputedStyle(
|
void DidSetComputedStyle(ComputedStyle* aOldStyle) override;
|
||||||
int32_t aIndex, ComputedStyle* aComputedStyle) override;
|
|
||||||
virtual ComputedStyle* GetAdditionalComputedStyle(
|
|
||||||
int32_t aIndex) const override;
|
|
||||||
|
|
||||||
virtual void BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
void BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||||
const nsDisplayListSet& aLists) override;
|
const nsDisplayListSet& aLists) override;
|
||||||
|
|
||||||
NS_IMETHOD
|
NS_IMETHOD
|
||||||
InheritAutomaticData(nsIFrame* aParent) override;
|
InheritAutomaticData(nsIFrame* aParent) override;
|
||||||
|
|
|
@ -18,9 +18,6 @@ using namespace mozilla;
|
||||||
// <mroot> -- form a radical - implementation
|
// <mroot> -- form a radical - implementation
|
||||||
//
|
//
|
||||||
|
|
||||||
// additional ComputedStyle to be used by our MathMLChar.
|
|
||||||
#define NS_SQR_CHAR_STYLE_CONTEXT_INDEX 0
|
|
||||||
|
|
||||||
static const char16_t kSqrChar = char16_t(0x221A);
|
static const char16_t kSqrChar = char16_t(0x221A);
|
||||||
|
|
||||||
nsIFrame* NS_NewMathMLmrootFrame(PresShell* aPresShell, ComputedStyle* aStyle) {
|
nsIFrame* NS_NewMathMLmrootFrame(PresShell* aPresShell, ComputedStyle* aStyle) {
|
||||||
|
@ -42,15 +39,10 @@ void nsMathMLmrootFrame::Init(nsIContent* aContent, nsContainerFrame* aParent,
|
||||||
nsIFrame* aPrevInFlow) {
|
nsIFrame* aPrevInFlow) {
|
||||||
nsMathMLContainerFrame::Init(aContent, aParent, aPrevInFlow);
|
nsMathMLContainerFrame::Init(aContent, aParent, aPrevInFlow);
|
||||||
|
|
||||||
nsPresContext* presContext = PresContext();
|
|
||||||
|
|
||||||
// No need to track the ComputedStyle given to our MathML char.
|
|
||||||
// The Style System will use Get/SetAdditionalComputedStyle() to keep it
|
|
||||||
// up-to-date if dynamic changes arise.
|
|
||||||
nsAutoString sqrChar;
|
nsAutoString sqrChar;
|
||||||
sqrChar.Assign(kSqrChar);
|
sqrChar.Assign(kSqrChar);
|
||||||
mSqrChar.SetData(sqrChar);
|
mSqrChar.SetData(sqrChar);
|
||||||
ResolveMathMLCharStyle(presContext, mContent, mComputedStyle, &mSqrChar);
|
mSqrChar.SetComputedStyle(Style());
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
|
@ -373,24 +365,7 @@ void nsMathMLmrootFrame::GetIntrinsicISizeMetrics(gfxContext* aRenderingContext,
|
||||||
aDesiredSize.mBoundingMetrics.rightBearing = width;
|
aDesiredSize.mBoundingMetrics.rightBearing = width;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------
|
void nsMathMLmrootFrame::DidSetComputedStyle(ComputedStyle* aOldStyle) {
|
||||||
// the Style System will use these to pass the proper ComputedStyle to our
|
nsMathMLContainerFrame::DidSetComputedStyle(aOldStyle);
|
||||||
// MathMLChar
|
mSqrChar.SetComputedStyle(Style());
|
||||||
ComputedStyle* nsMathMLmrootFrame::GetAdditionalComputedStyle(
|
|
||||||
int32_t aIndex) const {
|
|
||||||
switch (aIndex) {
|
|
||||||
case NS_SQR_CHAR_STYLE_CONTEXT_INDEX:
|
|
||||||
return mSqrChar.GetComputedStyle();
|
|
||||||
default:
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void nsMathMLmrootFrame::SetAdditionalComputedStyle(
|
|
||||||
int32_t aIndex, ComputedStyle* aComputedStyle) {
|
|
||||||
switch (aIndex) {
|
|
||||||
case NS_SQR_CHAR_STYLE_CONTEXT_INDEX:
|
|
||||||
mSqrChar.SetComputedStyle(aComputedStyle);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,10 +26,7 @@ class nsMathMLmrootFrame final : public nsMathMLContainerFrame {
|
||||||
friend nsIFrame* NS_NewMathMLmrootFrame(mozilla::PresShell* aPresShell,
|
friend nsIFrame* NS_NewMathMLmrootFrame(mozilla::PresShell* aPresShell,
|
||||||
ComputedStyle* aStyle);
|
ComputedStyle* aStyle);
|
||||||
|
|
||||||
virtual void SetAdditionalComputedStyle(
|
void DidSetComputedStyle(ComputedStyle* aOldStyle) override;
|
||||||
int32_t aIndex, ComputedStyle* aComputedStyle) override;
|
|
||||||
virtual ComputedStyle* GetAdditionalComputedStyle(
|
|
||||||
int32_t aIndex) const override;
|
|
||||||
|
|
||||||
virtual void Init(nsIContent* aContent, nsContainerFrame* aParent,
|
virtual void Init(nsIContent* aContent, nsContainerFrame* aParent,
|
||||||
nsIFrame* aPrevInFlow) override;
|
nsIFrame* aPrevInFlow) override;
|
||||||
|
|
|
@ -55,14 +55,6 @@ CSS_PSEUDO_ELEMENT(selection, ":selection",
|
||||||
CSS_PSEUDO_ELEMENT(mozFocusInner, ":-moz-focus-inner", 0)
|
CSS_PSEUDO_ELEMENT(mozFocusInner, ":-moz-focus-inner", 0)
|
||||||
CSS_PSEUDO_ELEMENT(mozFocusOuter, ":-moz-focus-outer", 0)
|
CSS_PSEUDO_ELEMENT(mozFocusOuter, ":-moz-focus-outer", 0)
|
||||||
|
|
||||||
// FIXME(emilio): It's unclear why this needs to exist at all, we don't ever
|
|
||||||
// style them.
|
|
||||||
//
|
|
||||||
// This is a pseudo instead of an anon box because of how the
|
|
||||||
// AdditionalComputedStyle APIs work.
|
|
||||||
CSS_PSEUDO_ELEMENT(mozMathAnonymous, ":-moz-math-anonymous",
|
|
||||||
CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS)
|
|
||||||
|
|
||||||
// HTML5 Forms pseudo elements
|
// HTML5 Forms pseudo elements
|
||||||
CSS_PSEUDO_ELEMENT(mozNumberWrapper, ":-moz-number-wrapper",
|
CSS_PSEUDO_ELEMENT(mozNumberWrapper, ":-moz-number-wrapper",
|
||||||
CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE |
|
CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE |
|
||||||
|
|
|
@ -9,7 +9,6 @@ const NON_CONTENT_ACCESIBLE_PSEUDOS = [
|
||||||
"::-moz-number-spin-down",
|
"::-moz-number-spin-down",
|
||||||
"::-moz-number-spin-box",
|
"::-moz-number-spin-box",
|
||||||
"::-moz-number-text",
|
"::-moz-number-text",
|
||||||
"::-moz-math-anonymous",
|
|
||||||
|
|
||||||
":-moz-native-anonymous",
|
":-moz-native-anonymous",
|
||||||
":-moz-use-shadow-tree-root",
|
":-moz-use-shadow-tree-root",
|
||||||
|
|
|
@ -2463,7 +2463,6 @@ STATIC_ATOMS = [
|
||||||
PseudoElementAtom("PseudoElement_selection", ":selection"),
|
PseudoElementAtom("PseudoElement_selection", ":selection"),
|
||||||
PseudoElementAtom("PseudoElement_mozFocusInner", ":-moz-focus-inner"),
|
PseudoElementAtom("PseudoElement_mozFocusInner", ":-moz-focus-inner"),
|
||||||
PseudoElementAtom("PseudoElement_mozFocusOuter", ":-moz-focus-outer"),
|
PseudoElementAtom("PseudoElement_mozFocusOuter", ":-moz-focus-outer"),
|
||||||
PseudoElementAtom("PseudoElement_mozMathAnonymous", ":-moz-math-anonymous"),
|
|
||||||
PseudoElementAtom("PseudoElement_mozNumberWrapper", ":-moz-number-wrapper"),
|
PseudoElementAtom("PseudoElement_mozNumberWrapper", ":-moz-number-wrapper"),
|
||||||
PseudoElementAtom("PseudoElement_mozNumberSpinBox", ":-moz-number-spin-box"),
|
PseudoElementAtom("PseudoElement_mozNumberSpinBox", ":-moz-number-spin-box"),
|
||||||
PseudoElementAtom("PseudoElement_mozNumberSpinUp", ":-moz-number-spin-up"),
|
PseudoElementAtom("PseudoElement_mozNumberSpinUp", ":-moz-number-spin-up"),
|
||||||
|
|
Загрузка…
Ссылка в новой задаче