| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
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
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
I'm not a fan, because it hides bugs. But working around the overflow
errors is starting to get unwieldy.
On 32-bit systems, we try to use compiler intrinsics as Nim does.
|
|
|
|
|
| |
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
|
|
|
|
| |
The standard says we should blockify. Alas, the standard is lying.
|
| |
|
|
|
|
| |
no need to alloc a seq for this
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Only available in "app" mode.
|
| |
|
| |
|
|
|
|
|
|
| |
you can't bisearch an unsorted map...
(also, turn on text styling for colored layout tests because it would
have caught this)
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
Now screen.width etc. works in the pager too.
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
For APIs that cannot be implemented in a privacy-friendly manner.
As a start, I've added accurate screen size queries; getComputedStyle,
getBoundingClientRect, etc. should follow. (We have a harmless
getComputedStyle already, but it's broken.)
Probably, things like JS-based scroll belong in here too, but I'm not
sure yet. (Perhaps autofocus should be reused instead?)
|
|
|
|
|
| |
It is still wrong in case the table is too small, but at least it fixes
the regression from 0971ad85.
|
|
|
|
| |
what was I expecting
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Welp, turns out I was overthinking it. CSS does not support inline
position: absolute at all, it just blockifies.
That does leave us with the question of "why does inline-block behave
differently than block?" Especially because both in Gecko and Blink,
getComputedStyle for absolute inline-blocks gives me "block", not
"inline-block", and yet there is the same difference in rendering when I
change the CSS.
I first thought it's a quirks mode issue, but standards mode doesn't
affect it. Wat.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
* isValidEscape was fairly pointless, and occasionally used incorrectly.
* "starts with an ident sequence" is normally called on the next 3
codepoints; on the one occasion where it isn't, just hardcode the dash
case.
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
| |
I didn't get it right :(
true is the default return value, and true + continue should resolve
to false.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a bit tricky, but it seems to work. It optimizes selectors in
the line of "div :hover" (note the space.)
Previously such selectors would add a hover dependency to pretty much
every element, and trigger a re-style for all elements that changed
their hover status. After this patch, when :hover and friends would
return false, they first try to match the element *without* pseudo
selectors, and only add their dependencies if the element would match
like that.
(Notably, it only does this for when :hover is false. Probably it would
help somewhat if we checked for the opposite with true too, but I'm not
sure how much.
For now, I'll keep it like this, and maybe try to further optimize it
later.)
|
| |
|
|
|
|
|
| |
Now we use the node index to optimize next/subsequent sibling
combinators.
|
|
|
|
|
|
| |
I want to use it in the UA sheet, so the loop won't cut it.
(Also fix a parsing bug that prevented "of" from working.)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
|