Commit graph

23578 commits

Author SHA1 Message Date
Linus Groh 674f3d0347 LibJS: Pad abs(year) < 1000 with zeros in Date.prototype.toString() 2021-07-10 19:51:07 +01:00
Linus Groh a647f0abf6 LibJS: Make parse_simplified_iso8601() use Optional<int> instead of -1
...for the non-success state. This fixes a crash when parsing dates with
the year -1, as we would assert successful parsing ("year != -1").
Mixing Optional and -1 seems worse and more complicated than just using
Optional for all the values, so I did that instead.
2021-07-10 19:51:07 +01:00
Linus Groh 39cdffd78d LibJS: Make Date.now() return a floor()'d milliseconds value
It is defined as follows:

    21.4.3.1 Date.now ( )
    https://tc39.es/ecma262/#sec-date.now

    The now function returns the time value designating the UTC date and
    time of the occurrence of the call to now.

"Time value" is defined as:

    21.4.1.1 Time Values and Time Range
    https://tc39.es/ecma262/#sec-time-values-and-time-range

    An ECMAScript time value is a Number, either a finite integral
    Number representing an instant in time to millisecond precision or
    NaN representing no specific instant.

By flooring the value we match the behavior in the Temporal proposal's
Temporal.ZonedDateTime.prototype.epochMilliseconds getter:

    4. Let ms be RoundTowardsZero(ℝ(ns) / 10^6).

With that being defined as:

    13.30 RoundTowardsZero ( x )
    https://tc39.es/proposal-temporal/#sec-temporal-roundtowardszero

    1. Return the mathematical value that is the same sign as x and
    whose magnitude is floor(abs(x)).

