| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
We now compute styles on-demand, which is both more efficient and
simpler than the convoluted tree diffing logic we previously used.
|
|
|
|
|
| |
Eventually the tree should be collapsed into the DOM, and StyledNode
should be created on the stack.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* switch from float64 -> float32; other browsers use 32-bit floats too
* specify integer size as 32-bit
* use NetworkBitmap for background-image value (currently just an
invalid dummy value)
* remove "none" property & value types
CSSValue's payload is always one word (plus another for the type tag).
CSSValues keeps its size, but no longer has to heap-alloc + refcount
word-sized CSSValues.
(On 32-bit systems, CSSValues might actually be larger than before,
but I expect it's still a net benefit with the removal of refcounting
and the switch to 32-bit floats.)
|
|
|
|
| |
we always do 2 passes
|
|
|
|
| |
better than nothing
|
|
|
|
| |
starting to run out of test case names
|
|
|
|
|
| |
This must not be handled by the tree builder, as that needlessly
complicates tree caching.
|
|
|
|
|
|
|
| |
In this case, it seems we have to wrap.
(It's still not quite there; replace flow-root with inline-box to see
another interesting bug...)
|
|
|
|
| |
We do not support sticky scrolling, but this much should still work.
|
|
|
|
|
|
|
|
| |
Turns out this doesn't work like I thought it does... the second
layout is always needed.
This probably means that it's possible to layout absolutes during flow
after all...
|
|
|
|
|
|
|
|
| |
* respect flex item starting margin on main axis
* pass left margin as offset input too -> fixes some sub-layout cache
inconsistencies
well, I *think* it does, but I haven't managed to find a case where it
changes anything... either way, at least the code is prettier now
|
| |
|
| |
|
| |
|
|
|
|
|
| |
It's probably possible to do it in layout, but it's way too hard.
Just do it in render.
|
|
|
|
|
| |
sticky, ruby, writing-mode: lots of complexity for little gain, and the
fallback works just as well (if not better)
|
|
|
|
|
|
|
| |
This way, it benefits from sub-layout caching. Which is great because
our flex layout likes to unnecessarily redo item layout...
Also, we now account for the bottom margin in flex items.
|
|
|
|
|
|
|
|
| |
Only root blocks for now; for non-roots, you'd have to cache exclusions
too, and that is a fair bit harder.
It isn't very noticable as an optimization, but it's a good first step
towards a cached layout.
|
|
|
|
|
|
|
|
|
|
| |
I'm not sure if this is the best way. On one hand, it probably breaks
text in some languages that cannot be represented in normal form.
On the other hand, some terminals may crash on such strange sequences
(or worse).
I'll just skip them for now, because it's marginally faster than
returning 0 from width. We'll see if somebody complains.
|
|
|
|
|
| |
* do not display submit/reset text with empty value
* fix erroneous blank placement with white-space: pre on new line
|
| |
|
|
|
|
| |
I don't like the extra flag, but I don't see a better way.
|
|
|
|
| |
this broke gotoAnchor in some cases
|
| |
|
|
|
|
|
|
|
| |
They are relative to the box's actual position, not that of the parent:
> For relatively positioned boxes, the offset is with respect to the
> bottom edge of the box itself.
|
| |
|
|
|
|
|
|
|
|
| |
They need some peculiar conditions to manifest, but the logic errors
are clear:
* padding contributing to intrinsic minimum size wasn't being clamped
* inline padding was being applied twice
|
|
|
|
|
| |
it has to accept percentage sizes too for intrinsic size clamping,
it seems
|
|
|
|
|
| |
It's a fair bit more accurate now on flex-heavy pages.
Image sizing remains a broken mess.
|
|
|
|
|
| |
It is still wrong in case the table is too small, but at least it fixes
the regression from 0971ad85.
|
|
|
|
|
|
| |
It was named "fragment" mainly because I added it back when there was
still a separate InlineBox type and I needed another name.
Now InlineBox is gone, and I'm tired of typing fragment.
|
|
|
|
|
|
|
|
| |
* fix clip for image
* switch back img's display to inline
* fix image width calculation without specified width/height
I'm not 100% sure if this is correct, but it certainly looks better.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Overflow pretty much requires scrollbars, but those wouldn't work in
dump mode, plus of course they would be a pain to implement. So as a
simple alternative:
* overflow: hidden, clip works as per spec.
* overflow: auto, overlay, scroll invert the intrinsic minimum size
clamping logic instead of adding a scrollbar.
What this concretely means, is that this
<pre style="overflow: scroll; height: 1em">
test
test
test
</pre>
will, instead of creating a scroll container, just override the
specified height.
This hack works surprisingly well, because CSS pretty much requires
setting height on scroll containers, so authors aren't incentivized to
set height on the parent container too (because the contents are already
sized appropriately).
One issue left is how to deal with overflow: hidden ancestors. For now,
I've made it so that it can spill for overflow-x, and always clips
on overflow-y, because it's much less likely to bleed into other
text horizontally than vertically. But there is definitely room
for improvement, e.g. we could track space requested by scrolling
children and expand parent boxes based on that.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Necessary for flex. Previously we just used the actual height, but that
didn't account for boxes that size themselves depending on the available
height (mainly just images for now).
This also irons out intrinsic min width calculation somewhat, squashing
several bugs.
I hope it works well. It is a significant change in size calculation,
so maybe there are still new bugs lurking.
|
|
|
|
| |
Lets us skip a couple pointless multiplications/divisions during layout.
|
|
|
|
|
| |
The test case attached is undefined in CSS 2.1, but css-sizing-3
wants us to just ignore the width property (I think).
|
|
|
|
|
|
|
| |
this is necessary too, now that I think of it
(well, table caption sizing is still half-broken, but that's a problem
for another day...)
|
| |
|
|
|
|
|
| |
If the contents are larger than the specified cell height, then it is
simply ignored.
|
|
|
|
|
|
| |
using div instead of / is sort of weird, but it makes it clearer if
we're dividing floats or layoutunits (and is already what the code
uses).
|
|
|
|
|
| |
"Computed" was redundant; other types of values don't have a common
type.
|
| |
|
|
|
|
| |
We can do this now that xminwidth is more accurate.
|
|
|
|
| |
better
|
|
|
|
| |
still not quite right, but it's slowly taking shape
|
|
|
|
| |
yeah idk
|
|
|
|
|
| |
Seems more compatible with websites that use smaller fonts + padding
for styled code tags.
|
|
|
|
|
|
|
|
| |
Gets rid of rounding errors when positioning images.
Theoretically this is possible with Sixel too, but as always, it's
ten times as difficult to implement as with Kitty, so I'll leave it
for later.
|