| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
| |
also, fix a typo
|
| |
|
|
|
|
|
|
|
|
| |
Instead of hashing the class name for isInstanceOf, we now just reuse
the Nim type pointer -> JSClassID map, which should be more efficient.
This removes getClass and hasClass; these can be replaced by just
reusing the class ID returned from registerType.
|
|
|
|
|
|
|
|
|
|
| |
We were painting the background box in render for dump mode, but this
conflicted with the standard requirement that the canvas be painted
before other elements. So now we handle this directly in the pager.
Conveniently enough, this also fixes the issue of canvas color adding
pointless spacing to pages (which often made the selection feature less
useful.)
|
| |
|
|
|
|
|
|
| |
:root is used on the UA sheet, so it's quite important.
:link, :visited can be treated as shortcuts (although :visited never
matches right now).
|
|
|
|
| |
ref. https://todo.sr.ht/~bptato/chawan/43
|
|
|
|
| |
Ugly, but works. I think.
|
|
|
|
|
|
|
|
|
|
| |
Mainly because the seq was hindering further improvements.
I don't expect performance or memory usage to change much; leaf nodes
now store one pointer more, but parent nodes no longer pay for the
overhead of a seq.
(FWIW, other browsers seem to be using linked lists for this, too.)
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also, eliminate the offset attribute in StackItem by just taking
render.offset from the nearest ancestor as the base.
That leaves us with clipBox, which I'm not yet sure how to get rid of.
Its current implementation is certainly wrong: `position: absolute'
should really use its absolute container's clip box. It is however
correct for `position: relative' in its current form.
(One way would be to cache it inside CSSBox, like we do offset.)
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also fixes an invisible bug where inline-block child absolutes were
queued multiple times.
This adds a pointer to the parent box for CSSBox objects, which isn't
great, but the alternatives (maintaining an explicit stack or adding
another tree traversal) were overly complex and/or too inefficient.
On the flip side, now it should be possible to do both stacking contexts
(with negative z-index) and overflow tracking in layout. (I think.)
|
|
|
|
| |
Undocumented, plus and globalThis/window are enough.
|
|
|
|
| |
We cannot handle these yet.
|
|
|
|
| |
It would be nice to at least make it single-pass.
|
| |
|
|
|
|
| |
Event handler functions can be set twice now.
|
|
|
|
|
| |
Dump mode remains the same, except now it can be controlled in
config.toml as well.
|
| |
|
|
|
|
|
| |
A map isn't so bad with three pointers, but it won't be viable once we
start adding more pseudo-elements.
|
|
|
|
| |
plus refactor a bit
|
| |
|
|
|
|
|
| |
Base InlineBox is a fair bit smaller now, and (most) strings are
cached using RefString.
|
|
|
|
|
| |
This isn't great, but neither was passing around a pointer that pointed
to a single object.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For now, the skeleton remains in layout. Eventually it should be
lazily constructed during the actual layout pass (thereby making layout
"single-pass" (sometimes :p))
The end goal is to do it all in styledNode.children, so that caching can
be as simple as "next box = find next matching cached box ?? make new".
This does mean that the internal structure of cached boxes will always
have to be reconstructed, but I don't see a better way. (I suppose it
still remains possible to optimize out the unnecessary layout pass when
only a repaint is needed (e.g. color change) by modifying computed
values in-place.)
|
|
|
|
|
| |
The marker placement in that test is wrong, but that isn't really a
result of this change.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
* remove inlineGroup - it was completely pointless now, and was the
cause of some whitespace collapsing bugs
* fix a float bug made visible by the above change
* fix non-standard list item counter behavior
|
|
|
|
| |
just a waste of space
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Setting the width to max-content was supposed to be an optimization,
but it seems max-content has some issues when interacting with floats.
Arguably this is just hiding the bug, but my attempt to fix max-content
was not successful...
(That is to say, I suspect floats still behave strangely in tables.)
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
* do not trigger change event if selection did not change
* do not destroy old selection on option insertion steps
* position select popup correctly
* reflectors for disabled attribute
* immediately redraw container when select disappears
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* normalize flow baseline computation
* fix various margin collapsing bugs
* eliminate inlineStack
* eliminate push*
* derive BlockBox and InlineBox from CSSBox
This removes a pointer from BlockBox, and adds a pointer to both
BlockBox and InlineBox (type field). A net loss, but it makes the code
more manageable.
Plus, inline groups now need one less allocation, so overall it's not
that bad.
|
|
|
|
| |
unsure about the utility of this, but why not
|
| |
|
|
|
|
|
|
|
|
| |
Significantly more efficient in long running commands (as the context
switch is gone).
For many commands in quick succession... it replaces the fcntl with
a tcsetattr, so I guess it's the same?
|
|
|
|
|
|
|
|
|
|
| |
* fix iterator assertion failing if finalizer del's after incl
* fix strange mismatch in id
* fix missing HTMLOptionsCollection finalizer
* optimize refreshCollection
* fix root liveCollections not being updated by the finalizer
Now it shouldn't crash pages anymore.
|