Commit Graph

276 Commits

Author SHA1 Message Date
Matt Brubeck
c60bf193e9 servo: Merge #10469 - Some minor layout cleanups (from mbrubeck:layout-misc); r=pcwalton
* Prevent unnecessary copying in `strip_leading_whitespace_if_necessary`
* Remove unused argument to `adjust_clipping_region_for_children` (silences a compiler warning)

r? @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: bd2051d06a4b5f5a261b1c816c5ce9960d3e9b23
2016-04-08 09:40:11 +05:00
Patrick Walton
f359e89a5d servo: Merge #10450 - layout: Allow non-absolutely-positioned elements with overflow: scroll set to be scrolled (from pcwalton:overflow-scroll-non-positioned); r=mbrubeck
This makes them establish stacking contexts, which is a CSS 2.1 spec
violation. However, we were already violating the spec here for
absolutely-positioned elements with `overflow: scroll`. It will probably
be easier to fix this spec violation once we either switch entirely to
WebRender or we have multiple layers per stacking context.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: e66e437ae66346883cb2cc700f84d06c44962be1
2016-04-07 21:00:13 +05:00
Mauricio Collares
1501e15311 servo: Merge #10407 - Move some CSS properties to match Gecko's representation (from mauricioc:issue10403); r=bholley
Fixes #10403. Animation had an extra transition-delay property, which was also moved to Box. Let me know if I should squash the commits.

Source-Repo: https://github.com/servo/servo
Source-Revision: 256b865055c10082731b218f41373d47ad632062
2016-04-07 02:48:15 +05:00
Michael Howell
c5dff2d112 servo: Merge #10279 - Fix #10258 (from notriddle:issue_10258); r=mbrubeck
Respect border-box when computing the relative sizes of children.

Source-Repo: https://github.com/servo/servo
Source-Revision: 77444d00be7b6346b632385cb0c1f5e858ff50a2
2016-03-30 12:18:40 +05:00
Per Lundberg
7e97301070 servo: Merge #10277 - Renamed TComputedValues to ComputedValues (from perlun:rename-tcomputedvalues-to-computedvalues); r=SimonSapin
This is a followup to #10210, and a continuation of #10185.

Source-Repo: https://github.com/servo/servo
Source-Revision: 0ec96ac02a6c40ffda98e1074ceb9874dd1fb3cb
2016-03-30 10:34:57 +05:00
Per Lundberg
7dd7483a07 servo: Merge #10210 - ComputedValues is now ServoComputedValues (from perlun:rename-computedvalues-to-servocomputedvalues); r=SimonSapin
This is the first part of #10185. More to follow. I have built this locally with both servo and geckolib without errors; let's see if it succeeds on all platforms as well.

Source-Repo: https://github.com/servo/servo
Source-Revision: 639fdd6b128e0cfd418e4ae0dd78de3f5aecac4c
2016-03-29 17:55:40 +05:00
faineance
13971a6ff8 servo: Merge #10222 - Use self.0 instead of destructuring single item tuple structs (from faineance:master); r=KiChjang
Closes #9698.

Source-Repo: https://github.com/servo/servo
Source-Revision: b97ffffb48080a0b4769f8609a27a68145042945
2016-03-28 03:42:31 +05:00
Patrick Walton
9698fed872 servo: Merge #10085 - layout: Rewrite the block formatting context/float inline-size speculation code (from pcwalton:floats-inout-revamp); r=mbrubeck
The old code tried to do the speculation as a single bottom-up pass
after intrinsic inline-size calculation, which was unable to handle
cases like this:

    <div>
        <div style="float: left">Foo</div>
    </div>
    <div>
        <div style="overflow: hidden">Bar</div>
    </div>

No single bottom-up pass could possibly handle this case, because the
inline-size of the float flowing out of the "Foo" block could never make
it down to the "Bar" block, where it is needed for speculation.

On the pages I tried, this regresses layout performance by 1%-2%.

