Age | Commit message (Collapse) | Author |
|
This strtod implementation is not perfectly accurate, as evidenced by the test
(accuracy_strtod.cpp), but it is sufficiently close (up to 8 eps).
The main sources of inaccuracy are:
- Highly repeated division/multiplication by 'base'
(Each operation brings a multiplicative error of 1+2^-53.)
- Loss during the initial conversion from long long to double (most prominently,
69294956446009195 should first be rounded to 69294956446009200 and then
converted to 69294956446009200.0 and then divided by ten, yielding
6929495644600920.0. Currently, it converts first to double, can't represent
69294956446009195.0, and instead represents 69294956446009190, which
eventually yields 6929495644600919.0. Close, but technically wrong.)
I believe that these issues can be fixed by rewriting the part at and after
double value = digits.number();
and that the loss before that is acceptable.
Specifically, losing the exact exponent on overflow is obviously fine.
The only other loss occurs when the significant digits overflow a 'long long'.
But these store 64(-7ish) bits, and the mantissa of a double only stores 52 bits.
With a bit more thinking, one could probably get the error down to 1 or 2 eps.
(But not better.)
Fixes #1979.
|
|
|
|
Currently we don't deal with them, so they shouldn't return a
SimpleSelector - that'd be a false positive.
Also don't produce a ComplexSelector if no SimpleSelector was parsed.
This fixes a couple of rendering issues on awesomekling.github.io:
link colours, footer size, content max-width (and possibly more!)
|
|
Previously we would only check if the border width property is empty and
skip drawing in that case, and enforcing a minimum width of 1px
otherwise - but "border: 0;" should not paint a border :^)
|
|
This makes the blog posts on awesomekling.github.io show up :^)
|
|
|
|
It's based on <netinet/in.h> and more definitions might be required
here (e.g, IP header).
|
|
This file uses 'struct timeval' without including relevant header.
|
|
|
|
Will be updated as we add more protocols (e.g AF_INET6)
|
|
I had this assert trigger, I believe in a legitimate case.
This is the behavior glic and musl follow.
|
|
In theory, this should make dithering a teensy bit faster.
|
|
We can now cycle pages of suggestions when there are more suggestions
than we can fit on one screen.
This does not inculude a visual indicator that more pages exist,
however.
|
|
Lines in the history should not be considered for update at all.
Fixes #2185
|
|
We now look at the Content-Type HTTP header when deciding how to render
some loaded content. If there is no Content-Type header (which will
always be the case when loading local files, for example), we make a
guess based on the URL filename.
|
|
HTTP headers are case-insensitive, so just add CaseInsensitiveTraits
to the HashMap and we're good to go! :^)
|
|
Embedders of HtmlView can now react to this by hooking on_url_drop.
|
|
|
|
When encountering a text file, we now put it in a wrapper document with
the file contents in a <pre> tag. This works really nicely :^)
|
|
|
|
|
|
|
|
Non-configurable for now.
|
|
|
|
You can now drag a hyperlink as a text/uri-list. This allows you to
drag a file from "ls" output and drop it on a FileManager to copy
the file there. Truly futuristic stuff!
|
|
The buffer positions referred to by a VT::Position now include history
scrollback, meaning that a VT::Position with row=0 is at the start of
the history.
The active terminal buffer keeps moving in VT::Position coordinates
whenever we scroll. This allows selection to follow history. It also
allows us to click hyperlinks in history.
Fixes #957.
|
|
Okay, links are finally starting to feel visually intuitive. :^)
|
|
It felt too rushed to open links when simply mousedown'ing on them.
Improve this by implementing basic "click" semantics instead.
This patch also introduces the ability to prevent link opening if you
want to force selection instead. Hold shift and we will not open links.
|
|
|
|
|
|
The dotted line is custom painted to put some more distance between the
dots than what Painter::draw_line() does.
|
|
Just a bool is insufficient as we'll have to support dashed lines as well.
|
|
If we just skip every second pixel, we still get a solid line if each
"pixel" is wider than 1!
Now we skip the same amount of pixels as the line is thick.
|
|
For now, we simply load an empty resource from any about: URL.
|
|
This also patches Userland/js.
|
|
|
|
|
|
In f4302b58fb0, the kernel-side syscalls (e.g Process::sys$getsockname)
were updated to use SC_get{sock,peer}name_params, but the libc
functions were not updated.
|
|
Instead of a solid color, we now paint the track/gutter of scrollbars
using a 2-color dither pattern for a pleasant millennium feel. :^)
|
|
This patch fixes a tiny issue where the result of open_url would always
be true, since handle(OpenUrl) returns the message instead of the
result.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Unlike Path::close() which closes only the last subpath (if possible),
this closure mechanism closes _all_ available subpaths.
|
|
Otherwise it may get lost due to a leave event firing in the widget.
|
|
|