Commit Graph

287 Commits

Author SHA1 Message Date
Mats Palmgren
2185d8debe Bug 1378481 - Assign 'roundingError' in the default branch too, to avoid a maybe-uninitialized compiler warning. r=dholbert
MozReview-Commit-ID: CQk1PBaflct
2017-07-05 23:07:11 +02:00
Nicholas Nethercote
4ce1e9c11f Bug 1374580 (part 3) - Remove ns{,C}Substring typedefs. r=froydnj.
All the instances are converted as follows.

- nsSubstring  --> nsAString
- nsCSubstring --> nsACString
2017-06-20 19:19:52 +10:00
Alexis Beingessner
3117218f13 Bug 1088760 - Remove nsRenderingContext, replacing all of its uses with gfxContext. r=jwatt,jrmuizel
MozReview-Commit-ID: K1WUIOnvazF
2017-06-13 11:00:10 -04:00
Sebastian Hengst
1b1d14e565 Backed out changeset 3d1ce85e6348 (bug 1088760) for bustage, at least on Android at layout/generic/nsPluginFrame.cpp:1612. r=backout 2017-06-13 00:30:03 +02:00
Alexis Beingessner
c6fbc5e17e Bug 1088760 - Remove nsRenderingContext, replacing all of its uses with gfxContext. r=jwatt,jrmuizel
MozReview-Commit-ID: K1WUIOnvazF
2017-06-12 17:32:48 -04:00
Jonathan Kew
4dcf0fe444 Bug 1365982 - Attach frame properties to each frame instead of looking them up in a hashtable on the prescontext. r=mats 2017-05-27 12:36:00 +01:00
Mats Palmgren
78fce530a6 Bug 1349320 part 2 - [css-grid] Make nsLayoutUtils::IntrinsicForAxis take an optional percentage basis to use for resolving transferred percentages. r=dholbert
If the percentage basis isn't provided it will be calculated from the ancestors
as before.  Note that that algorithm is only valid if the frame's containing
block is the ancestor's content box, which isn't the case for grid items.
So grid layout MUST provide a percentage basis, although the given value may
be NS_UNCONSTRAINEDSIZE for either axis if the value is indefinite.

MozReview-Commit-ID: 7nvAuR43xfM
2017-05-11 02:33:14 +02:00
Mats Palmgren
2756f745c3 Bug 1349320 part 1 - [css-grid] Calculate (and cache) an item's percentage basis to use for resolving transferred percentages in intrinsic sizing. r=dholbert
MozReview-Commit-ID: 7SsRRqM7Vbk
2017-05-11 02:33:14 +02:00
Emilio Cobos Álvarez
643f3f8618 Bug 1361051: rename mozilla::FrameType to mozilla::LayoutFrameType. r=xidorn
This avoids conflicts with mozilla::dom::FrameType.

MozReview-Commit-ID: 7aEMbHRaTFk
2017-05-01 19:32:52 +02:00
Emilio Cobos Álvarez
3731858edf Bug 1360241: Devirtualize nsIFrame::GetType. r=heycam
MozReview-Commit-ID: 5Nzhyta5Hle
2017-04-30 17:30:08 +02:00
Michael Layzell
9e9bb6861f Bug 1339537 - Part 6: Pass std::function values tree by const reference instead of by value, r=ehsan
MozReview-Commit-ID: PVAqU2DPs2
2017-04-27 12:44:57 -04:00
Mats Palmgren
9711bb061a Bug 1348857 part 2 - [css-grid] Propagate the ApplyAutoMinSize bit to nsFrame::ComputeSize (idempotent patch). r=dholbert
MozReview-Commit-ID: DBU4hDfCAdE
2017-04-18 22:35:04 +02:00
Mats Palmgren
6b2b275001 Bug 1348857 part 1 - [css-grid] Add a bit on GridItemInfo that says if we should apply Automatic Minimum Size or not (idempotent patch). r=dholbert
This renames ShouldClampMinSize to ShouldApplyAutoMinSize, which is more
accurate, and caches the value on the grid item for later use.
No functional changes other than that.

MozReview-Commit-ID: E1mvBZsMIxh
2017-04-18 22:35:04 +02:00
Mats Palmgren
c01662df62 Bug 1356820 part 1 - [css-grid] Don't shrink-wrap the inline size when we have an available size when measuring block size. r=dholbert
The COMPUTE_SIZE_SHRINK_WRAP flag inhibits stretching in the inline axis
which means the item won't shrink below its min-content size.  In this
case min-width:0 should allow it to do that and since the column size is
smaller it should shrink, which in turn affects the measured block size.

