Commit graph

12124 commits

Author SHA1 Message Date
thankyouverycool
030f4150b8 WindowServer: Adjust MenuApplet position on resize
Applet rects are now recalculated when changed.
2020-07-26 11:32:12 +02:00
Nico Weber
f6db97b8a9 LibX86: Support disassembling a few FPU opcodes better 2020-07-26 11:29:03 +02:00
Ben Wiederhake
d8c8820ee9 Kernel: Allow Thread::sleep for more than 388 days
Because Thread::sleep is an internal interface, it's easy to check that there
are only few callers: Process::sys$sleep, usleep, and nanosleep are happy
with this increased size, because now they support the entire range of their
arguments (assuming small-ish values for ticks_per_second()).
SyncTask doesn't care.

Note that the old behavior wasn't "cap out at 388 days", which would have been
reasonable. Instead, the code resulted in unsigned overflow, meaning that a
very long sleep would "on average" end after about 194 days, sometimes much
quicker.
2020-07-25 20:21:25 +02:00
Ben Wiederhake
76c135ddcf Kernel: Make clock_nanosleep aware of dynamic tick length
On my system, ticks_per_second() returns 1280.
So Serenity was very fast at sleeping! :P
2020-07-25 20:21:25 +02:00
Ben Wiederhake
4a5a7b68eb Kernel: Make usleep aware of dynamic tick length
On my system, ticks_per_second() returns 1280.
So Serenity was always 20% too fast when sleeping!
2020-07-25 20:21:25 +02:00
Ben Wiederhake
782db88e82 Shell: Don't crash when autocompleting a non-bare word
For example, type 'Hello?' without the quotation marks but with the
question mark, and press TAB.

Previously, this would crash the Shell. Now, it merely refuses
to make any suggestions.

We could do better, but that is too hard for now.
2020-07-25 19:11:10 +02:00
Andreas Kling
4ad6315fda Meta: Add Matthew Olsson to the contributors list :^) 2020-07-25 15:22:23 +02:00
Andreas Kling
0d3d22f464 WindowServer: Use WindowManager::window_title_font() in one place
If we use this everywhere, it may one day become possible to change the
window title font.
2020-07-25 13:45:52 +02:00
Andreas Kling
0aef87b82c WindowServer: Center the window titlebar icons vertically
This feels a bit tricksy, but at least makes window icons look much
better with the "Basalt" theme. :^)
2020-07-25 13:43:56 +02:00
Andreas Kling
e2f45a4b0e WindowServer: Relayout window buttons immediately on theme change 2020-07-25 13:35:16 +02:00
Andreas Kling
3ee6ed965f LibJS: Use allocate_without_global_object for primitive cell types
More steps towards multiple global object support. Primitive cells
like strings, bigints, etc, don't actually have any connection to
the global object. Use the explicit API to clarify this.
2020-07-25 13:12:17 +02:00
Tom
3fdacef07f LibCrypto: Optimize UnsignedBigInteger import_data/export_data
No need to do complicated math to import or export numbers,
just convert the byte stream to words and vice versa.
2020-07-25 12:53:02 +02:00
Luke
08221139a5 test-web: Add ability to change page mid-test
This allows you to not have to write a separate test file
for the same thing but in a different situation.

This doesn't handle when you change the page with location.href
however.

Changes the name of the page load handlers to prevent confusion
with this.
2020-07-25 12:35:15 +02:00
Benoît Lormeau
1d6a3a5e8f Base: Complete the french keymap and fix the numeric keypad
Accentuated letters and other characters from the Unicode Block
"Latin-1 Supplement" were added; they weren't supported in the past.
Regarding the numpad: there was a `"", ` too much in the keymap, which
was shifting the keys when pressed (e.g. I would get a '9' instead of a '+')
2020-07-25 12:34:54 +02:00
Ben Wiederhake
b3472cb4a7 Kernel: Allow process creation during low-entropy condition
Fixes #2871.

Ignoring the 'securely generated bytes' constraint seems to
be fine for Linux, so it's probably fine for Serenity.

Note that there *might* be more bottlenecks down the road
if Serenity is started in a non-GUI way. Currently though,
loading the GUI seems to generate enough interrupts to
seed the entropy pool, even on my non-RDRAND setup. Yay! :^)
2020-07-25 12:34:30 +02:00
Ben Wiederhake
8c14219fb1 AK: Fix print_double
Fixes #2776.

This fixes, among other things, JSON serialization.

