about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
...
* buffer, dom: fix stylesheet leaksbptato2025-03-022-4/+1
|
* loader: merge status and header packetsbptato2025-03-014-47/+23
| | | | | | | We sent the two packets at the same time anyway. (Status could have been sent earlier in some cases, but there is no point - it's unused until after all headers have been received.)
* Refactor bufreader, bufwriterbptato2025-03-0118-492/+468
| | | | | This adds a runtime check to packet readers to ensure that all fds have been read, and switches to seqs for packet writers.
* nc: remove redundant quitbptato2025-03-011-1/+0
|
* dynstream, console: remove DynFileStreambptato2025-02-267-70/+45
| | | | | Conflating buffered streams with non-buffered streams is generally a bad idea.
* dynstream: remove exceptionsbptato2025-02-2633-503/+501
| | | | | | | | | | | | | Now we just pass down the value of n and check errno, plus readDataLoop/writeDataLoop returns a bool indicating whether it failed. For now this seems to work OK, but maybe I'll add a better abstraction in the future. EOFError is still used for handling failed packets; this is brittle, and should be replaced once we have a proper buffering mechanism for them. (That will also let us kill BufStream.) Unrelated: this also fixes a bug in buffer with cacheId.
* loader: do not refcount ctxbptato2025-02-251-96/+94
|
* tempfile: merge into pager/loaderbptato2025-02-253-24/+23
| | | | | | | | and throw out the conflict resolution logic; it doesn't matter much if we override an old cache file, as it should have been cleaned up anyway. I've also replaced dirExists + createDir with a single mkdir at call sites. If it fails, so be it.
* dom: add HTMLTimeElement, fix HTMLDetailsElement#openbptato2025-02-212-0/+10
|
* Fix a testbptato2025-02-211-0/+2
|
* pager: inherit history flag on reloadbptato2025-02-211-1/+2
|
* pager: add API to set search regexbptato2025-02-201-4/+18
|
* Update docsbptato2025-02-205-256/+315
|
* javascript: fix finalizers with non-RootRef derived objectsbptato2025-02-203-7/+11
| | | | | | We were calling the wrong getTypePtr. Also, fix some manual tests.
* env: shim pushStatebptato2025-02-201-0/+8
| | | | not standard-compliant, but better than nothing
* performance: stub getEntries*bptato2025-02-201-0/+12
|
* color: small cleanupbptato2025-02-201-11/+9
|
* select: do not reverse video on cursorbptato2025-02-201-0/+3
| | | | it looks ugly
* term: use so, se for reverse videobptato2025-02-201-3/+3
|
* dom: add HTMLOptionsCollection setterbptato2025-02-201-0/+20
|
* render: propagate offset to positioned block child before clip box inheritancebptato2025-02-194-8/+16
| | | | also, fix a typo
* uri2html: uri-decode entriesbptato2025-02-191-1/+2
|
* dom: do not reflect name on all elementsbptato2025-02-192-3/+19
|
* fromjs, javascript: optimize out class name registrybptato2025-02-199-66/+55
| | | | | | | | 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.
* render, pager: fix canvas background painting orderbptato2025-02-199-19/+51
| | | | | | | | | | 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.)
* tojs: clean up getTypePtrbptato2025-02-191-19/+31
|
* Fix testbptato2025-02-182-6/+1
| | | | ...
* layout: fix nested fixed boxesbptato2025-02-183-5/+24
|
* sheet: hash :root, :link pseudo classesbptato2025-02-183-41/+66
| | | | | | :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).
* ua.css: set white-space pre for link markerbptato2025-02-181-1/+2
|
* Add mark-links featurebptato2025-02-1812-25/+107
| | | | ref. https://todo.sr.ht/~bptato/chawan/43
* layout: implement negative z-indexbptato2025-02-1810-131/+295
| | | | Ugly, but works. I think.
* box: use singly linked list instead of seq for childrenbptato2025-02-173-23/+40
| | | | | | | | | | 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.)
* render: respect stacking context for inline boxesbptato2025-02-174-23/+47
| | | | | | | | | | | | 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.)
* layout: position absolute boxes relative to their parentbptato2025-02-169-70/+97
| | | | | | | | | | | | 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.)
* client: remove client getterbptato2025-02-152-5/+2
| | | | Undocumented, plus and globalThis/window are enough.
* javascript: fix multiple registerType statements on same typebptato2025-02-151-2/+2
| | | | Fixes setTimeout etc. not working on client.
* layout: skip Cf charactersbptato2025-02-152-1/+7
| | | | We cannot handle these yet.
* cssparser: optimize a bitbptato2025-02-152-19/+17
| | | | It would be nice to at least make it single-pass.
* catom: toStr -> $bptato2025-02-154-69/+36
|
* xhr, event, catom: fix some bugsbptato2025-02-1515-274/+333
| | | | Event handler functions can be set twice now.
* quickjs: fix some bindingsbptato2025-02-151-1/+11
|
* buffer: wait for scripts in headless modebptato2025-02-156-27/+72
| | | | | Dump mode remains the same, except now it can be controlled in config.toml as well.
* buffer: remove estream, fdbptato2025-02-142-7/+4
|
* dom: store pseudo-element computed values in a seqbptato2025-02-144-17/+20
| | | | | A map isn't so bad with three pointers, but it won't be viable once we start adding more pseudo-elements.
* csstree, cssvalues: add non-numeric counters, japanese-formalbptato2025-02-147-127/+161
| | | | plus refactor a bit
* csstree, cssvalues: implement counter()bptato2025-02-137-47/+211
|
* csstree, layout: more refactoringbptato2025-02-139-509/+431
| | | | | Base InlineBox is a fair bit smaller now, and (most) strings are cached using RefString.
* catom: make factory globalbptato2025-02-1313-341/+238
| | | | | This isn't great, but neither was passing around a pointer that pointed to a single object.
* dom: add DocumentType name, publicId, systemId gettersbptato2025-02-131-3/+3
|