This is makes the last of the currently 15 Temporal tests in test262
work, which compares Temporal.now.instant() with Date.now() :^)
2021-07-10 19:51:07 +01:00
Ali Mohammad Pur a5bc366d9a expr: Make Match expressions comply with POSIX
They should print the contents of capture group 1, if it exists.
2021-07-10 23:14:08 +04:30
Ali Mohammad Pur 11a8476cf4 LibRegex: Use the parser state capture group count in BRE
Otherwise the users won't know how many capture groups are in the
parsed regular expression.
2021-07-10 23:14:08 +04:30
Ali Mohammad Pur 1c584e9d80 LibRegex: Correctly parse BRE bracket expressions
Commonly, bracket expressions are in fact, enclosed in brackets.
2021-07-10 22:58:24 +04:30
Nico Weber 1c69c686e3 chres: Make screen an optional parameter
Most people have only one screen.
2021-07-10 18:51:14 +01:00
Nico Weber 8cf348c14c chres: Unbreak scale factor setting after aa15bf81e4 2021-07-10 18:51:14 +01:00
Aziz Berkay Yesilyurt 9b0ff229e3 Utilities: Use alpha channel instead of opacity in shot
The way overlay was drawn is not the correct way to achieve window
transparency in selection mode. With this change, shot window becomes
truely transparent.
2021-07-10 21:22:25 +04:30
Andreas Kling b368560800 LibGUI: Only repaint the affected indices on AbstractView item hover
Previously, moving the cursor over items in an item view would cause it
to repaint itself completely. Now we only repaint the two affected
items (the old hovered item and the new hovered item.)
2021-07-10 18:30:46 +02:00
Andreas Kling df96380121 LibGUI: Tighten paint invalidation rects in item views :^)
AbstractView now has a paint_invalidation_rect(index) function that
subclasses can override to provide a tighter invalidation rect for
an index.
2021-07-10 18:30:46 +02:00
Andreas Kling 148e72bfa0 LibGUI: Add AbstractView::editing_rect() to allow custom editing rects
This allows view classes to customize the editing rect for an index.
2021-07-10 18:30:46 +02:00
Timothy Flynn 6c67de8186 LibJS: Implement RegExp.prototype.hasIndices proposal
https://tc39.es/proposal-regexp-match-indices/
2021-07-10 16:49:35 +01:00
Timothy Flynn d1e06b00e3 LibJS: Parse the RegExp.prototype.hasIndices flag 2021-07-10 16:49:35 +01:00
Timothy Flynn e801cc7afd LibJS: Remove ECMAScriptFlags value from JS_ENUMERATE_REGEXP_FLAGS
All regex flags supported by LibJS currently correspond to a LibRegex
option, but this is not the case for the RegExp.prototype.hasIndices
proposal, which is handled entirely in RegExpBuiltinExec. Remove the
flag mapping to prepare for this. This incurs a bit of an optimization
loss in the flag getters, as we now do a substring search, but we can
revisit the getter implementation if it becomes an issue.
2021-07-10 16:49:35 +01:00
Timothy Flynn 6cd966c1e1 LibJS: Implement RegExp.prototype.source according to the spec
RegExp.prototype.source must check if "this" object is the
RegExp.prototype object before raising a TypeError.
2021-07-10 16:49:35 +01:00
Timothy Flynn 2f6eec1322 LibJS: Implement RegExp.prototype.<flag name> according to the spec
The flag getters (e.g. RegExp.prototype.unicode) must specially handle
when "this" object is the RegExp.prototype object.
2021-07-10 16:49:35 +01:00
Idan Horowitz 75541c48b5 LibJS: Add Temporal.Instant.prototype.valueOf 2021-07-10 15:39:47 +01:00
Idan Horowitz ac8e76be23 LibJS: Add a couple of missing specification links to Temporal.Instant 2021-07-10 15:39:47 +01:00
Andreas Kling 42fab36f02 FontEditor: Tweak offensive padding :^) 2021-07-10 16:13:44 +02:00
Andreas Kling 234d53a324 Terminal: Put debug spam in unimplemented_control_code() behind a flag 2021-07-10 16:13:34 +02:00
Timothy 3c3e5ffe2f TextEditor: Remove unused includes 2021-07-10 15:33:46 +02:00
Timothy 73226a2861 LibGUI: Convert TextEditor to east-const style 2021-07-10 15:33:46 +02:00
Timothy a3c8005546 TextEditor: Convert to east-const style 2021-07-10 15:33:46 +02:00
Timothy 73ae5200a9 TextEditor+LibGUI: Use unveil and FileSystemAccessServer
Making use of the new FileSystemAccessServer we are able to use
unveil without restricting our ability to open and save files.
A file argument will be unveiled automatically however all other files
require user action via the FileSystemAccessServer to gain access.
2021-07-10 15:33:46 +02:00
Timothy 41ce2debda FileSystemAccessServer: Add service for accessing veiled files nicely
Adds new service FileSystemAccessServer which allows programs to
request a file descriptor for any file on the file system.