The underlying bug was that 'print_double' defined fraction_length
as a function argument with a default value, whereas
printf_internal *always* provided a value, even if nothing was read.
The 'use 6 by default' logic has been moved to printf_internal instead.
2020-07-25 12:32:55 +02:00
AnotherTest
9685080bd4 PixelPaint: Add a bunch of spatial filters
This patchset adds a generic convolution matrix spatial filter, and a
few named derivatives such as BoxBlur, Laplacian, Sharpen and
GaussianBlur.
2020-07-25 02:13:43 +02:00
AnotherTest
9d349ac646 LibGfx: Add a generic Matrix variant 2020-07-25 02:13:43 +02:00
AnotherTest
2d96437bbb LibGfx: Add Matrix4x4::elements() getters 2020-07-25 02:13:43 +02:00
Andreas Kling
d1fdc1a2cf LibWeb: Use [Reflect] for Element.id and Element.className :^) 2020-07-24 13:25:42 +02:00
Andreas Kling
8f31331e68 LibWeb: Allow specifying a custom attribute name for [Reflect]
Sometimes the IDL attribute and the DOM attribute don't have the same
exact name. In those cases, we can now do this:

    [Reflect=foobar] attribute DOMString fooBar;
2020-07-24 13:23:47 +02:00
Andreas Kling
cb35a8ea83 LibWeb: Add HTMLElement.lang (and make HTMLElement.title reflecting) 2020-07-24 13:16:11 +02:00
Andreas Kling
ea451cea6a LibWeb: Add HTMLImageElement.src and HTMLImageElement.alt
These are reflecting attributes! :^)
2020-07-24 13:12:14 +02:00
Andreas Kling
3eff6024b1 LibWeb: Add code generation for reflecting IDL attributes
You can now tag reflecting attributes with [Reflect] to generate code
that does basic DOM element attribute get/set.

(This patch also makes it easy to add more extended attributes like
that going forward.)

From the HTML spec:

"Some IDL attributes are defined to reflect a particular content
attribute. This means that on getting, the IDL attribute returns
the current value of the content attribute, and on setting,
the IDL attribute changes the value of the content attribute
to the given value."
2020-07-24 13:06:02 +02:00
Andreas Kling
dc4327c54b Build: Remove two unnecessary CXXFLAGS
Seems like we can build without these two flags now:

    -Wno-sized-deallocation
    -fno-sized-deallocation

I don't remember why they were needed in the first place.
2020-07-24 02:57:11 +02:00
Andreas Kling
cd4bc81dbb AK: Add a couple more helper templates to StdLibExtras 2020-07-24 02:38:17 +02:00
Andreas Kling
a655cf5b41 LibGUI: Break up Window::event() into many smaller functions
This function was unbearably huge. Handle each event type in its own
function instead so you can see what's going on.
2020-07-24 01:03:24 +02:00
Nico Weber
3f45e9ab1e Lagom: Add LibGemini, LibGfx
They are dependencies of LibWeb and might be useful for
running test-web on GitHub actions one day.
2020-07-23 23:02:28 +02:00
Nico Weber
c4d9d5cc54 Browser: Escape JS source operators for HTML display in console
Console inputs to try before and after this patch:
- `0xffff & 0xff`
- `"a & b"`
- `"<div>"`
- `a &` (to see the escaping in the error hint)
2020-07-23 23:01:16 +02:00
Andreas Kling
65ec655b0d PixelPaint: Add GUI for editing layer names :^) 2020-07-23 20:48:28 +02:00
Andreas Kling
955d3c22c7 PixelPaint: Tidy up the LayerPropertiesWidget GUI layout a bit :^) 2020-07-23 20:43:52 +02:00
Andreas Kling
3a4351b2b5 PixelPaint: Don't hit test non-visible layers 2020-07-23 20:36:07 +02:00
Andreas Kling
b560445c84 PixelPaint: Add a GUI for editing opacity and visibility of layers
Also, make the layer stack rendering respect opacity and visibility.
2020-07-23 20:33:38 +02:00
Andreas Kling
d7be3faab5 LibGfx: Add an "opacity" argument to Painter::draw_scaled_bitmap()
This API is not super perfect as it merely overrides the source alpha
on all source pixels instead of blending the alpha values. There is
room for improvement here for sure.
2020-07-23 20:32:39 +02:00
Andreas Kling
0a95f8d346 LibGUI: Add {Horizontal,Vertical}Slider to the forwarding header 2020-07-23 19:59:38 +02:00
Andreas Kling
7973f76790 PixelPaint: Scope tool actions to the containing window
We achieve this by deferring the construction of the tool buttons until
the toolbox widget has been added to a window.
2020-07-23 19:53:48 +02:00
Andreas Kling
4392413cd1 LibGUI: Make window-parented actions actually scoped to the window
We were relying on Core::is<Window>() to tell us whether the parent
of an action is a window. This didn't work since we only saw a forward
declaration of GUI::Window in Action.cpp.

