gecko-dev/layout/mathml
Frédéric Wang 4827451a48 Bug 1918308 - Don't always force a reflow in nsMathMLContainerFrame::AttributeChanged. r=emilio
Currently, nsMathMLContainerFrame::AttributeChanged always force a
reflow. This patch removes that behavior tweaks the following derived
classes:

- menclose: Don't mark intrinsic size of descendants dirty, since the
  notation is added around the children, only affecting the element's
  metrics.

- mfrac: Don't mark intrinsic size dirty for the linethickness
  attribute, since it only affects vertical metrics.

- mo: Rebuild 'automatic' data and relayout the entire embellished
  operator hierarchy for all operator properties. I haven't checked the
  details of the MathML 'automatic' data, so it may be a bit too
  aggressive. But at least a reflow is necessary.

- mspace/mpadded: Only mark intrinsic size dirty for the element and
  ancestors, and only for attributes affecting vertical metrics. Also
  remove `InvalidateFrame()` call since we don't have any display item.

- mtable: Don't force reflow or data rebuild when displaystyle changes.
  This was probably needed before displaystyle was re-implemented as
  an attribute mapped to the math-style CSS property.

There is at least one dynamic test for each of the MathML
attributes affecting layout and they don't regress after this patch:
https://bugzilla.mozilla.org/show_bug.cgi?id=1918308#c0