I first noticed this breaking some pages, like the Google SERPs, several
months ago.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 1554331f06900e69f246ed9986a08aae91a0a71e
2016-03-26 06:38:41 +05:00
Bobby Holley
c3e649c731 servo: Merge #10155 - Generalize the style structs (from bholley:generalize_style_structs); r=SimonSapin
This allows geckolib to pass gecko style structs and have the style system write to them directly, provided we implement all the traits.

Source-Repo: https://github.com/servo/servo
Source-Revision: 605842f193aedc1151ab38a99c49f693c76e5cf3
2016-03-25 02:57:33 +05:00
Patrick Walton
07ae9562fa servo: Merge #9843 - Optimize flat display lists (from pcwalton:optimize-flat-display-lists); r=mrobinson
Flat display lists were a 2x regression on the spheres demo. This patch series fixes that.

See the individual commits for more details.

r? @mrobinson

Source-Repo: https://github.com/servo/servo
Source-Revision: 55fc48e4c46917a0f036d0054fac296bb5719434
2016-03-04 02:19:04 +05:00
Martin Robinson
867b8565bb servo: Merge #9756 - Flatten display list structure (from mrobinson:flat-display-lists-webrender); r=pcwalton
Instead of producing a tree of stacking contexts, display list
generation now produces a flat list of display items and a tree of
stacking contexts. This will eventually allow display list construction
to produce and modify WebRender vertex buffers directly, removing the
overhead of display list conversion.  This change also moves
layerization of the display list to the paint thread, since it isn't
currently useful for WebRender.

To accomplish this, display list generation now takes three passes of
the flow tree:

        1. Calculation of absolute positions.
        2. Collection of a tree of stacking contexts.
        3. Creation of a list of display items.

After collection of display items, they are sorted based upon the index
of their parent stacking contexts and their position in CSS 2.1
Appendeix E stacking order.

This is a big change, but it actually simplifies display list generation.

Source-Repo: https://github.com/servo/servo
Source-Revision: 62814f7cb486bc267a796b7ce58c51d59240fad0
2016-03-02 05:51:08 +05:00
Anthony Ramine
a1c9a0bed1 servo: Merge #9686 - Move util::logical_geometry to style (from nox:mv-logical_geometry); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: eee0d4efeba1ee77e864a495b6e1992c8ad088cc
2016-02-18 14:21:29 +05:00
Patrick Walton
ff81f6ae4e servo: Merge #9522 - layout: Separate out overflow-for-scrolling from overflow-for-paint (from pcwalton:two-overflows); r=mbrubeck
Closes #9484.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: fb3fe3d784c24cdfd8040af0282e5c2182ee2051
2016-02-05 10:28:50 +05:00
Patrick Walton
a846b97f2e servo: Merge #9438 - Expand the block size of the root flow's margin box to the viewport size instead of expanding the block size of its border box (from pcwalton:root-margins); r=mbrubeck
Closes #9308.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: d1ff330ba80ad20eae8bfb2f0044e1e1199dc424
2016-01-30 03:25:24 +05:00
Simon Sapin
12550c8084 servo: Merge #9170 - Add CSS Multicolumn support with block fragmentation (from SimonSapin:multicol2); r=mbrubeck
![a](https://cloud.githubusercontent.com/assets/291359/12147538/bfb198ac-b499-11e5-9936-c54c93d0b1ed.png)

Includes/supersedes #8763.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 5e1f0495a922c5dddbc120f17ba5c933973537ed
2016-01-30 00:19:14 +05:00
Kishor Bhat
7213d2595c servo: Merge #9349 - Remove unused imports in layout (from therealkbhat:layout-cleanup); r=SimonSapin
Fixes #9346.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2ad562042ba1d80e619286e0d03e8d1fb408779a
2016-01-17 22:44:37 +05:00
rohan.prinja
c098aafd20 servo: Merge #9201 - task -> thread (from ajnirp:8512-task-thread); r=jdm
for #8512

Source-Repo: https://github.com/servo/servo
Source-Revision: d3e2f94f2024f4735f836588ed11303a0abafdf8
2016-01-10 15:19:04 +05:00
Martin Robinson
b90d2c7a04 servo: Merge #9008 - More aggressively remove Fragment RestyleDamage (from mrobinson:reflow); r=pcwalton
Now clean up damage on all fragments that belong to a Flow. This ensures
that damage does not re-propagate up to the parent Flow from the
Fragments. It also means that the flow tree dump should show a more
accurate picture of the state of the flow tree.

Source-Repo: https://github.com/servo/servo
Source-Revision: 1436ee5afab4ede68ab834c7d6368a7d45ede7ac
2016-01-09 06:31:23 +05:00
Johannes Linke
bb6c128359 servo: Merge #9123 - Fix a bunch of clippy lints (from karyon:clippy_cleanup); r=Manishearth
This fixes about 130 clippy lints. Let me know if i should split up the commit.

I wasn't sure about some of the changes, especially map_or instead of map(...).unwrap_or(...) and if let instead of single arm match were not always a strict improvement in my opinion, but i'll leave that decision to the reviewer :)

