| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
| |
|
|
|
|
| |
no idea why JS_NewCFunction3 is not public...
|
| |
|
|
|
|
| |
by storing capabilities as strings instead of cstrings.
|
| |
|
| |
|
| |
|
|
|
|
| |
ok now I understand why I made shareCachedItem crash...
|
|
|
|
| |
createTextNode is redundant...
|
| |
|
| |
|
|
|
|
| |
probably breaks with TLA
|
|
|
|
|
|
|
| |
It could be legitimate.
(Although I found it in a case where it likely isn't legitimate.
But that's another question...)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was breaking acid3 - occasionally. Fun times!
The bug occurred in a case where a Nim object failed to transfer
ownership to JS when
1. Nim object created
2. Nim drops reference, but JS keeps it
3. JS drops reference, but Nim keeps it (because of another Nim object
holding onto it)
4. JS acquires reference, Nim drops it
because in 4, JS got two references (per toJS behavior), and Nim didn't
get any.
The actual acid3 test, reduced:
L1 d = document.createTextNode("iteration " + i + " at " + d);
Text JS1 -> Nim1
Anchor 0
L2 document.createElement('a')
Text JS1 -> Nim1
Anchor JS1 -> Nim1
L3 .appendChild(d);
Text JS1 -> Nim2
Anchor JS1 <- Nim1 <-> Nim1
L4 d = d.parentNode;
Text JS1 <- Nim1
Anchor JS2 -> Nim1 <-> Nim1
^^^ bug!
After this patch, the last line looks like
Anchor JS1 -> Nim2 <-> Nim1
(I haven't been able to reduce the bug to a test case that doesn't
have to run for seconds :/ triggering the GC manually doesn't cut it
for some reason.)
As noted in the comments, the implementation isn't optimal. I've
described a hack there that could be used to increase performance;
we'll see if it's actually needed.
|
|
|
|
| |
useful in situations where allocations change program behavior
|
| |
|
| |
|
|
|
|
|
| |
Also removed the redundant pushPositioned/popPositioned calls in
popPositioned.
|
|
|
|
|
|
| |
Nim doesn't consider included files when recompiling C files, which
would sometimes lead to fixes not being compiled in without a clean
build.
|
|
|
|
|
| |
All uses of these could be delegated to other processes with more
privileges.
|
|
|
|
|
| |
This means we can now use about:downloads for downloads.
Plus it shaves off some ks from the distribution.
|
|
|
|
|
|
| |
<media-condition-without-or> works correctly once again.
ref. https://todo.sr.ht/~bptato/chawan/46
|
|
|
|
|
| |
clipBox must not be allowed to start outside the canvas, or
paintBackground will happily try to setTextStr in a negative position.
|
|
|
|
|
| |
Redirection no longer preserves the previous cursor position, so
gotoAnchor is now allowed to override it.
|
|
|
|
|
|
|
|
|
| |
And clean up the function, while we're at it.
ref. https://todo.sr.ht/~bptato/chawan/45
(The submit bug is unrelated, just something I discovered while testing
nextHist & prevHist.)
|
|
|
|
| |
My bad; not present upstream.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since toJS doesn't create a new value, `node' must be dup'd if it is
a JSValue.
Also, forbid .jsset on JSValue as it was broken as well and it's not
obvious what the intention is when using it. (Probably it should free
the old value, but did the user think of setting it? :P)
I can see why I made toJS not dup the value - to make returning
consistent with Nim's semantics - but it really makes things
confusing... implicitly behaving as lent might be better, albeit less
convenient.
|
| |
|
| |
|
|
|
|
| |
Also, some more work on the unification of inline & block layouts.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
ref. https://todo.sr.ht/~bptato/chawan/44
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* reinit line after outer block height is known
* do not set wrap in finishLine preceding outer block layout
* attach pending inline floats to line boxes
* unify flow a bit more
The last two points mean that we now (mostly) handle inline floats
like block floats, which is great because only the latter ever worked
properly.
(Well, margin resolution still needs work...)
|
| |
|
| |
|
| |
|
|
|
|
| |
Either this is unnecessary, or it's hiding a bug.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Anonymous inline boxes were blocking progress on layout caching, so they
are now gone. Instead, we handle them in layoutInline (which meanwhile
has spaghettified to beyond comprehension... now it's a special case
of inner BlockBox (kind of?) - incredibly, it still passes tests :P)
This seems to match what major browsers do as well; some test cases were
updated to reflect the "improved" rendering this brings.
Next I'd like to remove anonymous table boxes by generating them in
cascade. Then it should be straightforward enough to at least reuse
flow roots on relayout.
(And clean up flow layout...)
|
| |
|
| |
|
|
|
|
| |
Both simpler and more efficient.
|
| |
|