about summary refs log tree commit diff stats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* env: do not copy attrs, fix screen on clientbptato2024-12-285-29/+31
| | | | Now screen.width etc. works in the pager too.
* layout: fix a flex sizing bugbptato2024-12-271-5/+4
| | | | | it has to accept percentage sizes too for intrinsic size clamping, it seems
* cookie: remove broken third-party-cookie optionbptato2024-12-273-23/+4
| | | | | | | | | Looking at it closer, this never actually did what it advertised to do. It only affected first-party cookies from subdomains, but that has been fixed; third-party cookies were never supported in the first place. (In fact, even first-party cookies are still skipped unless directly received on navigation. This should probably be fixed.)
* dom: standard querySelector/All; type erase childrenbptato2024-12-272-27/+54
|
* dom: set elIndex to -1 for AttrDummyElementbptato2024-12-271-0/+2
|
* dom: expose getPropertyValuebptato2024-12-271-1/+1
|
* term: fix in-cell offset bug on kitty image scrollbptato2024-12-271-0/+5
| | | | | If the image has an offx or offy, then it means it is partially outside the screen, so its offx2/offy2 is already accounted for.
* CHA_CONFIG_DIR -> CHA_DIRbptato2024-12-273-4/+9
| | | | | | | It isn't really limited to config. It just happens to be in XDG_CONFIG_HOME because XDG basedirs suck. (W3M_DIR works similarly.)
* dom: add focus()bptato2024-12-273-2/+10
| | | | Respects autofocus.
* Update monouchabptato2024-12-261-1/+1
|
* layout: improve intrinsic minimum size calculationbptato2024-12-261-83/+104
| | | | | It's a fair bit more accurate now on flex-heavy pages. Image sizing remains a broken mess.
* jsencoding: fix nil deref on empty encode inputbptato2024-12-261-9/+9
|
* term: fix display-charset not being interpretedbptato2024-12-261-5/+5
| | | | Also fixes the -O option.
* Optimize some Option[string] outbptato2024-12-265-25/+29
| | | | toJS is generally more efficient
* env: fix taintEnabledbptato2024-12-261-1/+1
| | | | it should have been a function
* buffer: add "app" scripting modebptato2024-12-267-44/+80
| | | | | | | | | | For APIs that cannot be implemented in a privacy-friendly manner. As a start, I've added accurate screen size queries; getComputedStyle, getBoundingClientRect, etc. should follow. (We have a harmless getComputedStyle already, but it's broken.) Probably, things like JS-based scroll belong in here too, but I'm not sure yet. (Perhaps autofocus should be reused instead?)
* env: reflect user agent header in userAgentbptato2024-12-264-6/+10
|
* Strict def fixesbptato2024-12-221-2/+2
|
* main: add missing noreturnbptato2024-12-221-1/+1
|
* history: fix entry droppingbptato2024-12-221-0/+2
| | | | | next's pointer backwards must be updated too, or it the dropped ref will be erroneously displayed on the history screen.
* dom: optimize textContent, nodeValue; add nodeValue setterbptato2024-12-221-16/+31
|
* config: fix overriding substring bindingsbptato2024-12-222-10/+6
| | | | | | | | | | | | | | | | | It is unfortunately a breaking change, but the existing behavior was practically broken anyway. The only issue I can think of is that keybindings like `yy' now override `y', which previously worked because y (regrettably) calls feedNext. But those should be added to the default config anyway. (If a user really desires the old behavior, they can just re-bind y to cmd.buffer.copySelection after their own custom bindings. Config values are now stored in an ordered table, so this should work.) I've left the undocumented JS setter as it is, because the old behavior seems more useful there. (Perhaps there should be a separate function that behaves like toml?)
* Misc character display fixesbptato2024-12-2210-67/+35
| | | | | | | | | | | | | | | | | | * fix luwrap comparison function * strip high unicode controls in term/pager * use wcwidth in dirlist2html * remove combining category from strwidth * remove unused "disallowed" field from lineedit My initial goal with switching to wcwidth in dirlist2html was just to get rid of the outdated combining map in charwidth_gen. Then I realized that layout will normalize those out anyway, so we don't actually have to deal with them anywhere. Also, I found a few bugs in the process; high unicode control chars not being stripped out was a particularly bad one, as it allows for pages to mess up the terminal output. (Easiest way to replicate: just open a random binary file without this patch.)
* Add historybptato2024-12-177-46/+211
| | | | | It's still missing a "color visited links" feature, but it's better than nothing.
* twtstr: improve content type parameter handlingbptato2024-12-221-3/+28
| | | | | * accept quoted-string * quote values in setContentTypeAttr
* layout: resolve percentage width for auto table cellsbptato2024-12-211-9/+14
| | | | | It is still wrong in case the table is too small, but at least it fixes the regression from 0971ad85.
* cascade: actually, it should be inline-blockbptato2024-12-201-1/+1
| | | | what was I expecting
* cascade: blockify on position: absolute or fixedbptato2024-12-201-4/+4
| | | | | | | | | | | | | | Welp, turns out I was overthinking it. CSS does not support inline position: absolute at all, it just blockifies. That does leave us with the question of "why does inline-block behave differently than block?" Especially because both in Gecko and Blink, getComputedStyle for absolute inline-blocks gives me "block", not "inline-block", and yet there is the same difference in rendering when I change the CSS. I first thought it's a quirks mode issue, but standards mode doesn't affect it. Wat.
* box: InlineFragment -> InlineBoxbptato2024-12-204-150/+147
| | | | | | It was named "fragment" mainly because I added it back when there was still a separate InlineBox type and I needed another name. Now InlineBox is gone, and I'm tired of typing fragment.
* cssparser: small refactoringbptato2024-12-201-37/+23
| | | | | | | * isValidEscape was fairly pointless, and occasionally used incorrectly. * "starts with an ident sequence" is normally called on the next 3 codepoints; on the one occasion where it isn't, just hardcode the dash case.
* buffer: only set new buffer's target on clonebptato2024-12-203-8/+10
|
* nanosvg, myaddr: fix obuf type and myaddr shimbptato2024-12-201-2/+2
| | | | | | | this is exactly why I shimmed in unsafeAddr, but the compiler isn't cooperating... :( well, it seems to work with auto.
* layout, render: image sizing fixes/workaroundsbptato2024-12-202-12/+16
| | | | | | | | * fix clip for image * switch back img's display to inline * fix image width calculation without specified width/height I'm not 100% sure if this is correct, but it certainly looks better.
* dom: add inline SVG supportbptato2024-12-205-88/+204
|
* response: automatically resume before closebptato2024-12-193-9/+4
| | | | doing it manually is too error prone
* pager: fix short error messages not being printedbptato2024-12-191-1/+1
|
* cookie: fix another regressionbptato2024-12-191-1/+1
| | | | did I ever test this?
* cookie: fix regression in cookieJar.addbptato2024-12-191-1/+5
|
* layout: apply padding to intrinsic minimum widthbptato2024-12-191-4/+3
|
* pager: fix crash on gotoURL with save + mailcapbptato2024-12-191-1/+2
| | | | this broke saveImage
* pager: do not crash browser when deleting a crashed bufferbptato2024-12-181-1/+5
|
* layout, render: implement overflow propertybptato2024-12-184-106/+201
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Overflow pretty much requires scrollbars, but those wouldn't work in dump mode, plus of course they would be a pain to implement. So as a simple alternative: * overflow: hidden, clip works as per spec. * overflow: auto, overlay, scroll invert the intrinsic minimum size clamping logic instead of adding a scrollbar. What this concretely means, is that this <pre style="overflow: scroll; height: 1em"> test test test </pre> will, instead of creating a scroll container, just override the specified height. This hack works surprisingly well, because CSS pretty much requires setting height on scroll containers, so authors aren't incentivized to set height on the parent container too (because the contents are already sized appropriately). One issue left is how to deal with overflow: hidden ancestors. For now, I've made it so that it can spill for overflow-x, and always clips on overflow-y, because it's much less likely to bleed into other text horizontally than vertically. But there is definitely room for improvement, e.g. we could track space requested by scrolling children and expand parent boxes based on that.
* pager, select: hide menu if right click ends outsidebptato2024-12-182-45/+60
| | | | | | | | Inspired by Dillo. (Just the movement mechanism; Dillo doesn't hide the context menu on double click, but we still do.) Also, we now disable highlighting of menu items when the mouse is hovering outside.
* match: fix nested hover selectorbptato2024-12-181-1/+2
| | | | | | | I didn't get it right :( true is the default return value, and true + continue should resolve to false.
* match: optimize dependency trackingbptato2024-12-172-39/+78
| | | | | | | | | | | | | | | | | | | This is a bit tricky, but it seems to work. It optimizes selectors in the line of "div :hover" (note the space.) Previously such selectors would add a hover dependency to pretty much every element, and trigger a re-style for all elements that changed their hover status. After this patch, when :hover and friends would return false, they first try to match the element *without* pseudo selectors, and only add their dependencies if the element would match like that. (Notably, it only does this for when :hover is false. Probably it would help somewhat if we checked for the opposite with true too, but I'm not sure how much. For now, I'll keep it like this, and maybe try to further optimize it later.)
* css: add :target pseudo classbptato2024-12-174-1/+24
|
* cookie: small bugfix, misc refactoringbptato2024-12-172-30/+25
| | | | | Always override Expires with Max-Age, but never the other way (as per spec.)
* match: refactor a bitbptato2024-12-172-63/+47
| | | | | Now we use the node index to optimize next/subsequent sibling combinators.
* dom, match: optimize :nth-child, :nth-last-childbptato2024-12-173-41/+75
| | | | | | I want to use it in the UA sheet, so the loop won't cut it. (Also fix a parsing bug that prevented "of" from working.)
* default(T) -> T.default, add some strict defsbptato2024-12-1715-33/+34
|