| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
Instead of allocating a separate object for each box, just re-use
a single BlockBox on re-layouts.
This means that now the (block-level) tree is built in its final form in
the first pass.
(Inline boxes remain the same as before for now.)
|
|
|
|
|
| |
* fix list-style-position: inside
* get rid of ListItemBoxBuilder
|
|
|
|
|
|
|
|
|
| |
Captions are no longer positioned inside tables, yay.
Also, misc:
* rename some things for consistency
* clamp out of bounds rgb() values
* remove inherited property lookup table
|
|
|
|
|
| |
I wish we didn't need any, but fixing this for integers would be too
involved and the float64 one was causing problems now.
|
|
|
|
| |
removes elaborate table box type hierarchy that does nothing
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the following printed "2" instead of "12":
<div style=float:left>1</div><div style=display:flow-root>2</div>
This fixes the above problem in the laziest possible way: we relayout once
in the smallest possible space the BFC fits in when floats exist. See the
comment in the code for details.
As a nice bonus, this also fixes tables overlapping with floated boxes,
by pretending that they establish a BFC.
|
|
|
|
|
| |
The renderer cannot handle it yet, but at least this fixes pages that
expect overflow: hidden (etc.) to establish a new BFC.
|
|
|
|
|
| |
Including our own position is a mistake, since the BFC starts from the
inner box.
|
| |
|
|
|
|
| |
Fix percentage-based left/right etc.
|
| |
|
|
|
|
| |
for consistency
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of using the built-in (and outdated, and buggy) tables, we now
use libunicode from QJS. This shaves some bytes off the executable,
though far less than I had imagined it would.
Also, a surprising effect of this change: because libunicode's tables
aren't glitched out, kanji properly gets classified as alpha. I found
this greatly annoying because `w' in Japanese text would now jump
through whole sentences. As a band-aid solution I added an extra
Han category, but I wish we had a more robust solution that could
differentiate between *all* scripts.
TODO: I suspect that separately loading the tables for every rune in
breaksViWordCat is rather inefficient. Using some context object (at
least per operation) would probably be beneficial.
|
|
|
|
|
|
|
| |
Turn Offset, Size, etc. into arrays indexed by a DimensionType enum,
and use it to unify code that only differs in the dimension it is
computing for. (e.g. this lets us use the same code for flex row &
column layouts.)
|
|
|
|
|
|
| |
Turns out we also have to *expand* column width, if the specified column
width is too small *and* no unspecified column exists to take the rest
of the place.
|
| |
|
|
|
|
|
|
|
|
|
| |
If the total specified column width is larger than the table's allowed
width, we now resize them proportionally to the specified width.
This is quite important because many tables set the width to e.g. 50%
for "give me half of the table", instead of its true meaning "give me
half of the page".
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* png: add missing filters, various decoder fixes
* term: fix kitty response interpretation, add support for kitty image
detection
* buffer, pager: initial image display support
Emphasis on "initial"; it only "works" with kitty output and PNG input.
Also, it's excruciatingly slow, and repaints images way too often.
Left undocumented intentionally it for now, until it actually becomes
useful. In the meantime, adventurous users can find out themselves why:
[[siteconf]]
url = "https://.*"
images = true
|
|
|
|
|
|
| |
* use rootProperties so the root fragment does not color its children
* assert if the root gets inline blocks; this can (hopefully) no longer
happen.
|
| |
|
|
|
|
| |
Still far from perfect, but it's an improvement.
|
|
|
|
|
|
|
|
| |
sizes.space regulates content-box width, in which padding is not
included, so we must to subtract padding here.
(Neither is margin, but margin is applied by outer layout, in this case
flex itself, so it's not relevant here. Not to say it isn't broken...)
|
|
|
|
|
|
| |
If we are going to move out the child's offset, then we must also tell
the child where it starts so it can behave correctly when it encounters
exclusions.
|
|
|
|
|
|
|
|
|
|
|
| |
Turns out our shrink-to-fit emulation was inadequate: it assumed all
floats are positioned on a separate line, which is the *opposite* of
what we want, as that would be the behavior of min-content.
Now we instead sum together the width of all floats and the widest
non-floating child, and then clamp that to the target fitContent width.
This correctly gives us max-content width in the first pass, still
without having to actually position the floats.
|
| |
|
|
|
|
|
|
| |
* separate params with ; (semicolon) instead of , (colon)
* reduce screaming snake case use
* wrap long lines
|
|
|
|
| |
we also have to move the inner box offset to the parent
|
|
|
|
|
| |
This allows us to unify BlockBox instantiation and block-level inner
layout calls.
|
|
|
|
|
|
| |
* fix percHeight not being passed down properly
* simplify addTableCaption; get rid of hack that turned caption outer
height into inner height
|
|
|
|
| |
it can happen when do_reshape is called before any parsing happens.
|
|
|
|
|
|
|
|
| |
it's better than nothing. I suppose.
(Two-value flex syntax is encouraged even by the standard, so it gets
used a lot, and that sets 0, not flex-basis: auto, so not having
flex-basis breaks too many things.)
|
|
|
|
|
|
|
| |
* do not re-resolve FlexPendingItem sizes; it's pointless and it breaks
percentage sizes
* fix some bugs in `flex' shorthand parsing
* add `flex-flow' shorthand
|
| |
|
|
|
|
|
|
|
|
|
| |
Still far from being fully standards-compliant, or even complete, but it
seems to work slightly less horribly than having no flexbox support at
all on sites that do use it.
(Also includes various refactorings in layout to make it possible at all
to add flexbox.)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
It seems I never properly converted the table cell (pre-)sizing code
to use SizeConstraints, so it was still in a half-working state where
it broke down e.g. on nested tables.
* move auto check to canpx
* simplify convoluted and broken table cell size calculation into
something that actually works
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Here we are restricting the float to the same width constraint as its
parent, so we must add offset.x both when the float is larger than this
constraint *and* when the float fits into the constraint.
An example of what this fixes:
<div style="padding-left: 10em; background: green">
<div style="float: right; background: red">
wat
^ previously the float was positioned as if the padding had been on the
*right*, because it did not take into account offset.x.
|
|
|
|
|
|
|
| |
aaaaa
(this was even worse than the previous one, of course caused by the
fix...)
|
|
|
|
| |
it would get into an infinite loop with line-height: 0 and floats
|
|
|
|
|
| |
it's pointless to do otherwise, and results in inconsistencies between
line positioning and background coloring.
|
|
|
|
|
|
| |
This is still a more conservative approach than completely disabling
line-height. It seems to work better than preserving rounded line-height
in all cases, anyway.
|
|
|
|
|
|
|
| |
Instead of adding a new area for every single line, extend already
existing areas when possible.
(This was my original plan but I got lazy.)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Specifying the background area as three LayoutUnit pairs sounds clever,
but breaks down for text-align: center.
* store line Y offset in LineBox - this is necessary to pass down areas
we need to paint
* refactor addHorizontalLine loop; remove mystery "If necessary, update ictx's
width" line that used to be labeled "TODO this seems meaningless" and indeed
seems meaningless now (I am prepared to deeply regret this later)
* replace broken & convoluted startOffset/endOffset/size with a simple
seq of offsets + sizes
|
| |
|
|
|
|
|
|
|
| |
* remove unnecessarily duplicated code (probably a copy-paste error)
* apply UNIT_PERC computed widths for table cells too (just base it on
sizes the table receives)
* remove unnecessary parameters in some procs
|