There are about 150 lints left which i thought were clippy bugs or i didn't know how to fix.

cc @Manishearth

Source-Repo: https://github.com/servo/servo
Source-Revision: 9da739acefc7d1776bf727c8bf782eb79f241028
2016-01-03 08:46:34 +05:00
Bobby Holley
5a7a54af13 servo: Merge #9077 - Split the style-related bits out of LayoutContext and hoist more stuff into style/ (from bholley:split_layout_context_etc); r=SimonSapin
Source-Repo: https://github.com/servo/servo
Source-Revision: 3f407ea3d620e381b3adf6352cc09f9912db26b3
2015-12-30 10:31:23 +05:00
Brandon Fairchild
d3a5501336 servo: Merge #8938 - Move LayerKind and ScrollPolicy enums to gfx_traits (from nerith:gfx); r=Ms2ger
Fixes #8836.

Source-Repo: https://github.com/servo/servo
Source-Revision: 68c4f290c7c9ad7ea45fcea66e3c6b172e42be62
2015-12-23 18:08:51 +05:00
Martin Robinson
723ab42c9b servo: Merge #8632 - Improve readability of flow tree dump (from mrobinson:flow-tree-dump); r=pcwalton
Use the PrintTree utility to improve the readability of flow tree
dumps. Blocks and fragments are now split over two dump levels, because
otherwise they are impenetrable. Also start printing the restyle damage of
fragments.

Source-Repo: https://github.com/servo/servo
Source-Revision: a2330f494316926dca9f64431d8357a093143d7d
2015-11-24 07:19:07 +05:00
r0e
092a2ff182 servo: Merge #8597 - Fix for #8593 'loop..match' should be 'while let' (from r0e:testing); r=Manishearth
As per #8593.

Source-Repo: https://github.com/servo/servo
Source-Revision: e3eee5a41b2bc6e3517cdcdc745d74c59a82e76e
2015-11-23 07:48:20 +05:00
Glenn Watson
f2ebfd8e0d servo: Merge #8559 - Include transform changes in list that cause incremental reflows (from glennw:transform-layers); r=pcwalton
Also ensure that 3d translations get layers.

Fixes #8329.

Source-Repo: https://github.com/servo/servo
Source-Revision: c19b01c2f4acdccf140e65145c8915acc6fbe59c
2015-11-21 01:58:18 +05:00
Martin Robinson
e823f4d009 servo: Merge #8334 - Eliminate LAYERS_NEEDED_FOR_DESCENDANTS flag (from mrobinson:eliminate-layers-needed); r=pcwalton
This flag is no longer necessary, because stacking contexts can now
create layers lazily for content that needs to be stacked above a
layer. This should reduce the number of layers on pages, hopefully
reducing overdraw.

