Commit Graph

696 Commits

Author SHA1 Message Date
Ting-Yu Lin
9ef3f5d242 Bug 1663822 Part 6 - Convert the anonymous enum controlling ReflowInput's behavior into an EnumSet. r=dholbert
This change shouldn't change behavior.

Differential Revision: https://phabricator.services.mozilla.com/D89545
2020-09-11 17:59:21 +00:00
Ting-Yu Lin
1d0686174b Bug 1663822 Part 5 - Move ReflowInputFlags from SizeComputationInput to ReflowInput. r=dholbert
In previous part, we changed SizeComputationInput::InitOffsets to take a
ComputeSizeFlags parameter instead of ReflowInputFlags. Now there's no
reason to put ReflowInputFlags under SizeComputationInput.

Also rename it to `Flags` because it now lives in `ReflowInput`.

This change shouldn't change behavior.

Differential Revision: https://phabricator.services.mozilla.com/D89544
2020-09-11 17:59:13 +00:00
Ting-Yu Lin
5e173d81a3 Bug 1412687 Part 1 - Make const-cast clearer in nsTableRowGroupFrame::Reflow(). r=dholbert
ReflowInputFlags is a struct of bitfields, so we cannot use AutoRestore to
restore its member bitfield.

Differential Revision: https://phabricator.services.mozilla.com/D87629
2020-08-20 22:24:58 +00:00
Ting-Yu Lin
ede6f9503a Bug 1637130 - Rename visual overflow to ink overflow. r=dbaron
This patch is generated by:

```
# Rename the nsOverflowType enum.
rg -l "eVisualOverflow" layout/ gfx/ | xargs sed -i "s/eVisualOverflow/eInkOverflow/g"

# Rename and drop the "Get" prefix from various functions.
rg -l "GetVisualOverflowRect" layout/ gfx/ | xargs sed -i "s/GetVisualOverflowRect/InkOverflowRect/g"
rg -l "GetPreEffectsVisualOverflowRect" layout/ gfx/ | xargs sed -i "s/GetPreEffectsVisualOverflowRect/PreEffectsInkOverflowRect/g"
rg -l "GetVisualOverflowFromDeltas" layout/ gfx/ | xargs sed -i "s/GetVisualOverflowFromDeltas/InkOverflowFromDeltas/g"
rg -l "GetScrollableOverflowRect" layout/ gfx/ | xargs sed -i "s/GetScrollableOverflowRect/ScrollableOverflowRect/g"

# Rename, drop the "Get" prefix, and change the suffix "Area" to "Rect"
# (because they return nsRect) for the two methods in nsLineBox.
rg -l "GetVisualOverflowArea" layout/ gfx/ | xargs sed -i "s/GetVisualOverflowArea/InkOverflowRect/g"
rg -l "GetScrollableOverflowArea" layout/ gfx/ | xargs sed -i "s/GetScrollableOverflowArea/ScrollableOverflowRect/g"

# Rename rest of the functions and variables.
rg -l "VisualOverflow" layout/ gfx/ | xargs sed -i "s/VisualOverflow/InkOverflow/g"
rg -l "visual overflow" layout/ gfx/ | xargs sed -i "s/visual overflow/ink overflow/g"
rg -l "visualOverflow" layout/ gfx/ | xargs sed -i "s/visualOverflow/inkOverflow/g"
rg -l "visOverflow" layout/ gfx/ | xargs sed -i "s/visOverflow/inkOverflow/g"
rg -l "vis-overflow" layout/ gfx/ python/ | xargs sed -i "s/vis-overflow/ink-overflow/g"

./mach clang-format
```

Differential Revision: https://phabricator.services.mozilla.com/D84231
2020-07-20 20:17:36 +00:00
Kagami Sascha Rosylight
b1b3a9c754 Bug 1652188 - Return struct from nsILineIterator::GetLine() r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D83215
2020-07-13 18:36:30 +00:00
Ting-Yu Lin
73114fe7f7 Bug 1651171 - Convert NS_SUBTREE_DIRTY to an inline method of nsIFrame. r=jfkthame
This is a straightforward conversion except that
`NS_SUBTREE_DIRTY(this)` can be written terser as `IsSubtreeDirty()`.

