1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 05:08:13 +00:00
Commit graph

943 commits

Author SHA1 Message Date
Andreas Kling
32c6e31f4c LibGUI: Make it possible to tweak icon spacing on a GUI::Button
This is the space between the icon and the text on buttons that have
both icon and text.
2021-03-25 22:41:40 +01:00
Andreas Kling
78b12e1521 Userland: Turn all application menus into window menus :^) 2021-03-25 22:14:09 +01:00
Andreas Kling
e76771bfad WindowServer+LibGfx: Show menus in windows! :^)
This patch begins the transition away from the global menu towards
per-window menus instead.

The global menu looks neat, but has always felt clunky, and there
are a number of usability problems with it, especially in programs
with multiple windows.

You can now call GUI::Window::set_menubar() to add a menubar to
your window. It will be specific to that one window only.
2021-03-25 22:14:09 +01:00
Andreas Kling
1daaa4f38d LibGUI: Add GUI::MenuBar::menubar_id()
Just exposing the menubar ID on the WindowServer side.
2021-03-25 22:14:09 +01:00
lucastarche
6d3d097832 TextEditor: Visualize leading whitespace 2021-03-25 11:01:49 +01:00
lucastarche
0071dc7be4 TextEditor: Added a setter for soft_tab_width 2021-03-25 11:01:49 +01:00
Idan Horowitz
78f0cabb17 LibJS: Use Utf8View for string prefix checks
This commit replaces the usage of String::starts_with with
Utf8View::starts_with, which first decodes the utf8 encoded
string, and as such can take things like overlong encoded
sequences into account (which could otherwise cause the prefix
check to be inconsistent with the following code points check).
2021-03-25 10:59:34 +01:00
Tom
7626f9e0bb LibGUI: Process pending window updates after handling input events
Since input events may trigger window portions to be invalidated,
rather than making a round trip to WindowServer to get paint events
we can simply fake an immediate paint event and update the window
contents more quickly.

Improves #5881
2021-03-24 21:03:29 +01:00
Linus Groh
bce1f956e7 LibTest: Add Test::Counts
This is the JSTestRunnerCounts struct from test-js and test-web (but
using unsigned integers - no negative counts). Not all test runners will
use all fields, but all will want to keep track of various counts.
2021-03-24 20:38:20 +01:00
Linus Groh
0fb980ed88 LibJS: Don't static_cast<double>() various Date getter values
Since we have Value::Type::Int32 now, let's use the Value(i32)
constructor here directly by not casting these i32 values to doubles.
The Value(double) would also figure out that these can be stored as
integers, but needs to do extra work which is not needed here. :^)
2021-03-23 20:57:31 +01:00
Andreas Kling
d20e3dbe8b LibGUI: Remove one ancient GMENU_DEBUG debug log 2021-03-23 20:37:39 +01:00
Itamar
84e34d76d8 HackStudio+LanguageServers/Cpp: Show scope of symbols in Locator 2021-03-23 18:32:39 +01:00
Itamar
b5cab861e3 LibCpp: Parse Namespace declaration
Also, remove unused State::Context
2021-03-23 18:32:39 +01:00
Idan Horowitz
550ae23e80 LibArchive: Implement ZipOutputStream for zip archive creation
This output stream can be used to create zip archives, and will
be used in the implementation of the zip utility.
2021-03-23 16:09:36 +01:00
Idan Horowitz
caf4bde3a9 LibArchive: Add Zip file parser
This is based on the zip specification on PKWARE's zip specification
(https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) and will
be used in the unzip utility and eventually in the zip utility.
2021-03-23 16:09:36 +01:00
Idan Horowitz
a809db90dd Libraries: Rename LibTar to LibArchive
This is in preparation for a new implementation of zip archive
extraction and creation.
2021-03-23 16:09:36 +01:00
Linus Groh
40eab55e7d LibJS: Remove as_size_t()
Just like to_size_t() - which was already removed in f369229 - this is
non-standard, use to_length() instead. One remaining use was removed,
and I'm glad it's gone. :^)
2021-03-23 08:22:39 +01:00
Oleg Sikorskiy
a1014d25de LibJS: Simplify positive/negative zero checks
Because both zeroes have unique and distinct bit representations,
we can bit_cast value to u64 and check if it's one of them.
2021-03-23 08:22:15 +01:00
Petróczi Zoltán
ca49f96b78 LibJS Date: Added "Invalid Date".
Setting an invalid value on a Date object now makes it invalid.
Setting it again but with correct values makes it valid again.
2021-03-22 20:58:22 +01:00
Petróczi Zoltán
d231c5e65b LibJS Date: Added toUTCString()
toGMTString() is deprecated but is kept for compatibility's sake, but because
HTTP Dates are always expressed in GMT, it should be safe to call toUTCString()
in toGMTString().
2021-03-22 20:58:22 +01:00
Andreas Kling
036b5c2804 LibWeb: Import new CSS parser
It's not finished or hooked up to anything yet, but let's get it into
the tree so we can continue working on it.