Source-Repo: https://github.com/servo/servo
Source-Revision: acc0bf68736d6e4aee2e370bf91fc2465415aa6e
2015-11-05 06:34:11 +05:00
Glenn Watson
33ea08d237 servo: Merge #8306 - Change overflow calculation to be calculated after compute_absolute_position (from glennw:fix-abd-overflow); r=pcwalton
Also include absolutely positioned elements in the overflow rect calculation.

Fixes #7797.

Source-Repo: https://github.com/servo/servo
Source-Revision: ca56ebbb09f3c258d10e7a7fa276d42fe258d893
2015-11-04 07:45:58 +05:00
Patrick Walton
07e75d84ec servo: Merge #8299 - Fix several bugs causing the page to reflow on every mouse move event (from pcwalton:dont-reflow-on-hover); r=mbrubeck
After all these changes are applied, Hacker News and GitHub only repaint and reflow nodes that actually have hover styles applied when the mouse moves over them.

r? @mbrubeck

cc @bholley

Source-Repo: https://github.com/servo/servo
Source-Revision: 36c5dd4c8c543ed6767fe9dd367281b292d68dba
2015-11-04 05:58:46 +05:00
David Zbarsky
73f9e4ad42 servo: Merge #7400 - Allow more valid use of calc expressions (from dzbarsky:angle); r=mbrubeck
Source-Repo: https://github.com/servo/servo
Source-Revision: e72bd1437c667d5429f2e288701ae99aac5c4b4e
2015-11-02 12:16:43 +05:00
Corey Farwell
8a0a8b0b2d servo: Merge #8279 - Fix some rust-clippy violations (from frewsxcv:clippy-fixes); r=eefriedman
Source-Repo: https://github.com/servo/servo
Source-Revision: 913ac568750502087a7f1693b3657a24cefd2460
2015-10-31 06:21:47 +05:00
Eli Friedman
bccbcd6ff3 servo: Merge #7825 - Fully implement the "align descendants" rule for div (from eefriedman:div-align); r=mbrubeck
This adds -servo-left and -servo-right to complement -servo-center.

~~This intentionally doesn't try to address issue #7301.~~  Commit added to address #7301.

Source-Repo: https://github.com/servo/servo
Source-Revision: ab42ca42967354cba08d1dca83aa99a637bd7a6b
2015-10-08 12:20:55 -06:00
Martin Robinson
9b83003aec servo: Merge #7804 - Simplify stacking context creation (from mrobinson:cleanup-stacking-context-creation); r=pcwalton
Have Fragment::create_stacking_context understand which stacking
contexts need layers and which do not. This simplifies the way it is
called and eliminates a bunch of code.

Source-Repo: https://github.com/servo/servo
Source-Revision: bb7742eecf00dd4cb5bfcbafcae36d928a5b8b89
2015-09-30 18:11:29 -06:00
Glenn Watson
5c835e208c servo: Merge #7795 - Split Au type into separate crate, with minimal dependencies (from glennw:app-units-crate); r=SimonSapin
Source-Repo: https://github.com/servo/servo
Source-Revision: 35888e5a1d48511ec54ddf8c58f1c7b0c47c5d3c
2015-09-30 15:19:33 -06:00
Patrick Walton
990677d856 servo: Merge #7423 - layout: Make the compositor rather than layout determine the position of each iframe (from pcwalton:iframe-stacking-context-position); r=glennw
The old code that attempted to do this during layout wasn't able to work
for multiple reasons: it couldn't know where the iframe was going to be
on the page (because of nested iframes), and at the time it was building
the display list for a fragment it couldn't know where that fragment was
going to be in page coordinates.

This patch rewrites that code so that only the size of an iframe is
determined during layout, and the position is determined by the
compositor. Layout layerizes iframes and marks the iframe layers with
the appropriate subpage ID so that the compositor can place them
correctly.

Closes #7377.

