| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
r=Loirooriol
Fix positioning of statically positioned fixed child of absolutes
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] There are tests for these changes
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
|
| | |
|
|/
|
|
| |
b'7b682ab07397d72fceb6594d0f27cb36cf1d8ee3'
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, final float positions were calculated when their parents
were positioned. This prevented proper positioning of absolute children
of floats with static insets, because they accumulate offsets as they
are hoisted up the tree.
This change moves the final float positioning to
`PlacementState::place_fragment` for the float itself so that it happens
before any insets are updated for hoisted descendants. In addition to
simplifying the code, this makes it a bit more efficient. Finally,
floats are taken into account when updating static insets of hoisted
boxes.
Fixes #29826.
|
|
|
|
| |
b'b31eaacb964b5e159b841d9eb18aa12e1d37867a'
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Layout 2020: Properly handle negative margins in floats
If a float has negative block margins, it should be pushed upward, but shouldn't affect the positioning of any floats that came before it. It should lower the ceiling though when it still has some non-negative block contribution. In order to implement this behavior, we should only place the float considering its non-negative block length contribution. If the float is pushed up completely past it's "natural" position, it should be placed like a float with zero block size.
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] There are tests for these changes
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If a float has negative block margins, it should be pushed upward, but
shouldn't affect the positioning of any floats that came before it. It
should lower the ceiling though when it still has some non-negative
block contribution. In order to implement this behavior, we should only
place the float considering its non-negative block length contribution. If
the float is pushed up completely past it's "natural" position, it
should be placed like a float with zero block size.
|
|/
|
|
| |
b'04c64baa69c1692214ef350185b1ef817362a13c'
|
|
|
|
| |
b'4d1dc1971a0688048c804261711c639fe96ee187'
|
|
|
|
| |
b'4c27189ed2db4ddad8e727d4ea9ae8329c3e1672'
|
|
|
|
| |
b'02400d32d48521baa38663fe8601779994fcfb78'
|
|
|
|
| |
b'c9946198c9ee19db3b4974a388fae45da844a94a'
|
|
|
|
| |
b'8d8b273d2265095c7f5330ff231940e68fb49754'
|
|
|
|
|
|
|
|
|
|
| |
Manage containing blocks and WebRender SpaceAndClip during stacking
context tree constuction using the ContainingBlockInfo data structure.
This will allow us to reuse this data structure whenever we traverse the
fragment tree. In addition, StackingContextBuilder is no longer
necessary at all. This change also fixes some bugs where fixed position
fragments were not placed in the correct spatial node. Unfortunately,
these fixes are difficult to test because of #29659.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Normalize corner radii that add up to > 100%
WebRender already seems to be doing this normalization, but this is needed by inner_radii in order to properly compute the reduced radii when background-clip is content-box or padding-box.
This will also be needed for expanding the radii for box-shadow or outline.
Test: css/css-backgrounds/background-rounded-image-clip-002.html
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #29685 (GitHub issue number if applicable)
<!-- Either: -->
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because ___
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
WebRender already seems to be doing this normalization, but this is
needed by inner_radii in order to properly compute the reduced radii
when background-clip is content-box or padding-box.
This will also be needed for expanding the radii for box-shadow or
outline.
Test: css/css-backgrounds/background-rounded-image-clip-002.html
|
|/
|
|
| |
b'797e75946c24d0625f04247b16d33c26d4ada273'
|
|
|
|
|
|
| |
It was only applied to the 1st inline formatting context of a block
container. Other IFCs were created with the Default trait, implying
TextDecorationLine::NONE.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Existing WPT now passing:
- _mozilla/css/text_indent_a.html
- css/CSS2/css1/c71-fwd-parsing-002.xht
- css/CSS2/css1/c71-fwd-parsing-004.xht
- css/CSS2/floats-clear/floats-138.xht
- css/CSS2/text/text-indent-007.xht
- css/CSS2/text/text-indent-008.xht
- css/CSS2/text/text-indent-010.xht
- css/CSS2/text/text-indent-019.xht
- css/CSS2/text/text-indent-020.xht
- css/CSS2/text/text-indent-031.xht
- css/CSS2/text/text-indent-032.xht
- css/CSS2/text/text-indent-043.xht
- css/CSS2/text/text-indent-044.xht
- css/CSS2/text/text-indent-055.xht
- css/CSS2/text/text-indent-056.xht
- css/CSS2/text/text-indent-067.xht
- css/CSS2/text/text-indent-068.xht
- css/CSS2/text/text-indent-079.xht
- css/CSS2/text/text-indent-080.xht
- css/CSS2/text/text-indent-091.xht
- css/CSS2/text/text-indent-092.xht
- css/CSS2/text/text-indent-103.xht
- css/CSS2/text/text-indent-104.xht
- css/CSS2/text/text-indent-112.xht
- css/CSS2/text/text-indent-113.xht
- css/CSS2/text/text-indent-115.xht
- css/CSS2/text/text-indent-applies-to-002.xht
- css/CSS2/text/text-indent-applies-to-003.xht
- css/CSS2/text/text-indent-applies-to-005.xht
- css/CSS2/text/text-indent-applies-to-006.xht
- css/CSS2/text/text-indent-applies-to-007.xht
- css/CSS2/text/text-indent-applies-to-008.xht
- css/CSS2/text/text-indent-applies-to-009.xht
- css/CSS2/text/text-indent-applies-to-010.xht
- css/CSS2/text/text-indent-applies-to-011.xht
- css/CSS2/text/text-indent-applies-to-014.xht
- css/CSS2/text/text-indent-applies-to-015.xht
- css/CSS2/text/text-indent-inherited-001.xht
- css/CSS2/text/text-indent-overflow-001.xht
- css/CSS2/text/text-indent-overflow-002.xht
- css/CSS2/text/text-indent-overflow-003.xht
- css/CSS2/text/text-indent-overflow-004.xht
- css/CSS2/text/text-indent-wrap-001.xht
- css/css-text-decor/text-shadow/textindent.html
- css/css-text/text-indent/text-indent-percentage-001.xht
- css/css-text/text-indent/text-indent-percentage-002.html
- css/css-text/text-indent/text-indent-percentage-003.html
- css/css-text/text-indent/text-indent-percentage-004.html
- css/css-values/minmax-length-percent-serialize.html
- css/css-values/minmax-length-serialize.html
Also improvements in:
- _mozilla/mozilla/calc.html
- css/css-text/animations/text-indent-interpolation.html
- css/css-text/inheritance.html
- css/css-text/parsing/text-indent-computed.html
- css/css-text/parsing/text-indent-valid.html
- css/css-transitions/properties-value-implicit-001.html
- css/css-values/animations/calc-interpolation.html
- css/css-values/minmax-percentage-serialize.html
- css/css-values/viewport-units-css2-001.html
- css/css-variables/variable-substitution-basic.html
- css/cssom/serialize-values.html
Existing WPT now failing, due to lack of direction, outside list markers,
flex and grid:
- css/CSS2/text/text-indent-rtl-001.xht
- css/CSS2/text/text-indent-rtl-002.xht
- css/css-pseudo/marker-content-023.html
- css/css-text/text-indent/anonymous-flex-item-001.html
- css/css-text/text-indent/anonymous-grid-item-001.html
New WPT tests:
- css/css-text/text-indent/text-indent-length-001.html
- css/css-text/text-indent/text-indent-length-002.html
This one fails in layout-2013.
|
|
|
|
| |
b'6aa16a6888fcf6dd3ee2eac2e911c2d7c353d193'
|
|
|
|
| |
b'a3cb53d786edfd9106825e312866624150382075'
|
|
|
|
| |
b'f0b66362cc5dec54d81e0a56458b48f310a2eba9'
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Handle min/max sizes in non-replaced positioned boxes
This patch makes HoistedAbsolutelyPositionedBox handle min/max sizes in the non-replaced case, per CSS2 [#min-max-widths](https://drafts.csswg.org/css2/#min-max-widths) and [#min-max-heights](https://drafts.csswg.org/css2/#min-max-heights). No changes are made to the replaced case.
3 new tests:
* /css/CSS2/positioning/absolute-non-replaced-max-001.html (fails under layout 2013)
* /css/CSS2/positioning/absolute-non-replaced-min-001.html (fails under layout 2013)
* /css/CSS2/positioning/absolute-non-replaced-min-max-001.html (passes under layout 2013)
13 tests now pass:
* [/css/CSS2/positioning/absolute-non-replaced-max-height-002.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-max-height-002.xht)
* [/css/CSS2/positioning/absolute-non-replaced-max-height-003.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-max-height-003.xht)
* [/css/CSS2/positioning/absolute-non-replaced-max-height-007.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-max-height-007.xht)
* [/css/CSS2/positioning/absolute-non-replaced-max-height-008.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-max-height-008.xht)
* [/css/CSS2/positioning/absolute-non-replaced-max-height-009.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-max-height-009.xht)
* [/css/CSS2/positioning/absolute-non-replaced-max-height-011.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-max-height-011.xht)
* [/css/CSS2/positioning/absolute-non-replaced-width-025.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-width-025.xht)
* [/css/CSS2/positioning/absolute-non-replaced-width-026.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-width-026.xht)
* [/css/CSS2/positioning/abspos-change-in-inline-block.html](https://wpt.live/css/CSS2/positioning/abspos-change-in-inline-block.html)
* [/css/CSS2/positioning/abspos-width-change-inline-container-001.html](https://wpt.live/css/CSS2/positioning/abspos-width-change-inline-container-001.html)
* [/css/CSS2/positioning/detach-abspos-before-layout.html](https://wpt.live/css/CSS2/positioning/detach-abspos-before-layout.html)
* [/css/CSS2/positioning/relpos-percentage-left-in-scrollable-2.html](https://wpt.live/css/CSS2/positioning/relpos-percentage-left-in-scrollable-2.html)
* [/css/CSS2/positioning/relpos-percentage-left-in-scrollable.html](https://wpt.live/css/CSS2/positioning/relpos-percentage-left-in-scrollable.html)
11 tests would now pass if `<br>` was inserted between the two `<img>` tags in the reference (#29591):
* [/css/CSS2/positioning/absolute-non-replaced-height-003.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-height-003.xht)
* [/css/CSS2/positioning/absolute-non-replaced-height-004.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-height-004.xht)
* [/css/CSS2/positioning/absolute-non-replaced-height-005.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-height-005.xht)
* [/css/CSS2/positioning/absolute-non-replaced-height-010.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-height-010.xht)
* [/css/CSS2/positioning/absolute-non-replaced-height-011.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-height-011.xht)
* [/css/CSS2/positioning/absolute-non-replaced-height-012.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-height-012.xht)
* [/css/CSS2/positioning/absolute-non-replaced-max-height-004.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-max-height-004.xht)
* [/css/CSS2/positioning/absolute-non-replaced-max-height-005.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-max-height-005.xht)
* [/css/CSS2/positioning/absolute-non-replaced-max-height-006.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-max-height-006.xht)
* [/css/CSS2/positioning/absolute-non-replaced-max-height-010.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-max-height-010.xht)
* [/css/CSS2/positioning/absolute-non-replaced-max-height-012.xht](https://wpt.live/css/CSS2/positioning/absolute-non-replaced-max-height-012.xht)
1 test continues to fail, but the expectation was out of date:
* [/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html](https://wpt.live/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html)
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [ ] `./mach test-tidy` does not report any errors
- [x] These changes contribute to #29592
<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because ___
|
| | |
|
|/
|
|
| |
b'a877a8f14afc4b3a1d438cd5a9bfd7cd029111b7'
|
|
|
|
| |
b'5857a9b5776d85fe77883fadf62c398dc05cf608'
|
|
|
|
| |
b'1d9b01e2fad6af3a057d571b1e088e15fa9bc8e6'
|
|
|
|
| |
b'2703c75d5e889bb7c6a918de44841bf9de8d63a7'
|
|
|
|
| |
b'62c17eac9f99db2ea4e213328c9c6122136694cc'
|
|
|
|
| |
b'065cf84e9f00d1c11faf2a41e500a73ad6b95a48'
|
|
|
|
| |
b'ceb972b009e1b43c589dce3f36b050121493d2e0'
|
|
|
|
| |
b'afdce893ed51bc1a7a7ac03b16b5a575caad071a'
|
|
|
|
| |
b'3ee7ccc2abbbc8d8f6efbb45f80bffdb3c0c76ba'
|
|
|
|
| |
b'14684f837eba364df3de2b6683d4eb5385333158'
|
|
|
|
| |
b'e731a1368a9d3436487e0996ecfebbef5a58f485'
|
|
|
|
| |
b'2d1ad05908ee5447fdfa70eed9757273aa5da367'
|
|
|
|
| |
b'1393983442315fc6a96bacda5202036ca10327e3'
|
|
|
|
| |
b'3b791e5b10812a4ca4473d93679fc70d1a7f5f88'
|
|
|
|
| |
b'49287d0e660dd6704c508ef20c9d53c13aee296b'
|
|
|
|
| |
b'5b72ee9b50ae6898c94fe3ab50f4c68d4572977c'
|
|
|
|
| |
b'c9f81de4242294a0d694ecd5a63155acfe6bf49a'
|
|
|
|
| |
b'b3615436df24bedfdc4f14f959428307a86f74ce'
|
|
|
|
| |
b'49819d78d44b87d5ebb076c5b005dcbfc630c24f'
|
|
|
|
| |
b'96ef5777e50f7ed8f54b91525002d6708fc097d7'
|
|
|
|
| |
b'45fdf45f79582953fb3aa708566cd2c0707cb222'
|
|
|
|
| |
b'bcf4a27c0a9dbb07d974a880acb26eb289a85c7e'
|
|
|
|
| |
b'6884bbba4e81574d2ba84d134bc45fbd7483294f'
|
|
|
|
| |
b'b6f6bf16fe6069aed53d28af86a79b8ff4963844'
|