Commit graph

122 commits

Author SHA1 Message Date
Martin Robinson
dc192172ad Clean up debug options 2023-05-01 14:09:28 +02:00
Oriol Brufau
668c4c8aba Round text decoration thickness to >= 1 device pixels
Previously the thickness coming from font metrics could be something
like 0.7px, so with 1dppx it would be painted as either 1 or 0 device
pixels.

Enforcing at least 1 device pixel ensures that the decoration will be
visible, and rounding to an integral amount of device pixels ensures
that the thickness won't vary depending on the position.

The specification requires this behavior when text-decoration-thickness
is set to a length or percentage. It's not clear if it should also
happen by default, but this seems to match other browsers (except for
WebKit rounding up instead of to the nearest integer).

The test text-decoration-thickness-from-zero-sized-font.html is now
failing because of #29675.
2023-04-27 23:48:53 +02:00
Martin Robinson
9e0b41ebc4 Add support for <iframe> elements for Layout 2020
This change adds support for the <iframe> element to Layout 2020. In
addition, certain aspects of the implementation are made the same
between both layout systems.
2023-04-04 17:49:24 +02:00
Martin Robinson
6d4b7e7a22 Move hit testing information out of WebRender
Store hit testing information in a data structure that sits alongside
the display list in the compositor. This will allow the compositor to
store more information per-node. The data structure also takes care of
de-duplicating information between successive display list entries. In
the future, the data structure can be even more aggressive in producing
smaller side hit testing lists, if necessary.
2023-03-15 12:25:29 +01:00
Martin Robinson
423cc34cb0 Bump euclid to 0.22
- Also updates raqote to latest with an upgrade of font-kit to 0.11
  applied on as a patch
- Update lyon_geom to the latest version

Major change:

- All matrices are now stored in row major order. This means that
  parameters to rotation functions no longer should be negated.
- `post_...()` functions are now named `then()`. `pre_transform()` is removed,
  so `then()` is used and the order of operations changed.
2023-01-26 08:59:21 +01:00
Josh Matthews
01681e79c4 Update nightly rustc. 2021-11-01 08:46:18 -04:00
Emilio Cobos Álvarez
31e8e418ea Miscellaneous build / tidy fixes. 2021-02-26 17:53:55 +01:00
Manish Goregaokar
433b653f70 Move clip resolution code into style 2020-07-27 19:59:59 -07:00
Kunal Mohan
71401e0855 Implement GPUSwapChain and GPUCanvasContext and interface with Webrender 2020-06-13 17:46:12 +05:30
Josh Matthews
08427ccee5 layout: Don't built stacking contexts or display lists for empty blocks. 2020-06-09 11:27:23 -04:00
Josh Matthews
af05da574b Use new webrender rounded clip API. 2020-05-12 14:43:41 -04:00
Josh Matthews
8842250033 Update webrender. 2020-05-11 17:41:56 -04:00
Daniel Alley
232df236a7 Fix combination of border and border-radius being drawn incorrectly
fixes #20922
2020-04-17 16:30:30 -04:00
Emilio Cobos Álvarez
848a6203de Some servo build fixes. 2020-04-16 18:29:30 +02:00
Daniel Alley
61fb84d6a0 Don't send empty canvases to WebRender
If any dimension of a canvas is 0, don't try to render it as it causes
problems inside webrender.
2020-04-03 11:34:04 -04:00
Simon Sapin
062c1872f0 Parse -moz-image-rect() and -moz-element() only in Gecko 2020-01-07 14:44:28 +01:00
Emilio Cobos Álvarez
7d30a7da75 Servo build fixes. 2019-12-16 14:23:56 +01:00
Patrick Walton
6e67349d8c Cap the number of glyphs per WebRender text run to avoid overflowing WR's limit.
Closes #17230.
2019-12-13 16:53:14 -08:00
Josh Matthews
6dad51f570 layout: Ensure truncated fragment is updated with results of collecting inner fragment's stacking contexts. 2019-12-09 09:57:48 +01:00
Anthony Ramine
808c34498b Update webrender and serde_bytes 2019-11-13 11:54:51 -05:00
Josh Matthews
38e4ae0833 layout: Record sizes for iframes that have no pipeline. 2019-11-06 15:39:32 -05:00
Emilio Cobos Álvarez
cd3b0c23fa
style: Fix Servo build, and rustfmt recent changes. 2019-09-12 23:04:56 +02:00
Emilio Cobos Álvarez
3d57c22e9c Update euclid.
There are a few canvas2d-related dependencies that haven't updated, but they
only use euclid internally so that's not blocking landing the rest of the
changes.