Differential Revision: https://phabricator.services.mozilla.com/D82811
2020-07-09 18:29:15 +00:00
Kagami Sascha Rosylight
93741338a8 Bug 1630704 - Part 27: Remove nsFrame from inheritance chain r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D81864
2020-07-06 22:29:42 +00:00
Simon Giesecke
a69d79b6db Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
Simon Giesecke
ea268054bd Bug 1628715 - Part 7: Add MOZ_NONNULL_RETURN to infallible nsTArray::AppendElements. r=xpcom-reviewers,necko-reviewers,nika,valentin
Differential Revision: https://phabricator.services.mozilla.com/D70831
2020-04-24 13:31:14 +00:00
L. David Baron
df7fe43daf Bug 1631941 - Add DEBUG-only mWritingMode to mozilla::LogicalSides. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D71885
2020-04-22 23:52:08 +00:00
Stefan Hindli
e00598b7d5 Backed out 3 changesets (bug 1631941) for mass build bustages CLOSED TREE
Backed out changeset 8a7e21f2b5f9 (bug 1631941)
Backed out changeset 6a53d6f1ec95 (bug 1631941)
Backed out changeset 91ac0b7e571b (bug 1631941)
2020-04-23 02:14:30 +03:00
L. David Baron
7571ae9a34 Bug 1631941 - Add DEBUG-only mWritingMode to mozilla::LogicalSides. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D71885
2020-04-22 17:54:28 +00:00
Stefan Hindli
5c01988907 Backed out 3 changesets (bug 1631941) for causing valgrind bustages in /builds/worker/workspace/obj-build/dist/include/mozilla/WritingModes CLOSED TREE
Backed out changeset 17391a8c2a05 (bug 1631941)
Backed out changeset b0b425ffb6e9 (bug 1631941)
Backed out changeset f4c1d7dcca50 (bug 1631941)
2020-04-22 20:13:06 +03:00
L. David Baron
92208d6042 Bug 1631941 - Add DEBUG-only mWritingMode to mozilla::LogicalSides. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D71885
2020-04-22 15:55:54 +00:00
Mirko Brodesser
4286ea1d12 Bug 1626665: part 11) Declare nsILineIterator::GetNumLines const. r=hsivonen
Depends on D70015

Differential Revision: https://phabricator.services.mozilla.com/D70016
2020-04-08 06:57:07 +00:00
Mirko Brodesser
933d6d24db Bug 1626665: part 10) Declare nsILineIterator::FindFrameAt const. r=hsivonen
Depends on D70014

Differential Revision: https://phabricator.services.mozilla.com/D70015
2020-04-08 06:57:00 +00:00
Mirko Brodesser
ed72bcd534 Bug 1626665: part 9) Declare more methods around nsTable* const. r=hsivonen
Depends on D70013

Differential Revision: https://phabricator.services.mozilla.com/D70014
2020-04-08 06:56:57 +00:00
Mirko Brodesser
aa420b3a7f Bug 1626665: part 8) Declare nsLineIterator::GetNextSiblingOnLine const. r=hsivonen
Depends on D70012

Differential Revision: https://phabricator.services.mozilla.com/D70013
2020-04-08 06:55:41 +00:00
Mirko Brodesser
9a2cd8ab4b Bug 1626665: part 7) Declare nsILineIterator::GetLine const. r=hsivonen
Differential Revision: https://phabricator.services.mozilla.com/D70012
2020-04-08 06:50:57 +00:00
Simon Giesecke
e613597e90 Bug 1613985 - Use default for equivalent-to-default constructors/destructors in layout. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D66016
2020-03-17 09:38:32 +00:00
Ting-Yu Lin
807ebe1c6c Bug 1622008 Part 3 - Remove nsPresContext* and PresShell* from the argument list of some continuing-frame-creation methods. r=dholbert
Both PresShell() and PresContext() are cached in nsIFrame. This
simplifies the setup for the callers to
nsCSSFrameConstructor::CreateContinuingFrame().

Differential Revision: https://phabricator.services.mozilla.com/D66600
2020-03-12 21:50:23 +00:00
Emilio Cobos Álvarez
c7c1186c47 Bug 1613349 - Rename nsIFrame::DeleteProperty to RemoveProperty. r=dholbert
As it doesn't necessarily call delete and that may be confusing.

Differential Revision: https://phabricator.services.mozilla.com/D61764
2020-02-06 16:06:49 +00:00
Daniel Holbert
86280b8f73 Bug 1613198: Move inline impls for nsIFrame::GetNormalPosition and GetLogicalNormalPosition into nsIFrameInlines.h. r=jfkthame
Also, add an nsIFrameInlines.h include to all .cpp files who call these APIs
and who don't yet have an include for this header.

Differential Revision: https://phabricator.services.mozilla.com/D61615
2020-02-05 09:52:35 +00:00
Emilio Cobos Álvarez
79768ff848 Bug 1611181 - Make direction use an enum class. r=boris
Differential Revision: https://phabricator.services.mozilla.com/D60857
2020-01-24 11:46:14 +00:00
jeffin143
daf9859748 Bug 1601856 : convert NS_STYLE_VISIBILITY_* to an enum class in nsStyleConsts.h r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D56140
2019-12-13 05:34:38 +00:00
Mats Palmgren
08399d1d09 Bug 1427141 - Request a break before the row-group if its first row doesn't fit. r=TYLin
FTR, the origin of the Reset() call in the else-branch I'm removing
is bug 397428.  I think this is before we had a break-before status,
or at least before our table code knew how to deal with it, so it
might have been correct to change an INCOMPLETE status into COMPLETE
in those days.  It seems the intent was to push the row-group:
https://bugzilla.mozilla.org/show_bug.cgi?id=397428#c14
"... and they all set aStatus to NS_FRAME_COMPLETE, which is logical
because we want to push this entire rowgroup to a new page and try
to reflow the row again..."