MozReview-Commit-ID: AxQcMkYrxS5
2017-04-18 22:35:04 +02:00
Daniel Holbert
45a55cfce2 Bug 812687 part 3: Move CSSOrderAwareFrameIterator code to its own .h/.cpp file. r=mats
This patch just moves code, so it should not affect our behavior at all.

MozReview-Commit-ID: 4yxSR5rWUV1
2017-04-05 19:31:47 -07:00
Daniel Holbert
169d601c65 Bug 812687 part 2: Rename GridItemCSSOrderIterator to CSSOrderAwareFrameIterator (& similar for its Reverse form). r=mats
This patch is purely type-renames, so it should not affect our behavior at all.

MozReview-Commit-ID: 51zRGFyVDtT
2017-04-05 19:31:47 -07:00
Daniel Holbert
84e561881b Bug 812687 part 1: Rename GridItemCSSOrderIteratorT to CSSOrderAwareFrameIteratorT, and drop "Grid" from its method names. r=mats
This patch is purely type-renames & method-renames, so it should not affect our
behavior at all.

MozReview-Commit-ID: 5N7zru0uPfD
2017-04-05 19:31:47 -07:00
L. David Baron
651fa9086d Bug 1351359 - Make nsGridContainerFrame call ReflowInput::SetBResize(true) because of auto-block-size swapping between measuring reflows and regular reflows. r=mats
This fixes the failure of
layout/reftests/css-grid/grid-min-max-content-sizing-002.html with the
primary patch in bug 1308876 (which causes a child whose parent is dirty
to pick up the dirty bit from the parent only the first reflow of the
child if the parent reflows the child multiple times).  A simplified
testcase for that failure is
https://bugzilla.mozilla.org/attachment.cgi?id=8849771 .

The failure was caused by an error in height calculation of the first
<x> in the test.  The div that is the parent of that x has a definite
height (presumably due to rules in grid), and the x has a specified
height.  The div gets three reflows:  two measuring reflows (from
MinContentContribution and then from MaxContentContribution) and then a
final reflow from nsGridContainerFrame::ReflowInFlowChild.  Prior to the
primary patch in this bug, the div was marked dirty on all three
reflows, but with it it is marked dirty only on the first.  This means
that, without the block-resize flag, the div optimizes away the reflow
of its children, since ShouldReflowAllKids returns false because
IsBResize() is false, even though NS_FRAME_CONTAINS_RELATIVE_BSIZE is
correctly set.

In order to fix this, we need to make sure the BResize flag on the
reflow state in at least some cases (see the comments in the patch for
when, and for how the cases could be optimized in the future).

Note that:

 * when the dirty bit is set on the grid container, the new behavior
   (with the combination of the patches) is strictly more efficient than
   the old, since we will sometimes do non-dirty reflows on the grid
   items (with the b-resize flag)

 * when the dirty bit is *not* set on the grid container, the new
   behavior is less efficient than the old, since we will set the
   b-resize flag when we did not do so before.  However, this slowdown
   fixes existing bugs such as the one in the reftest.

Given that I was able to construct a reftest that triggers the failure
without the changes from bug 1308876, I've moved this to a separate bug.
Without the patch, grid-measuring-reflow-resize-dynamic-001.html fails,
but grid-measuring-reflow-resize-static-001.html passes.  With the patch
both tests pass.  (And without the patch, doing a text zoom on the
dynamic test fixes the layout error.)

MozReview-Commit-ID: JQOdVTQIkU0
2017-03-30 22:56:14 -04:00
Mats Palmgren
9de9843af7 Bug 1349650 - [css-grid] Fix a bogus assertion. r=dholbert
When mArray is used it contains all grid container children, including
placeholders.  aGridItemCount always excludes placeholders.

MozReview-Commit-ID: 2RVFOdVvTq
2017-03-23 21:04:36 +01:00
Mats Palmgren
83fc816e80 Bug 1346699 part 2 - [css-grid] Don't require 'fr' to be non-zero to apply min/max-size. r=dholbert
The calculated 'fr' value might change in the second round (after
applying min/max-size) even if it's zero in the first round.

MozReview-Commit-ID: 60moiyoWwuo
2017-03-16 13:24:50 +01:00
Mats Palmgren
d2083a3022 Bug 1346699 part 1 - [css-grid] Don't require that some (flexible) track size changed to apply min/max-size. r=dholbert
The "origSizes.isSome()" condition on the outer if-block was
a logical mistake.  We should check it before re-assigning
mSizes though (this was the optimization originally intended).

MozReview-Commit-ID: AooUHYKG3jB
2017-03-16 13:24:50 +01:00
Daniel Holbert
f89085c65d Bug 1340309 part 1: Resolve "align-self:auto"/"justify-self:auto" to flex/grid parent's *-items value, when resolving static pos of abspos children. r=mats
MozReview-Commit-ID: 6fSmo1WGqow
2017-02-24 08:38:31 -08:00
Ting-Yu Lin
e6769617e9 Bug 775624 Part 22 - Remove NS_FRAME_COMPLETE. r=dholbert
This patch is written by the following script with some manual adjustment to
the comment in nsRubyTextContainerFrame.cpp and nsRubyFrame.cpp, and
nsColumnSetFrame's constructor.

