aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/inline.rs
Commit message (Collapse)AuthorAgeFilesLines
...
| * layout: Rewrite clipping to be per-display-item instead of havingPatrick Walton2014-10-131-12/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a separate `ClipDisplayItem`. We push down clipping areas during absolute position calculation. This makes display items into a flat list, improving cache locality. It dramatically simplifies the code all around. Because we need to push down clip rects even for absolutely-positioned children of non-absolutely-positioned flows, this patch alters the parallel traversal to compute absolute positions for absolutely-positioned children at the same time it computes absolute positions for other children. This doesn't seem to break anything either in theory (since the overall order remains correct) or in practice. It simplifies the parallel traversal code quite a bit. See the relevant Gecko bug: https://bugzilla.mozilla.org/show_bug.cgi?id=615734
* | Change accidental println to debug macro.Glenn Watson2014-10-141-2/+2
|/
* auto merge of #3650 : pcwalton/servo/give-up-on-not-splitting, r=glennwbors-servo2014-10-131-281/+200
|\ | | | | | | | | | | | | | | | | | | | | I don't think it will be possible to avoid splitting fragments in the presence of `vertical-align`, because one `ScannedTextFragment` could potentially be split into arbitrary many fragments, each having its own vertical position that can influence layout of other fragments. This code also removes parts of `Range` that were no longer used. r? @glennw
| * layout: Refactor inline layout to remove the code that tried to avoidPatrick Walton2014-10-131-282/+202
| | | | | | | | | | | | | | | | | | | | | | splitting fragments. I don't think it will be possible to avoid splitting fragments in the presence of `vertical-align`, because one `ScannedTextFragment` could potentially be split into arbitrary many fragments, each having its own vertical position that can influence layout of other fragments. This code also removes parts of `Range` that were no longer used.
* | auto merge of #3631 : pcwalton/servo/idempotent-inline-size, r=glennwbors-servo2014-10-131-2/+12
|\ \ | |/ |/| | | | | | | | | | | | | | | This makes layout more idempotent, which is important for incremental layout. Also converts `is_root` to a set of flags and fixes a `TODO` concerning percentage inline heights of images. r? @glennw
| * layout: Store containing block inline-size separately rather thanPatrick Walton2014-10-131-2/+12
| | | | | | | | | | | | | | | | | | | | writing it to a temporary location and overwriting it. This makes layout more idempotent, which is important for incremental layout. Also converts `is_root` to a set of flags and fixes a `TODO` concerning percentage inline heights of images.
* | layout: Make content of `display: inline-block; overflow: hidden` visible.Patrick Walton2014-10-131-7/+8
|/
* removed restyledamageClark Gaebel2014-10-091-12/+2
|
* Incremental Style RecalcClark Gaebel2014-10-091-5/+14
| | | | | | | | | | | | | | | | | | | This patch puts in the initial framework for incremental reflow. Nodes' styles are no longer recalculated unless the node has changed. I've been hacking on the general problem of incremental reflow for the past couple weeks, and I've yet to get a full implementation that actually passes all the reftests + wikipedia + cnn. Therefore, I'm going to try to land the different parts of it one by one. This patch only does incremental style recalc, without incremental flow construction, inline-size bubbling, reflow, or display lists. Those will be coming in that order as I finish them. At least with this strategy, I can land a working version of incremental reflow, even if not yet complete. r? @pcwalton
* layout: Implement `z-index`.Patrick Walton2014-10-081-1/+8
|
* layout: `white_space::pre` should not yield ignorable whitespace.Patrick Walton2014-10-071-2/+3
| | | | Improves the Google home page.
* layout: Implement the correct hypothetical box behavior forPatrick Walton2014-10-011-39/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | absolutely-positioned elements declared with `display: inline`. Although the computed `display` property of elements with `position: absolute` is `block`, `position: absolute; display: inline` can still behave differently from `position: absolute; display: block`. This is because the hypothetical box for `position: absolute` can be at the position it would have been if it had `display: inline`. CSS 2.1 § 10.3.7 describes this case in a parenthetical: "The static-position containing block is the containing block of a hypothetical box that would have been the first box of the element if its specified 'position' value had been 'static' and its specified 'float' had been 'none'. (Note that due to the rules in section 9.7 this hypothetical calculation might require also assuming a different computed value for 'display'.)" To handle this, I had to change both style computation and layout. For the former, I added an internal property `-servo-display-for-hypothetical-box`, which stores the `display` value supplied by the author, before the computed value is calculated. Flow construction now uses this value. As for layout, implementing the proper behavior is tricky because the position of an inline fragment in the inline direction cannot be determined until height assignment, which is a parallelism hazard because in parallel layout widths are computed before heights. However, in this particular case we can avoid the parallelism hazard because the inline direction of a hypothetical box only affects the layout if an absolutely-positioned element is unconstrained in the inline direction. Therefore, we can just lay out such absolutely-positioned elements with a bogus inline position and fix it up once the true inline position of the hypothetical box is computed. The name for this fix-up process is "late computation of inline position" (and the corresponding fix-up for the block position is called "late computation of block position"). This improves the header on /r/rust.
* Implement simple layout for text, button, radio, and checkbox inputs. ↵Josh Matthews2014-10-011-2/+2
| | | | Implement simple interaction for checkboxes and radio buttons.
* Add support for <super> and <sup> tags. Fixes equations on wikipedia.Glenn Watson2014-09-301-15/+12
|
* Upgrade to rustc d2b30f7d3 2014-09-23Simon Sapin2014-09-291-1/+1
|
* Remove unneeded clones and add some comments.Glenn Watson2014-09-271-0/+3
|
* Improve acid2. Fix line height calculation. Text fragments get correct ↵Glenn Watson2014-09-261-9/+28
| | | | | | | | | enclosing element style. * Enabled acid2 on mac + linux. Updated the reference image. The only difference from the real acid2 now is the paint order and a 1 pixel horizontal offset on the nose. * Change line-height to be calculated correctly. * Apply enclosing element style to text fragments.
* layout: Implement `white-space: nowrap`.Patrick Walton2014-09-231-12/+32
| | | | Improves the Reddit header.
* Eliminate warningsKeegan McAllister2014-09-201-9/+9
|
* layout: Make percentage heights propagate through inline flows.Patrick Walton2014-09-191-0/+7
| | | | I found this random bug during an attempt to improve Wikipedia.
* Remove min/max functions from util::geometry. Use std::cmp instead.Simon Sapin2014-09-191-2/+2
|
* Fix line splitting in `white-space: pre` flowsMatt Brubeck2014-09-181-1/+1
| | | | | The newline position from one line was getting used repeatedly, causing extra "phantom" newlines in the following lines. Fixes #3413.
* Implement basic support for display: inline-block.Glenn Watson2014-09-131-14/+38
| | | | | | | This still needs a lot of work, but it covers the basic cases and improves wikipedia while passing all existing tests. Tweak reftest to deal with linux/travis black background.
* Cargoify servoJack Moffitt2014-09-081-0/+1170