This is an unfortunate flaw in the is<T> pattern and we should solve
it somehow but not in this patch.
2020-07-23 19:52:18 +02:00
Andreas Kling
3cb50a4714 LibWeb: Rename Element::tag_name() => local_name()
To prepare for fully qualified tag names, let's call this local_name.
Note that we still keep an Element::tag_name() around since that's what
the JS bindings end up calling into for the Element.tagName property.
2020-07-23 18:18:13 +02:00
Andreas Kling
9d4cd565e3 LibGUI: Fix build after renaming Image => ImageWidget 2020-07-23 17:43:44 +02:00
Andreas Kling
6e02ef19d1 LibWeb: Add a helper for creating a fake (start tag) HTML token
Sometimes the parsing rules say we need to insert a fake HTML token.
Let's have a convenient way of doing that!
2020-07-23 17:31:08 +02:00
Andreas Kling
aaf6014ae1 LibJS: Simplify Cell::initialize()
Remove the Interpreter& argument and pass only GlobalObject&. We can
find everything we need via the global object anyway.
2020-07-23 17:31:08 +02:00
Andreas Kling
299824de73 LibGUI: Rename GUI::Image => GUI::ImageWidget
"Image" was a bit too vague, "ImageWidget" is obviously a widget of
some sort.
2020-07-23 17:31:08 +02:00
Nico Weber
a92f7aea7a LibWeb: Add tests for atob() and btoa() 2020-07-23 15:18:25 +02:00
Luke
60599d03dd LibWeb+test-web: Create test-web program, add doctype test
LibWeb currently has no test suite or program. Let's change that :^)

test-web is mostly a copy of test-js, but modified for LibWeb.
test-web imports both LibJS/Tests/test-common.js and
LibWeb/Test/test-common.js

LibWeb's suite provides the ability to specify the page to load,
what to do before the page is loaded, and what to do after it's
loaded.

This also provides a test of document.doctype and its close sibling
document.compatMode.

Currently, this isn't added to Lagom because of CodeGenerators.
2020-07-23 13:11:41 +02:00
Sasan Hezarkhani
a2bbacbfc8 TextEditor: Jump to word break when deleting and holding Ctrl modifier 2020-07-23 13:08:55 +02:00
Nico Weber
107db38a51 Browser: Focus input text field in JS console by default 2020-07-23 13:07:30 +02:00
Nico Weber
79a5ba58a5 LibJS: Add tests for bitwise & and ^
And fix some edge case conversion bugs found by the tests.
2020-07-23 13:06:49 +02:00
Brian Gianforcaro
bbc7e8429b LibC: Remove duplicate gs touch during gettid()/getpid() fast path
While profiling I noticed that gettid() was hitting gs register
twice, once for the initial fetch of s_cache_tid out of TLS for
the initialization check, and then again when we return the actual
value.

Optimize the implementation to cache the value so we avoid the
double fetch during the 99% case where it's already set. With
this change gettid() goes from being the 3rd most sampled function
in test-js, to pretty much disappearing into  ~20th place.

Additionally add the same optimization to getpid().
2020-07-23 12:28:11 +02:00
Nico Weber
b9ce56aee6 LibWeb: Make btoa() and atob() correctly handle values between 128 and 255
btoa() takes a byte string, so it must decode the UTF-8 argument into
a Vector<u8> before calling encode_base64.

Likewise, in atob() decode_base64 returns a byte string, so that needs
to be converted to UTF-8.

With this, `btoa(String.fromCharCode(255))` is '/w==' as it should
be, and `atob(btoa(String.fromCharCode(255))) == String.fromCharCode(255)`
remains true.
2020-07-22 19:22:00 +02:00
Nico Weber
5ba8aba197 AK: Make encode_base64 take a ByteBuffer and return a String
That makes the interface symmetric with decode_base64 and it's
what all current callers want (except for one, which is buggy).
2020-07-22 19:22:00 +02:00