function rename() {
find layout\
     -type f\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename "nsReflowStatus *([a-zA-Z0-9]*) = NS_FRAME_COMPLETE" "nsReflowStatus \1"
rename "([a-zA-Z0-9.*]*) *= NS_FRAME_COMPLETE;" "\1.Reset();"
rename "([a-zA-Z0-9.*]*) == NS_FRAME_COMPLETE" "\1.IsEmpty()"

MozReview-Commit-ID: 9tqQAHvdQex
2017-02-14 17:55:48 +08:00
Ting-Yu Lin
899e0f6d07 Bug 775624 Part 17 - Convert NS_INLINE_IS_BREAK_AFTER to a method. r=dholbert
MozReview-Commit-ID: CD9uuOC3CzP
2017-02-14 16:22:04 +08:00
Ting-Yu Lin
1d4509ad47 Bug 775624 Part 16 - Convert NS_INLINE_IS_BREAK_BEFORE to a method. r=dholbert
MozReview-Commit-ID: 8vxRpqbZNnk
2017-02-14 16:05:24 +08:00
Ting-Yu Lin
a3dd49c694 Bug 775624 Part 13 - Convert NS_INLINE_LINE_BREAK_AFTER to a method. r=dholbert
NS_INLINE_MAKE_BREAK_TYPE is used only in BRFrame. Delete it, too.

MozReview-Commit-ID: GC4vF0GFsAD
2017-02-14 11:52:53 +08:00
Ting-Yu Lin
f87f7e111c Bug 775624 Part 12 - Add bit-fields for inline break status, and convert NS_INLINE_LINE_BREAK_BEFORE. r=dholbert
NS_INLINE_LINE_BREAK_BEFORE() was replaced by the help of the following script.

function rename() {
find layout\
     -type f\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename " = NS_INLINE_LINE_BREAK_BEFORE\(\);" ".SetInlineLineBreakBeforeAndReset();"

MozReview-Commit-ID: mz6L8zay7q
2017-02-14 11:52:53 +08:00
Ting-Yu Lin
e65c098cfb Bug 775624 Part 11 - Convert NS_MergeReflowStatusInto() to a method. r=dholbert
Also, remove NS_FRAME_TRUNCATED and NS_FRAME_REFLOW_NEXTINFLOW because both
are used only by NS_MergeReflowStatusInto().

MozReview-Commit-ID: LsPOji9j2e
2017-02-13 17:15:01 +08:00
Ting-Yu Lin
52fd6da2ff Bug 775624 Part 9 - Convert NS_FRAME_REFLOW_NEXTINFLOW to use bit-field and methods. r=dholbert
MozReview-Commit-ID: 1TXOShK62X8
2017-02-13 14:56:45 +08:00
Ting-Yu Lin
6401549156 Bug 775624 Part 8 - Remove NS_FRAME_SET_OVERFLOW_INCOMPLETE. r=dholbert
This patch is written by the help of the following script.

function rename() {
find layout\
     -type f\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename "NS_FRAME_SET_OVERFLOW_INCOMPLETE\(\*([a-zA-Z0-9.*]*)\)" "\1->SetOverflowIncomplete()"
rename "NS_FRAME_SET_OVERFLOW_INCOMPLETE\(([a-zA-Z0-9.*]*)\)" "\1.SetOverflowIncomplete()"

MozReview-Commit-ID: EJOIs84vwev
2017-02-11 23:18:04 +08:00
Ting-Yu Lin
19548476c9 Bug 775624 Part 7 - Remove NS_FRAME_SET_INCOMPLETE. r=dholbert
This patch is written by the help of the following script.

function rename() {
find layout\
     -type f\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename "NS_FRAME_SET_INCOMPLETE\(\*([a-zA-Z0-9.*]*)\)" "\1->SetIncomplete()"
rename "NS_FRAME_SET_INCOMPLETE\(([a-zA-Z0-9.*]*)\)" "\1.SetIncomplete()"

MozReview-Commit-ID: GOd4y2N6dcz
2017-02-11 23:06:17 +08:00
Ting-Yu Lin
8d6d261f9f Bug 775624 Part 5 - Remove NS_FRAME_IS_COMPLETE. r=dholbert
This patch is written by the help of the following script.

function rename() {
find layout\
     -type f\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename "NS_FRAME_IS_COMPLETE\(([a-zA-Z0-9.*]*)\)" "\1.IsComplete()"

MozReview-Commit-ID: GOd4y2N6dcz
2017-02-11 22:45:07 +08:00
Ting-Yu Lin
cd7928dc29 Bug 775624 Part 4 - Remove NS_FRAME_IS_FULLY_COMPLETE. r=dholbert
This patch is written by the help of the following script.

function rename() {
find layout\
     -type f\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename "NS_FRAME_IS_FULLY_COMPLETE\(([a-zA-Z0-9.*]*)\)" "\1.IsFullyComplete()"

MozReview-Commit-ID: GOd4y2N6dcz
2017-02-11 22:38:48 +08:00
Ting-Yu Lin
ee777dbc18 Bug 775624 Part 3 - Remove NS_FRAME_IS_NOT_COMPLETE. r=dholbert
This patch is written by the help of the following script.

function rename() {
find layout\
     -type f\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename "NS_FRAME_IS_NOT_COMPLETE\(([a-zA-Z0-9.*]*)\)" "\1.IsIncomplete()"

MozReview-Commit-ID: GOd4y2N6dcz
2017-02-11 22:17:26 +08:00
Ravi Shankar
cc5a9b9be0 Bug 1339765 - Replace NS_STYLE_GRID_TRACK_BREADTH_* with enum classes;r=heycam
MozReview-Commit-ID: BAMrykPhoIl
2017-02-17 09:28:36 +05:30
Jeff Walden
a6ec779698 Bug 1287006 - Don't pass Maybe (or any class containing a Maybe member) by value, only by reference or pointer, in layout/-related code. r=bz 2017-02-13 09:07:40 -08:00
Mats Palmgren
459eaa9270 Bug 1330380 part 2 - We must always pass along a CB size when reflowing grid items, also in MeasuringReflow. r=dholbert 2017-01-14 01:05:52 +01:00
Mats Palmgren
7b929addbe Bug 1330380 part 1 - Rename a couple of variables. r=dholbert 2017-01-14 01:05:52 +01:00
Cameron McCormack
5f9911da79 Bug 1328832 - Part 2: Rename mozFlushType to mozilla::FlushType and make it an enum class. r=bzbarsky
MozReview-Commit-ID: D3fIngSHSsl
2017-01-05 15:31:56 +08:00
Mats Palmgren
5d28bcecf1 Bug 1232194 part 1 - [writing-mode] Drop "Get" from GetConsumedBSize() and add a WritingMode param. r=dholbert 2017-01-04 00:56:19 +01:00
Mats Palmgren
3abb59d131 Bug 1312379 part 4 - Rename GetBaseline() to BaselineBOffset(). r=me 2016-12-20 23:56:35 +01:00
Mats Palmgren
05b26d81fe Bug 1312379 part 1 - [css-align][css-flexbox][css-grid] Introduce nsIFrame methods for calculating baselines per CSS Alignment and CSS2 'vertical-align'. r=dholbert 2016-12-20 23:56:35 +01:00
Mats Palmgren
4d072fe01c Bug 1313068 - [css-grid] Synthesize a grid container baseline from the margin-box when in an inline-level context, and from the border-box otherwise. r=dholbert 2016-12-20 23:56:34 +01:00
Mats Palmgren
02dae822cd Bug 1314664 part 4 - [css-grid] Don't include percentage tracks in the repeat track calculation. r=dholbert 2016-12-20 23:56:34 +01:00
Mats Palmgren
7e7b47baa1 Bug 1314664 part 3 - [css-grid] Remove unused eIndefinitePercentMinSizing bit. r=dholbert 2016-12-20 23:56:34 +01:00
Mats Palmgren
b2cbe29602 Bug 1314664 part 2 - [css-grid] Don't re-resolve percentage track sizes since there is no need. r=dholbert 2016-12-20 23:56:34 +01:00
Mats Palmgren
c585882f4d Bug 1314664 part 1 - [css-grid] Don't include percentage tracks in the back-computed intrinsic size equation. r=dholbert 2016-12-20 23:56:34 +01:00
Nathan Froyd
b995466f21 Bug 1320752 - remove mozilla/Function.h; r=gerald
We have std::function available now, which is likely to be somewhat more
efficient.
2016-11-28 11:03:53 -05:00
Mats Palmgren
3dcff0c588 Bug 1316051 part 3 - [css-grid] Store the CB size that we give to table-wrappers on a frame property, then propagate that later (minus margins) to the inner table frame. r=dholbert 2016-11-18 19:08:31 +01:00
Daniel Holbert
c2efa108f2 Bug 1269017 part 5 - [css-grid] Tag grid placeholder children as needing CSS Box Alignment, & consolidate their placement code. r=mats
MozReview-Commit-ID: 5105oez3IO3
2016-11-08 16:30:00 -08:00