Nowadays though, returning a break-before status is the correct
way to do that.

Differential Revision: https://phabricator.services.mozilla.com/D56157
2019-12-09 10:21:16 +00:00
Mats Palmgren
25bd5ce3be Bug 1017137 - Don't report Complete status in table-row-group fragmentation if it still has more rows to flow after filling the availble size. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D55397
2019-12-02 16:40:47 +00:00
Mats Palmgren
457070f8a7 Bug 1580346 - Initialize table-row and table-row-group borders to zero in border-collapse:separate tables. r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D45940
2019-09-16 22:07:03 +00:00
L. David Baron
72dc1372f9 Bug 1547759 - Ensure that we call ApplyRelativePositioning after the frame's new size has been set so it works correctly for RTL. r=jfkthame,dholbert
Differential Revision: https://phabricator.services.mozilla.com/D40568
2019-08-08 20:04:40 +00:00
L. David Baron
a7409d8f08 Bug 1547759 - Pass ReflowInput to FinishReflowChild in almost all cases. r=jfkthame
At first glance, it might look like this would change behavior, since
FinishReflowChild passes aReflowInput to DidReflow, which in turn
notifies aReflowInput's mPercentBSizeObserver.  However, if you examine
how the mPercentBSizeObserver is propagated, it can only be set for the
anonymous block wrapping the children of table cells, the children of
table cells, or additionally a child of a table wrapper frame that has
it set (i.e., a table or its caption, when logically a child of a table
cell).  Since all of the frames for which this is being changed are
either internal table elements that are inside of the table, or are
things that can never be a descendant of a table at all, there should be
no change in behavior.

Differential Revision: https://phabricator.services.mozilla.com/D40565
2019-08-05 11:52:19 +00:00
L. David Baron
94e5b517b7 Bug 1571250 - Convert flags passed to ReflowChild, FinishReflowChild, SyncFrameViewAfterReflow and from GetXULLayoutFlags / GetLayoutFlags into an enum class. r=TYLin
It seems better to convert this before adding a new flag (in bug
1547759) and risking replacing the wrong 0 with a flag.

Differential Revision: https://phabricator.services.mozilla.com/D40562
2019-08-08 19:48:19 +00:00
L. David Baron
ca88671959 Bug 1566945 - Add a parameter to nsContainerFrame::InsertFrames for aPrevFrame's line box. r=dholbert
For now, always pass null, except when passing it through from one
overload to another.

Differential Revision: https://phabricator.services.mozilla.com/D38389
2019-07-17 23:34:45 +00:00
L. David Baron
b3c7ae385c Bug 1564308 - Always reflow all row groups and rows if we're doing visibility:collapse adjustments. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D37467
2019-07-10 06:49:17 +00:00
Dorel Luca
b87632149e Backed out 2 changesets (bug 1564308) for Crashtest failures in reftest/tests/layout/generic/crashtests/421671.html
Backed out changeset 514565e608cb (bug 1564308)
Backed out changeset cb68677410a5 (bug 1564308)
2019-07-10 06:55:32 +03:00
L. David Baron
3d4fc626e9 Bug 1564308 - Always reflow all row groups and rows if we're doing visibility:collapse adjustments. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D37467
2019-07-09 23:03:40 +00:00
Sylvestre Ledru
69746836db Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D30883
2019-05-25 17:46:15 +00:00
arthur.iakab
699b884244 Backed out changeset a296439a25ff (bug 1519636) for frequent Windows cppunit failures CLOSED TREE 2019-05-24 14:26:01 +03:00
Sylvestre Ledru
10a773a4ca Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D30883
2019-05-24 09:59:17 +00:00
Matt Woodrow
0b6956c881 Bug 1528957 - Use the frame's rect to advance nsTableRowGroupFrame's cursor, since that's what the max overflow values are computed relative to. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D29448
2019-05-20 23:17:12 +00:00
Matt Woodrow
62407f983a Bug 1409114 - Part 10: Make sure we build display items for table parts where only the normal position is visible, since we may need to create background items for ancestors at that position. r=dbaron
Differential Revision: https://phabricator.services.mozilla.com/D29447
2019-05-20 23:16:39 +00:00
Matt Woodrow
67167623f9 Bug 1409114 - Part 8: Create column and column group background display items as part of the cell's BuildDisplayList. r=dbaron
This is the main performance improvement, and means that we no longer have to iterate all the cells for each column.