Differential Revision: https://phabricator.services.mozilla.com/D221925
2024-09-13 14:19:45 +00:00
..
tests Bug 1883603 - Add warnings for MathML regarding new tests. r=emilio,layout-reviewers 2024-03-05 19:20:18 +00:00
jar.mn
mathfont.properties
mathfontSTIXGeneral.properties
mathfontUnicode.properties
mathml.css Bug 1908069 - Add border/padding/margin support to mrow-like elements. r=emilio 2024-08-07 06:00:44 +00:00
moz.build Bug 1874823 - Make nsBlockFrame::Init set NS_BLOCK_STATIC_BFC by checking classes. r=layout-reviewers,AlaskanEmily 2024-01-24 12:13:42 +00:00
nsIMathMLFrame.h Bug 1883950 - Remove dead code for MathML invalid markup. r=layout-reviewers,emilio 2024-03-06 19:10:07 +00:00
nsMathMLAtoms.h
nsMathMLChar.cpp Bug 1519636 - Reformat recent changes to the Google coding style r=emilio,necko-reviewers,geckoview-reviewers,application-update-reviewers,media-playback-reviewers,devtools-reviewers,anti-tracking-reviewers,profiler-reviewers,win-reviewers,migration-reviewers,padenot,mconley,nchevobbe,kershaw,gstoll,mstange,bytesized,m_kato 2024-07-17 11:15:31 +00:00
nsMathMLChar.h
nsMathMLContainerFrame.cpp Bug 1918308 - Don't always force a reflow in nsMathMLContainerFrame::AttributeChanged. r=emilio 2024-09-13 14:19:45 +00:00
nsMathMLContainerFrame.h Bug 1918308 - Don't always force a reflow in nsMathMLContainerFrame::AttributeChanged. r=emilio 2024-09-13 14:19:45 +00:00
nsMathMLFrame.cpp Bug 1917763 - Remove eCSSUnit_Number handling from nsMathMLFrame::ParseNumericValue. r=emilio 2024-09-13 08:03:56 +00:00
nsMathMLFrame.h
nsMathMLmencloseFrame.cpp Bug 1918308 - Don't always force a reflow in nsMathMLContainerFrame::AttributeChanged. r=emilio 2024-09-13 14:19:45 +00:00
nsMathMLmencloseFrame.h Bug 1917763 - Remove PlaceInternal methods from MathML layout classes. r=emilio 2024-09-13 08:03:54 +00:00
nsMathMLmfracFrame.cpp Bug 1918308 - Don't always force a reflow in nsMathMLContainerFrame::AttributeChanged. r=emilio 2024-09-13 14:19:45 +00:00
nsMathMLmfracFrame.h Bug 1917763 - Remove PlaceInternal methods from MathML layout classes. r=emilio 2024-09-13 08:03:54 +00:00
nsMathMLmmultiscriptsFrame.cpp Bug 1908069 - Add border/padding/margin support to scripted elements. r=emilio 2024-08-07 06:00:45 +00:00
nsMathMLmmultiscriptsFrame.h Bug 1908069 - Introduce PlaceFlags parameter to MathML layout methods. r=emilio 2024-08-07 06:00:43 +00:00
nsMathMLmoFrame.cpp Bug 1918308 - Don't always force a reflow in nsMathMLContainerFrame::AttributeChanged. r=emilio 2024-09-13 14:19:45 +00:00
nsMathMLmoFrame.h Bug 1908069 - Introduce PlaceFlags parameter to MathML layout methods. r=emilio 2024-08-07 06:00:43 +00:00
nsMathMLmpaddedFrame.cpp Bug 1918308 - Don't always force a reflow in nsMathMLContainerFrame::AttributeChanged. r=emilio 2024-09-13 14:19:45 +00:00
nsMathMLmpaddedFrame.h Bug 1917763 - Do not override MeasureForWidth/Reflow for mpadded. r=emilio 2024-09-13 08:03:55 +00:00
nsMathMLmrootFrame.cpp Bug 1917763 - Do not override MeasureForWidth/Reflow for mroot. r=emilio 2024-09-13 08:03:56 +00:00
nsMathMLmrootFrame.h Bug 1917763 - Do not override MeasureForWidth/Reflow for mroot. r=emilio 2024-09-13 08:03:56 +00:00
nsMathMLmrowFrame.cpp
nsMathMLmrowFrame.h
nsMathMLmspaceFrame.cpp Bug 1918308 - Don't always force a reflow in nsMathMLContainerFrame::AttributeChanged. r=emilio 2024-09-13 14:19:45 +00:00
nsMathMLmspaceFrame.h Bug 1917763 - Do not override MeasureForWidth/Reflow for mspace. r=emilio 2024-09-13 08:03:56 +00:00
nsMathMLmsqrtFrame.cpp Bug 1917763 - More consistent handling of MathML's AttributeChanged(). r=emilio 2024-09-13 08:03:54 +00:00
nsMathMLmsqrtFrame.h Bug 1917763 - More consistent handling of MathML's AttributeChanged(). r=emilio 2024-09-13 08:03:54 +00:00
nsMathMLmtableFrame.cpp Bug 1918308 - Don't always force a reflow in nsMathMLContainerFrame::AttributeChanged. r=emilio 2024-09-13 14:19:45 +00:00
nsMathMLmtableFrame.h Bug 1886942 Part 1 - Remove typedefs in nsTableCellFrame. r=layout-reviewers,emilio 2024-03-23 17:06:05 +00:00
nsMathMLmunderoverFrame.cpp Bug 1917763 - More consistent handling of MathML's AttributeChanged(). r=emilio 2024-09-13 08:03:54 +00:00
nsMathMLmunderoverFrame.h Bug 1908069 - Introduce PlaceFlags parameter to MathML layout methods. r=emilio 2024-08-07 06:00:43 +00:00
nsMathMLOperators.cpp
nsMathMLOperators.h Bug 1904220 - Fix MathML regression with HYPHEN-MINUS not rendered as MINUS SIGN. r=emilio 2024-09-06 07:20:54 +00:00
nsMathMLParts.h
nsMathMLTokenFrame.cpp Bug 1908069 - Add border/padding/margin support to MathML token elements. r=emilio 2024-08-07 06:00:44 +00:00
nsMathMLTokenFrame.h Bug 1908069 - Introduce PlaceFlags parameter to MathML layout methods. r=emilio 2024-08-07 06:00:43 +00:00
operatorDictionary.xsl
updateOperatorDictionary.pl