about summary refs log tree commit diff stats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* js: reorganize modules, update docsbptato2024-11-1521-57/+52
| | | | | | | most of it has already been moved to monoucha, and the rest fits better in other directories. also, move urimethodmap to config
* cssvalues: reduce CSSComputedValue sizebptato2024-11-145-91/+102
| | | | | | | 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.)
* layout: fix another flex sizing bugbptato2024-11-141-1/+8
|
* buffer: skip unnecessary reshape in some casesbptato2024-11-141-25/+26
|
* layout: remove inline paddingbptato2024-11-131-24/+5
| | | | like line height, this caused more trouble than it was worth
* chapath: fix a few more bugs, simplifybptato2024-11-132-65/+34
| | | | | | | | | * fix incorrect :- behavior * merge non-standard '${%VARIABLE}' syntax with regular syntax; now all internal variables are exported to the environment, so the behavior should be equivalent. * handle terminal symbol appropriately in all states * deny numeric curly substitutions
* config: resolve download-dir as path, update docsbptato2024-11-132-2/+4
| | | | | | | Turns out it's more useful to have env vars in the variable than to allow incomplete path names. Also, fix the disappearing backslash issue in docs.
* config.toml: respect TMPDIRbptato2024-11-121-6/+10
| | | | | also, fix a bug in the chapath parser so that param expansion actually works
* container: fix `U' cursor repositioning (really)bptato2024-11-122-25/+16
| | | | I swear this feature is cursed
* buffer: fix broken gotoAnchor behaviorbptato2024-11-125-90/+123
| | | | | | | | | | | | | | | | | 23beebe6 introduced a regression that broke gotoAnchor. This fixes that, plus a couple other long-standing gotoAnchor bugs: * If no anchor is found, do not dupe the buffer. Desktop browsers still add a history entry, while w3m prints an error. I've copied the latter because it makes more sense as a user, but this will have to be refined for the navigation API at some point. * If the anchor *is* found, then always jump to it, even if it's not visible. This was a limitation of relying on the line array, so now we rely on the box tree instead. (Sooner or later, the former must go anyway.) Also, fix `U' reload not restoring the position (hopefully this time for good).
* client: do not reopen istream if stdin is a ttybptato2024-11-121-6/+5
|
* url: reduce URL object size, simplifybptato2024-11-117-291/+208
| | | | | | | * query, fragment are now strings, not options * get rid of Host, Path types, now hostname/pathname are strings * fix ipv4 parsing error case * in file protocol, fix URL for dirlist without slash with a redirection
* client: run actions for mouse clicksbptato2024-11-101-12/+16
| | | | | stopgap measure until I think of a more flexible mouse configuration method
* dom: add replaceChild, requestAnimationFramebptato2024-11-104-7/+17
|
* cascade: adjust prefers-color-scheme based on terminal backgroundbptato2024-11-103-1/+3
| | | | also, default link color is now blue for light terminal backgrounds
* layout -> cssbptato2024-11-109-12/+12
| | | | as much as I wish it weren't, layout *is* css.
* dom: misc fixes & additionsbptato2024-11-092-0/+28
| | | | | | | | * fix cloneNode not cloning id/name atoms * fix HTMLOptionsCollection named item getter * fix HTMLCollection named item getter not refreshing snapshot * support named item getter for form * add basic createEvent
* dom: skip alternate stylesheets, add disabledbptato2024-11-092-6/+14
| | | | seems to work ok
* layout: improve image sizingbptato2024-11-091-24/+16
| | | | | fixes a bug where only setting max-height and width would not re-scale the image
* renderdocument: basic stacking context supportbptato2024-11-092-15/+51
| | | | | negative z-index and inline positioning are still not respected, but better than nothing I guess.
* Update monouchabptato2024-11-091-1/+1
|
* layout: adjust fixed positioningbptato2024-11-091-2/+12
| | | | | | | | | | | | | | | | | | In CSS, `position: fixed' either a) moves the box on scroll (with `@media screen'), or b) repeats the box on every page (with `@media print'). a) would completely mess up our document model, and even if it didn't, the renderer couldn't handle a redraw on every single scroll. b) sounds better, but still doesn't work because it's incompatible with `@media screen' semantics. e.g. in a) I can read text despite any banner on the bottom of the screen, because the box moves when I scroll, but in b), the same box will obscure some text on every single page. So instead, make the `position: fixed' containing box width: max(:root.width, 100vw); height: max(:root.height, 100vh)). This is completely non-standard, but at least both TOC-like fixed boxes *and* banners are placed somewhere that makes some sense.
* layout: fix a few more flex sizing bugsbptato2024-11-091-61/+84
| | | | | | | | * fix min-width, max-width, etc. not being accounted for properly on the main axis * fix fit-content sizing being overridden for flex items * fix baseline not being set * somewhat unrelated: fix firstBaseline not being set for block boxes
* dom: support all HTMLHyperlinkElementUtils gettersbptato2024-11-093-20/+64
|
* layout: fix initial flex item width calculationbptato2024-11-081-13/+32
| | | | | | | | | | | | | | | Before, the initial layout of a flex item would have inherited the parent's sizing constraint. This almost worked, except when a descendant of a flex item with an unspecified width would resolve its percentage against this incorrectly inherited width - per standard, this must resolve to auto. Also, the shrink case was wrong, because it did not scale the unit to the respective widths; the standard mandates this as well. Hopefully I got it right this time. Finally, this fixes positioned inline container blocks not being set as the absolute container.
* Fix some C warnings, more makefile vars, etc.bptato2024-11-081-1/+1
| | | | | | | * add some more env vars to makefile * remove fpermissive from GCC builds * update Monoucha * fix borked seccomp filter length safety check (ugh)
* poll: fix clear()bptato2024-11-072-3/+6
| | | | | setLen(0) inside the events iterator was wrong; it should have just set all items to -1.
* url: fix compilation on Nim 1.6.14bptato2024-11-075-28/+29
| | | | it handles side effects differently
* chaseccomp: update docs, remove redundant importbptato2024-11-071-2/+0
|
* luwrap: fix compilation on 2.0.8 and refactor a bitbptato2024-11-055-23/+16
| | | | ref. https://todo.sr.ht/~bptato/chawan/21
* url: fix crash on invalid ipv6 syntaxbptato2024-11-041-1/+1
|
* dynstream: fix crash on *BSDbptato2024-11-041-1/+4
| | | | turns out fchmod on sockets only works on Linux.
* utils, types: merge some modulesbptato2024-11-0330-315/+262
| | | | | * line, vector, matrix -> path * twtuni, charcategory -> twtstr
* renderdocument: recurse in renderBlockBoxbptato2024-11-031-54/+47
| | | | Looks like this no longer overflows the stack.
* layout: fix a small table bugbptato2024-11-021-2/+2
|
* dom: add localName, simplifybptato2024-11-021-16/+15
|
* layout: remove inline roundingbptato2024-11-022-6/+2
| | | | | | | | | It broke styles like "margin-top: -5px; padding-top: 5px", because the margin would be taken as-is, and the padding rounded to 0. Now they cancel each other out again. (I think I had added this to reduce error caused by line-height, but we don't have line-height anymore.)
* remove an empty filebptato2024-11-021-0/+0
|
* cssparser: fix parsing of unrecognized at rulesbptato2024-11-022-25/+20
| | | | + clean up a bit
* container: fix nil deref on cancelbptato2024-11-021-3/+4
|
* layout: fix yet another inline float bugbptato2024-11-011-1/+4
| | | | | | | | | you can't just set the BFC offset to your own offset when the BFC's origin is your inner offset. (in block layout, this is addressed by initBlockPositionStates & co, but we don't call that for inline because the offset is already resolved there anyway. so this is a special case)
* dom: fix <select> default state with size=1bptato2024-11-011-20/+14
|
* layout: simplify a bit, fix some inline float bugsbptato2024-11-012-113/+77
| | | | | | | | | | | | | | * simplify "positioned" value calculation: - don't include it in ResolvedSizes, since it's unused in most layouts - resolvePositioned for both absolute and relative positioning - use "size" instead of "space" for absolute positioning - include parent width in layout so that renderdocument does not have to account for it * return bottom margins as regular return values instead of var * fix child bottom margins being discarded in inline floats * fix inline float not including the parent block position in its BFC position
* config: fix relative includes with -Cbptato2024-10-311-2/+3
|
* dom: add HTMLSelectElementbptato2024-10-311-8/+76
|
* layout: refactor flow and fix some bugs in the processbptato2024-10-313-351/+318
| | | | | | | | | | | | * factor out `margin' field from box state * get rid of RootInlineFragment * `nested' -> `children' * get rid of repositionChildren pass; now we handle relative positioning and -cha-center/-cha-right separately * cha-center, cha-right no longer applies to floats * use consistent naming scheme for tests * fix float bottom margin strut not being flushed * fix inline floats changing non-fit-content width
* headers: fix formattingbptato2024-10-311-1/+1
|
* pager: fix borked error checkbptato2024-10-311-1/+1
|
* dynstream: restrict permissions to userbptato2024-10-311-0/+1
| | | | | the man page says this isn't really portable, but it's better than nothing
* chaseccomp: fix compilation with newest dash, misc changesbptato2024-10-311-3/+0
| | | | | | | | | | | | | | * fix matching on unstripped whitespace: caught after upgrading to upstream dash & chaseccomp wouldn't compile * add defines to ensure that we computed the filter length correctly * inline cut_label * EPERM on sigaction, sigprocmask, gettid, and kill on tgkill (so a crash doesn't trigger sandbox violations) * move SIGSYS handler to C and add one for the network The last change removes the stack trace from SIGSYS, but gives us the syscall number which is probably more useful. (Indeed, we don't even have a stack trace in release builds.)