Original work by @stelar7.
2021-03-22 18:40:08 +01:00
Brendan Coles
8ad74684ea LibELF: DynamicObject: Add rpath and runpath helpers 2021-03-22 17:46:05 +01:00
Nick Johnson
ddcef0452a NotificationServer: Close connection on notification close
When the notification was closed, the connection was kept around. This
caused the core event loop to take up nearly all CPU, so instead of
checking the connection we clear it on close and add state variables
to check state.
2021-03-22 12:46:16 +01:00
Nick Johnson
c7f00717c3 Notification: Use RefPtr for connection
With this RefPtr, we can initialize the connection to the
NotificationServer upon showing the notification. With this, we can
prevent double shows and updates or closes before showing.
2021-03-22 12:46:16 +01:00
Nick Johnson
8f6894d250 LibGUI+Notification: Add mutable notifications
This commit puts all of the remaining pieces in place. This adds a
mechanism to update the text, title, and icon of an image. If an image
is not provided, the default ladybug will be shown.
2021-03-22 12:46:16 +01:00
Nick Johnson
147a2c4ca2 Notification: Prevent showing a closed window
If a notification was closed, the connection will now be dead. To
prevent inconsistencies between when a user closes a notification and
when an application closes an applicated, check if the notification has
been closed before allowing any action.
2021-03-22 12:46:16 +01:00
Nick Johnson
0fd1e6f062 LibGUI+Notification: Add notification closing
Closing a notification will now allow it to be shown again, as
m_showing being false means it can be re-shown.
2021-03-22 12:46:16 +01:00
Nick Johnson
7351c77a42 LibGUI+Notification: Use lifetime connection
In order to allow notifications to be updated, we will create a persistent connection for the lifetime of the notification.
2021-03-22 12:46:16 +01:00
Luke
dddaa529b2 LibWeb: Advertise that we support the deflate content encoding 2021-03-22 12:45:34 +01:00
Luke
6cad2aba5e LibHTTP: Add support for the deflate content encoding 2021-03-22 12:45:34 +01:00
Andreas Kling
0255c8d976 Only apply auto-naming of function expressions based on syntax
The auto naming of function expressions is a purely syntactic
decision, so shouldn't be decided based on the dynamic type of
an assignment. This moves the decision making into the parser.

One icky hack is that we add a field to FunctionExpression to
indicate whether we can autoname. The real solution is to actually
generate a CompoundExpression node so that the parser can make
the correct decision, however this would have a potentially
significant run time cost.

This does not correct the behaviour for class expressions.

Patch from Anonymous.
2021-03-22 12:44:07 +01:00
Andreas Kling
7241ff3967 LibJS: *Actually* check for negative zero in JS::Value(double)
As @nico pointed out, 0.0 == -0.0 in C++, even though they are not
bitwise identical. Use the same trick as Value::is_negative_zero() to
really check for it.

This allows JS::Value(0.0) to correctly become an Int32-backed 0 value.
2021-03-22 08:06:47 +01:00
AnotherTest
39f3f3be94 LibGUI: Allow ItemListModel to have 2D items
This makes it possible to use it as a model for e.g. TableViews.
2021-03-22 07:43:58 +01:00
AnotherTest
6eeb8225f8 LibGUI: Add a few missing classes to the forwarding header 2021-03-22 07:43:58 +01:00
AnotherTest
714ce4741d LibGUI: Allow a wizard page to return null as its next page 2021-03-22 07:43:58 +01:00
AnotherTest
b072cb725f LibGUI: Allow constructing a string Variant from StringView 2021-03-22 07:43:58 +01:00
Yuval Tasher
d2b7500c65 LibGUI: remove empty TODO. 2021-03-22 07:43:26 +01:00
Andreas Kling
14d598fe7f LibJS: Don't try to store negative zero as an Int32 JS::Value 2021-03-21 21:40:10 +01:00
Andreas Kling
6870349599 LibJS: Flatten Value::to_numeric()
The basic idea here is to inline to_primitive() to get rid of the
function call overhead.
2021-03-21 21:39:39 +01:00
Andreas Kling
00965e3dad LibJS: Add fast path for add() with two numeric JS::Values 2021-03-21 21:39:39 +01:00
Andreas Kling
37cd1a95fc LibJS: Only call GlobalObject::vm() once in add() 2021-03-21 21:39:39 +01:00
Andreas Kling
c8382c32e9 LibJS: Split Value::Type::Number into Int32 and Double
We now store 32-bit integers as 32-bit integers directly which avoids
having to convert them from doubles when they're only used as 32-bit
integers anyway. :^)

This patch feels a bit incomplete and there's a lot of opportunities
to take advantage of this information. We'll have to find and exploit
them eventually.
2021-03-21 21:39:39 +01:00
Andreas Kling
630d83be8f LibJS: Always inline some tiny Interpreter getters 2021-03-21 21:39:39 +01:00
Andreas Kling
e0abfcb27d LibJS: Don't track executing AST nodes in a Vector
Instead just link together the InterpreterNodeScopes in a linked list.
This was surprisingly hot on CanvasCycle.
2021-03-21 21:39:39 +01:00
Andreas Kling
46e61d208b LibJS: Avoid unnecessary FlyString(String) churn in Reference ctors 2021-03-21 21:39:39 +01:00
Andreas Kling
1fb50d823d LibJS: Always inline Cell::vm() and Cell::heap() 2021-03-21 21:39:39 +01:00
Andreas Kling
dc8817638e LibJS: Only update anonymous function names when necessary
Previously we would generate function names for anonymous functions
on every AssignmentExpression, even if we weren't assigning a function.

We were also setting names of anonymous functions in arrays, which is
apparently a SpiderMonkey specific behavior not supported by V8, JSC
or required by ECMA262. This patch removes that behavior.

This is a huge performance improvement on the CanvasCycle demo! :^)
2021-03-21 21:39:39 +01:00
Andreas Kling
1603623772 LibJS: Move AST node stack from VM to Interpreter 2021-03-21 16:02:11 +01:00
Idan Horowitz
b3b8c01ebf LibCompress: Convert GzipDecompressor from recursive to iterative
This way a gzip compressed file that contains a large amount of small
blocks wont cause a stack overflow.
2021-03-21 15:46:35 +01:00
Cesar Torres
b7d726e226 LibGUI: Fix crash when getting text of selected line after a line delete 2021-03-21 11:45:22 +01:00