Source-Repo: https://github.com/servo/servo
Source-Revision: a0cb657fe80859dd8862361631268479d1045432
2015-09-29 19:26:49 -06:00
Matt Brubeck
82b4834d83 servo: Merge #7771 - Use the correct container size in compute_overflow (from mbrubeck:rtl-stacking-context); r=pcwalton
Fixes #7768 - positioning of RTL stacking contexts. r? @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: e68bd8d4ffc7f2cd9511999760c7a67418a853e1
2015-09-28 18:57:08 -06:00
Ravi Shankar
62e8ea2732 servo: Merge #7698 - sorted the declarations in various files (from Wafflespeanut:sorting); r=frewsxcv
This is a direct extract from my abandoned PR for a lint (#7546), along with some rather clumsy modifications (only on `components/script/dom/mod.rs` and `components/style/lib.rs`), because I had to sort some of the files again to make peace with tidy, which hasn't been educated about sorting yet!

Source-Repo: https://github.com/servo/servo
Source-Revision: a7208869f2903e36f9b2f540b55b50283d7df466
2015-09-23 15:02:56 -06:00
Brandon Fairchild
704178a0dd servo: Merge #7662 - Check for multiple import blocks separated by whitespace (from nerith:import); r=frewsxcv
Fixes #7381.

Source-Repo: https://github.com/servo/servo
Source-Revision: a0d3c9223f09757124b1520c4f17e94fa8bbe249
2015-09-19 13:34:51 -06:00
Martin Robinson
4405d29b06 servo: Merge #7587 - Ensure unique LayerIds for pseudo-elements (from mrobinson:layer-id); r=pcwalton
Currently pseudo-elements, like the fragments created for ::before and
::after, with layers will have the same LayerId as the body of their
owning fragments. Instead all LayerIds should be unique.

Fixes #2010.

Source-Repo: https://github.com/servo/servo
Source-Revision: cf13e806fe2f4cf5ad5f30efd16d7bd3f501f8b3
2015-09-17 08:53:39 -06:00
Michael Howell
62fd699374 servo: Merge #7588 - Actually store the overflow for inline-block elements (from notriddle:master); r=pcwalton
Fixes #7571

Source-Repo: https://github.com/servo/servo
Source-Revision: 9e914ca0db2820b365c06deedb8b5325c63c007b
2015-09-17 00:53:04 -06:00
Patrick Walton
63f54192f4 servo: Merge #7550 - layout: Defend the block formatting context speculation against going wrong in the presence of blocks that overflow in the inline direction (from pcwalton:block-formatting-context-overflow); r=mbrubeck
Makes the Google search result links appear.

Closes #7298.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: c3f9e1813ac93d0e143397ea5df9d4e5bc452d73
2015-09-11 10:03:39 -06:00
Martin Robinson
568dda00c6 servo: Merge #7563 - Layerize StackingContexts that are on top of layers (from mrobinson:layerize-stacking-contexts); r=pcwalton
StackingContexts that should be painted on top of StackingContexts that
are already layerized should automatically get their own layer. This
will ensure proper painting order.

Source-Repo: https://github.com/servo/servo
Source-Revision: c0381c732569b9abe6282c6c750533bc271a2019
2015-09-09 10:52:56 -06:00
Mathieu Rheaume
6eb390f794 servo: Merge #7556 - Remove unnecessary mut on variables declared in components/layout/block.rs (from ddrmanxbxfr:MutabilityCleanup); r=Ms2ger
Small cleanup over mutable variables in components/layout/block.rs.

Thanks for looking into it!

Source-Repo: https://github.com/servo/servo
Source-Revision: 282f9ade931342e9cd1ae72fde9dd9f88cb5b34a
2015-09-08 00:28:42 -06:00
Patrick Walton
d96e59afa2 servo: Merge #7533 - layout: Use a special path that treats margin: auto as zero for inline-block inline size computation (from pcwalton:inline-block-margin-auto); r=mbrubeck
Places the search icon in the right place on the Google SERPs.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 0bc7ad9b08d3ae978be4a95687025f00cfcff312
2015-09-04 21:53:17 -06:00
Patrick Walton
658d198dc6 servo: Merge #7544 - layout: Stop double-counting position: relative offsets for stacking contexts (from pcwalton:stacking-context-relative-offset); r=mbrubeck
Fixes the location of the gear menu on the Google SERPs.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 7df4ff7572bf131aca3643d078dfe7823b3fc347
2015-09-04 12:55:04 -06:00
Manish Goregaokar
46699136ac servo: Merge #7536 - More clippy fixes (from Manishearth:clippyfix); r=Ms2ger
Elided almost all the lifetimes and removed needless returns. Mostly done by sed + manual fixes.

r? @nox

Source-Repo: https://github.com/servo/servo
Source-Revision: c2c2646d37614ece5869af861993c3d619f6e003
2015-09-04 07:59:04 -06:00
Simon Sapin
3d8a9be409 servo: Merge #7496 - Implement CSS3 Calc (from servo:calc_); r=SimonSapin
This is #7185 with one commit added to make it build merged with master, which got support for the `ch` unit in the meantime.

Source-Repo: https://github.com/servo/servo
Source-Revision: a547ae6826cf171c42b090408a4c20d58d1829d9
2015-09-02 02:33:18 -06:00
Patrick Walton
8b60eb6fbe servo: Merge #7313 - layout: Make overflow calculation take relative percentages into account (from pcwalton:position-relative-percentage-overflow); r=mbrubeck
This necessitated changing overflow to be calculated by the parent flow
if relatively positioned children are present. That is because the
overflow regions cannot be calculated without knowing relative offsets,
which themselves cannot be calculated without knowing the parent size
(because of percentages). To accomplish this without sacrificing
parallelism in the non-relative case, this patch splits overflow into
"early" and "late" computation. Late overflow computation cannot be
parallelized across children, while early overflow computation can.

Makes the "Apple Music" text show up over the full-bleed promotional
background on apple.com.

r? @SimonSapin -- would appreciate a look over the iframe test case that was changed.

Source-Repo: https://github.com/servo/servo
Source-Revision: dcaf66397a06246b9b4fdca3a10af1508a11f1e8
2015-09-01 12:33:07 -06:00
erneyja
21488105b6 servo: Merge #7468 - Making test-tidy check that = have space after them (from JoshTheGoldfish:Issue7460); r=jdm
For issue #7460. Need to ensure compatibility with #7390.

Source-Repo: https://github.com/servo/servo
Source-Revision: 15de679f115f06a8ce33625d77e820b049730d4b
2015-09-01 08:33:02 -06:00
Patrick Walton
fc73188b05 servo: Merge #7291 - layout: Centralize the logic that determines whether fragments get layers in the fragment (from pcwalton:has-layer-flag); r=mbrubeck
…so that it can be activated when we're forcing
the creation of extra layers due to positioned descendants that
themselves have layers.

The newly failing tests were tests that accidentally passed due to
incorrect stacking order.

Closes #7281.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 7945c174a6f90f3809a6d60f392a94e0ce10f021
2015-08-22 15:56:05 -06:00
Johann Tuffe
25ce9ab4be servo: Merge #7265 - Add alphabetical order check for use statements (from tafia:tidy-use); r=Ms2ger
close #7112

Source-Repo: https://github.com/servo/servo
Source-Revision: a5fbb2f2a6fa79755f975feff2435abb6a5dd0e9
2015-08-20 07:43:56 -06:00
Patrick Walton
6d77eb570d servo: Merge #7274 - layout: Make table cells' minimum inline sizes override explicitly specified widths if the latter are too small (from pcwalton:table-minimum-width); r=mbrubeck
Improves ebay.com.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 30a1339ed1f57819bcd6b3e0d9e5d5d9d097d6e2
2015-08-19 03:20:37 -06:00