The user can be prompted to choose the path with a FilePicker, or the
path can be provided by the application which will show a MessageBox
showing the pid and name of the calling process and allows the user to
approve or deny the request.
2021-07-10 15:33:46 +02:00
LuK1337 5e823d3de0 Taskbar: Scale window icon bitmap if it's not 16x16
Fixes: #5806
2021-07-10 14:04:21 +01:00
Ali Mohammad Pur eca74088a0 grep: Use Basic POSIX regexps by default and make -E not the default 2021-07-10 13:33:08 +02:00
Ali Mohammad Pur 97f7132b82 expr: Use Basic Posix regular expressions
Dr.POSIX requires expr to use BREs, so let's use BREs.
Fixes #8506.
2021-07-10 13:33:08 +02:00
Ali Mohammad Pur daa6d99e6e LibRegex: Add support for non-extended regular expressions in regcomp()
Fixes part of #8506.
2021-07-10 13:33:08 +02:00
Ali Mohammad Pur 54d89609de LibRegex: Add support for the Basic POSIX regular expressions
This implements the internal regex stuff for #8506.
2021-07-10 13:33:08 +02:00
Ali Mohammad Pur addfa1e82e LibRegex: Make the bytecode transformation functions static
They were pretty confusing when compared with other non-transforming
functions.
2021-07-10 13:33:08 +02:00
Andreas Kling f670adb298 LibWeb: Avoid HashMap copy in BrowsingContext::set_frame_nesting_levels 2021-07-10 13:24:46 +02:00
Gunnar Beutner 9bc3ad75b4 Toolchain: Use correct variable when deleting the QEMU tarball 2021-07-10 11:13:56 +01:00
Linus Groh c77215fc61 Ports: Build Python with ncurses and termcap
Neither the _curses nor the termios module builds to completion
currently due to some missing functions, but we can let it try
nonetheless - it'll likely get fixed at some point :^)
2021-07-10 11:13:02 +01:00
Linus Groh b2d68913d3 Ports: Build Python with sqlite
This makes the _sqlite3 module work :^)
2021-07-10 11:13:02 +01:00
Linus Groh 3b863561d7 Ports: Build Python with bzip2
This makes the _bz2 module work :^)
2021-07-10 11:13:02 +01:00
Linus Groh 5e3af8b7db Ports: Build Python with readline
This provides a *much* improved REPL experience :^)
2021-07-10 11:13:02 +01:00
Linus Groh 123c2f2f7f Ports: Add a patch for Python's setup.py to consider /usr/local
This makes it find more includes and libraries than by default when
crosscompiling.
2021-07-10 11:13:02 +01:00
Linus Groh 96331d7d87 Ports: Export CC with added --sysroot for building Python
This is used in the setup.py file when adding include and lib paths to
the list when crosscompiling, if it's not found in any of the checked
environment variables they don't get added.
2021-07-10 11:13:02 +01:00
Ralf Donau 821b752993 Userland: Add fopen error handling to less 2021-07-10 10:32:01 +02:00
networkException 2e4be5e98c LibGUI: Rename "to_gmousebutton" => "to_mouse_button" 2021-07-10 09:31:01 +02:00
Gunnar Beutner 3e53f4a3de AK: Remove unused NO_RETURN macro 2021-07-10 01:41:57 +02:00
Gunnar Beutner b11fe40240 LibELF: Make sure calls to _fixup_plt_entry use a properly aligned stack 2021-07-10 01:41:57 +02:00
Gunnar Beutner 06883ed8a3 Kernel+Userland: Make the stack alignment comply with the System V ABI
The System V ABI for both x86 and x86_64 requires that the stack pointer
is 16-byte aligned on entry. Previously we did not align the stack
pointer properly.

As far as "main" was concerned the stack alignment was correct even
without this patch due to how the C++ _start function and the kernel
interacted, i.e. the kernel misaligned the stack as far as the ABI
was concerned but that misalignment (read: it was properly aligned for
a regular function call - but misaligned in terms of what the ABI
dictates) was actually expected by our _start function.
2021-07-10 01:41:57 +02:00
Andreas Kling f4a318ee2d LibGUI: Only repaint grabbable part of Splitter when hovered/unhovered
Before this change, we would repaint the Splitter and all of its split
children when hovering over it. Now we only repaint the grabbable part.
2021-07-10 01:40:51 +02:00
Daniel Bertalan 05c174b45a LibVT: Reset scrollbar after switching to/from the alternate buffer
We did not call the history change callback after switching to the
alternate screen buffer, which caused the scrollbar to not change its
maximum value. If we already had lines in the scrollback buffer, this
meant that we could drag the scrollbar, which then tried to access
non-existent lines from the scrollback.

Fixes #8581
2021-07-10 01:23:23 +02:00
LuK1337 5e1e67277b LibGUI: Remove left margin on MessageBox text when icon is unset
It looks better when text is properly centered.
2021-07-09 23:36:34 +02:00
Idan Horowitz a44de7a55f LibJS: Add %TypedArray%.prototype.toLocaleString 2021-07-09 22:32:25 +01:00
Idan Horowitz 56d8098d13 LibJS: Use PropertyName instead of StringOrSymbol in Object::invoke()
This prevents the unnecessary PropertyName -> StringOrSymbol ->
PropertyName conversion.
2021-07-09 22:32:25 +01:00