| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
...and refactor applyValue in the process.
|
|
|
|
|
| |
We now compute styles on-demand, which is both more efficient and
simpler than the convoluted tree diffing logic we previously used.
|
|
|
|
| |
Now getComputedStyle works with pseudo-elements too.
|
|
|
|
| |
it can be a value type again
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
and once again, there was light...
Well, it barely works, but it's enough to get colors back on most sites.
Nested variables aren't supported for now, and shorthand expansion only
"works" for `background' (it's a hack).
Props to the W3C for introducing the C preprocessor to CSS - I was
starting to confuse it with JSSS after calc().
|
|
|
|
|
|
|
|
| |
Now StyledNode has an "element" reference, which refers to the element
it was derived from.
This reduces the object's size, removes the need for casting around
the "node" field, and also gets rid of a pointless cycle.
|
| |
|
|
|
|
|
|
|
|
|
| |
Untangled some nested arrays to reduce the number of intermediary seqs
in cascade, and collapsed the two rule def sorts into just one (per
pseudo element). This should make cascading somewhat faster.
Also, we now parse variables, but they aren't resolved yet.
Probably a seq won't cut it for var lookup...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.)
|
|
|
|
| |
less work for memset
|
|
|
|
|
|
|
|
|
| |
Regular select is now rendered as flex, and does not wrap.
This gets rid of the pointless whitespace before/after options.
multiple still looks weird, but maybe a bit less?
Probably we should just render it with pseudo-checkboxes, and drop the
special mode from select.nim.
|
|
|
|
| |
better than nothing
|
|
|
|
|
|
|
| |
In lite mode, it uses default window attributes.
Incidentally, this also untangles media query matching from cascade,
saving us a forward declaration hack (yay!)
|
| |
|
|
|
|
| |
The standard says we should blockify. Alas, the standard is lying.
|
|
|
|
| |
no need to alloc a seq for this
|
|
|
|
| |
Only available in "app" mode.
|
|
|
|
| |
Now screen.width etc. works in the pager too.
|
|
|
|
|
|
|
|
|
|
| |
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?)
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Now we use the node index to optimize next/subsequent sibling
combinators.
|
| |
|
|
|
|
| |
Lets us skip a couple pointless multiplications/divisions during layout.
|
|
|
|
| |
Uses an additional lower-case map for O(1) case-insensitive comparisons.
|
| |
|
|
|
|
|
| |
"Computed" was redundant; other types of values don't have a common
type.
|
| |
|
|
|
|
|
|
|
|
| |
Roughly halves the object's size, and gets rid of a large number of
allocations.
It could be compressed further into a bitmap, but I'm not sure if it's
worth the complexity.
|
| |
|
| |
|
|
|
|
| |
They are UA style.
|
|
|
|
| |
it's author style too
|
|
|
|
|
|
| |
Turns out the generics weren't really needed in the first place.
Also, StyledNode is now 16 bytes smaller.
|
|
|
|
|
|
|
| |
most of it has already been moved to monoucha, and the rest fits better
in other directories.
also, move urimethodmap to config
|
|
|
|
|
|
|
| |
far from perfect, but it's something.
(ideally, we should store enums in a bitmap instead of allocating a
GC'ed property for each of them.)
|
|
|
|
| |
also, default link color is now blue for light terminal backgrounds
|
|
|
|
| |
as much as I wish it weren't, layout *is* css.
|
| |
|
|
|
|
| |
it's effectively a dupe, except html wouldn't work in XML
|
|
|
|
|
|
| |
* split out CSSColor from CellColor; now CellColor is just 4 bytes
(which helps reduce FormatCell size)
* unify color function naming (still not perfect)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* stream: and passFd is now client-based, and accessible for buffers
* Bitmap's width & height is now int, not uint64
* no more non-network Bitmap special case in the pager for canvas
I just shoehorned it into the static image model, so it still doesn't
render changes after page load. But at least now it doesn't crash the
browser.
|
| |
|
|
|
|
|
|
|
| |
* cssvalues, twtstr: unify enum parsing code paths, parse enums by
bisearch instead of hash tables
* mediaquery: refactor (long overdue), fix range comparison syntax
parsing, make ident comparisons case-insensitive (as they should be)
|
| |
|
| |
|