It has a couple of behaviour changes:

The first is that we no longer apply stacking context effects (like opacity) to column and column group backgrounds.
I believe this is correct as per both CSS2.1 Appendix E, and css-tables-3 (quoted in nsTableColFrame::BuildDisplayList).
This matches the behaviour of blink and WebKit.

We also previously created items in column,row ordering, whereas now they will be in row,column. In cases where two cells
overlap (using rowspan and colspan to extend multiple neighbours in to the same place) this can render backgrounds in a
different order, but the new behaviour matches blink and WebKit.

Differential Revision: https://phabricator.services.mozilla.com/D29280
2019-05-20 23:16:09 +00:00
Matt Woodrow
59145206cd Bug 1409114 - Part 7: Pass rects in display list coordinates to AppendBackgroundItemsToTop. r=miko
This helps for the next patch, since some of the table backgrounds items want to compute this without position:relative taken into account.

Differential Revision: https://phabricator.services.mozilla.com/D29279
2019-05-20 23:15:54 +00:00
Matt Woodrow
a57ffdc299 Bug 1409114 - Part 6: Store column and column group backgrounds separately, and then append then before the rest of the table contents. r=dbaron
This also changes behaviour a bit, previously we interleaved column and column group backgrounds. where we now put all the column group backgrounds behind all columns.
I believe this is the correct ordering as per CSS2.2 Appendix E.

Column backgrounds can overlap when using 'span', and we now render this in a different order, but this matches what other browsers do.

Differential Revision: https://phabricator.services.mozilla.com/D29278
2019-05-20 23:15:39 +00:00
Matt Woodrow
1fc06a63ff Bug 1409114 - Part 3: Add helpers for box shadow creation. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D29274
2019-05-20 23:14:52 +00:00
Matt Woodrow
b0df3f1d9a Bug 1409114 - Part 2: Get rid of generic table painting code, and handle each class separately. r=dbaron
Most of the code in DisplayGenericTablePart was all within a per-class if statement, so it doesn't add much value, and makes the control flow harder to understand.

Differential Revision: https://phabricator.services.mozilla.com/D29273
2019-05-20 23:14:45 +00:00
Nas
8efcdb6040 Bug 1542904 - Remove an useless assignment in nsTableRowGroupFrame.cpp. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D29102
2019-04-30 21:54:27 +02:00
Masayuki Nakano
12b5544904 Bug 1545342 - part 2: Make some public enum of nsIPresShell move to mozilla namespace and defined as enum class in PresShellForwards.h r=smaug
This patch moves some `enum` in `nsIPresShell` which are in public scope into
`mozilla` namespace and change them as `enum class`es.

Unfortunately, only "where to scroll" enum is just defines constants of
percentages of scroll destination.  Therefore, this patch makes only them
as `static const`.

Differential Revision: https://phabricator.services.mozilla.com/D28606
2019-04-25 05:04:15 +00:00
Ting-Yu Lin
fbf66d03ae Bug 1546223 Part 4 - Mechanically replace pointer with Maybe for ReflowInput's optional containing block size. r=dholbert
There's no behavior change in this patch.

Differential Revision: https://phabricator.services.mozilla.com/D28426
2019-04-24 17:35:31 +00:00
Masayuki Nakano
ad09cbb08f Bug 1544343 - part 2: Make factory methods take mozilla::PresShell instead of nsIPresShell r=emilio
Additionally, this patch makes `nsFrame.h` stop including `nsIPresShell.h`
and makes each users include `mozilla/PresShell.h` instead.  So, this improves
rebuild performance of `nsIPresShell.h` (and `mozilla/PresShell.h` in the
future).

Note that due to `nsIFrame::PresShell()`, `mozilla::` prefix is necessary for
`PresShell` in a lot of classes which are derived from `nsIFrame` even in
`.cpp` files.

Differential Revision: https://phabricator.services.mozilla.com/D27476
2019-04-16 07:24:49 +00:00
Ting-Yu Lin
e9811a10b3 Bug 1543571 Part 1 - Replace "reflow state" with "reflow input". r=dholbert
This patch is generated by the following script on Linux:

function rename() {
    find .\
         -type f\
         ! -path "./obj*"\
         ! -path "./.git"\
         ! -path "./.hg"\
         \( -name "*.cpp" -or\
            -name "*.h" \)\
            -exec sed -i -e "s/$1/$2/g" "{}" \;
}
rename "reflow state" "reflow input"

Differential Revision: https://phabricator.services.mozilla.com/D27022
2019-04-11 20:27:37 +00:00