Given the size of this patch, I think it's useful to get this landed as-is.
2019-07-23 23:09:55 +02:00
Josh Matthews
089823ae20 Remove sometimes-unused bounds field from base display item to prevent confusion. 2019-07-09 10:52:43 -04:00
Josh Matthews
f1b10393c2 rustfmt 2019-07-09 10:52:43 -04:00
Josh Matthews
644addd159 WebRender rectangles items are sized based on their clipping rectangles. 2019-07-09 10:51:57 -04:00
Josh Matthews
10ab466e5d Create a solid rectangle display list entry for the page background. 2019-07-09 10:51:56 -04:00
Patrick Walton
7ca570dd1d Upgrade display list building for the WebRender update. 2019-07-09 10:50:28 -04:00
Patrick Walton
2f9c9cefdb WebRender units are no longer reexported. 2019-07-09 10:50:27 -04:00
Emilio Cobos Álvarez
add08518cd
Fix style system build with recent changes. 2019-06-25 13:11:32 +02:00
Emilio Cobos Álvarez
2e5078e9c5 layout: Fix servo build. 2019-06-04 01:04:02 -04:00
Paul Rouget
a20455fd6b WR update: APIs update 2019-03-22 15:41:48 +08:00
Emilio Cobos Álvarez
0c01325c05 layout: Fix servo build. 2019-03-13 15:08:39 +01:00
Emilio Cobos Álvarez
44ae191e72 Fix servo build. 2019-02-23 21:05:34 -08:00
Emilio Cobos Álvarez
6daebcc5df Fix servo build. 2019-02-10 07:23:51 +01:00
bors-servo
d81ff5704e
Auto merge of #22839 - jdm:overflow-hit-test-fix, r=pcwalton
Ensure transparent hit test region is sized and positioned correctly.

This addresses some edge cases that were missed by #22156. Specifically, in some cases the transparent region was being placed in the display list in front of the scrollable content, rather than behind it, and the size of the region did not account for parent stacking context.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #22073 and fix #22216.
- [x] There are tests for these changes

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22839)
<!-- Reviewable:end -->
2019-02-06 18:14:20 -05:00
Josh Matthews
f59e95ee3d Ensure transparent hit test region is sized and positioned correctly. 2019-02-06 15:19:03 -05:00
Alan Jeffrey
386c0f80ed Implemented fullscreen top layer 2019-02-06 13:23:52 -06:00
Emilio Cobos Álvarez
90c0ec0cf7 Fix servo build and rustfmt recent changes.
We need to introduce another Cursor enum that is specific to embedder_traits and
that layout converts to to avoid dependency hell.
2019-01-20 16:31:01 +01:00
bors-servo
2e439fa7cb
Auto merge of #22396 - jdm:no-spam-iframe-size, r=asajeffrey
Reduce unnecessary iframe size messages

This should be an improvement on pages that include iframes, since we currently run two layout jobs for every display-oriented layout request. When building the display list, we send a message to the constellation that includes the sizes of all iframes present, and the constellation sends resize messages to the script thread. This results in a mouse event on the outer page causing all frames to be re-laid out even if no changes occurred to the iframe sizes, which is ridiculous.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #22394
- [x] These changes do not require tests because there is no way to test this internal detail.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22396)
<!-- Reviewable:end -->
2019-01-14 19:12:59 -05:00
Josh Matthews
49a100ca8b Suppress iframe size messages from layout that include unchanged sizes. 2019-01-14 18:17:45 -05:00
Anthony Ramine
cf15336a51 Simplify get_cursor 2019-01-14 16:51:28 +01:00
Anthony Ramine
b9b70445cb Remove ComputedValuesCursorUtility 2019-01-14 16:10:26 +01:00
Anthony Ramine
a92dd09fc9 Remove FlexFlowDisplayListBuilding 2019-01-14 16:10:26 +01:00
Anthony Ramine
21cca5bb53 Kill RgbColor 2019-01-14 16:10:26 +01:00
Anthony Ramine
f75578cbf1 Remove ListItemFlowDisplayListBuilding 2019-01-14 16:10:26 +01:00
Anthony Ramine
7d57c9b3ab Remove InlineFlowDisplayListBuilding
This lets us remove a few call indirections where a function just calls
another function defined in another module.
2019-01-14 16:10:25 +01:00
Anthony Ramine
7a704d2f04 Kill establishes_containing_block_for_absolute
We inline the related tests at the two call sites.
2019-01-14 15:46:04 +01:00
Anthony Ramine
6e0a7dc3b2 Remove FragmentDisplayListBuilding 2019-01-14 11:04:39 +01:00
Anthony Ramine
f8c4a87a30 Remove BaseFlowDisplayListBuilding 2019-01-14 10:54:23 +01:00