Commit graph

8560 commits

Author SHA1 Message Date
Andreas Kling
f7a1696087 LibJS: Add MarkedValueList and use it for argument passing
A MarkedValueList is basically a Vector<JS::Value> that registers with
the Heap and makes sure that the stored values don't get GC'd.

Before this change, we were unsafely keeping Vector<JS::Value> in some
places, which is out-of-reach for the live reference finding logic
since Vector puts its elements on the heap by default.

We now pass all the JavaScript tests even when running with "js -g",
which does a GC on every heap allocation.
2020-04-19 17:34:33 +02:00
AnotherTest
cb3cf589ed LibLine: Allow suggestions to have trailing trivia strings
These strings would be applied when inserted into the buffer, but are
not shown as part of the suggestion.

This commit also patches up Userland/js and Shell to use this
functionality
2020-04-19 17:21:55 +02:00
AnotherTest
7ef48171ce LibLine: Complete only common prefixes, and tweak suggestion logic
On the first tab, only complete the token without suggesting extra
stuff, and on further tabs, show suggestions.
Except in one case where the completion is all in the buffer, then
we show the suggestions, but do no completion.
2020-04-19 17:21:55 +02:00
angel
238afd37cf FileManager: Replicate permissions on directory copy (#1437)
When copying files, the original file permissions are applied to the
copy. However, this was not done with directories. This should do it.
2020-04-19 17:18:27 +02:00
Linus Groh
2623bd711b Shell: Don't return early if command is in PATH and a directory 2020-04-19 17:17:17 +02:00
angel
11054fc9f9 FileManager: Fix recursive copy on drag
When a drag operation is accepted, we don't check whether the source
nodes contain the destination directory. This could trigger an unwanted
recursive copy.
2020-04-19 17:16:08 +02:00
Linus Groh
fc09767872 Shell: Explicitly check if command is a directory
This is a bit nicer than getting "Exec format error" after trying to
execvp() a directory.
2020-04-19 15:37:07 +02:00
angel
0ec37c0d64 FileManager: Ignore empty selections on tree view
If the selection is empty, the model index will be invalid and the file
system model will return the root directory path by default. This causes
the file manager to jump to the root directory when the currently
selected item on the tree view is deselected.
2020-04-19 15:23:16 +02:00
Linus Groh
440f017946 Base: Update js(1) manpage
- Include all options
- Update example REPL session to match current output
- Mention REPL's help()
- Add test mode section
2020-04-19 15:22:31 +02:00
Andreas Kling
afdba94f63 LibJS: Fix expectations in the function-TypeError.js test
They now match the new, more verbose error messages.
2020-04-19 14:51:47 +02:00
Andreas Kling
b251091a6a LibJS: CallExpression shouldn't throw TypeError or non-constructor call
This unbreaks the entire test suite. :^)
2020-04-19 14:51:47 +02:00
Vojtech Moravec
90f8a7a36b
Browser: Make removal of bookmark persistent (#1865)
Json model wasn't stored after bookmark removal.
Store the model if remove() was successful.
2020-04-19 14:43:16 +02:00
Andreas Kling
1b2d954d47 WindowServer: Remove debug spam in set_active_window() 2020-04-19 13:56:41 +02:00
Andreas Kling
453b678346 WindowServer: Don't automatically focus desktop window when added
Normally we focus any window that's added to the window stack. However,
for WindowType::Desktop this gets annoying since if the desktop manager
comes up after other GUI processes have already started, it steals the
focus from them.

Solve this by only auto-focusing desktop windows if they are the very
first window added.
2020-04-19 12:09:48 +02:00
Andreas Kling
2a9e29fbb8 LibJS: Add DeferGC, a RAII way to prevent GC temporarily 2020-04-19 12:09:32 +02:00
Sergey Bugaev
15daf88e93 Base: Document open(1) 2020-04-19 11:14:26 +02:00
Sergey Bugaev
b6eb7f42ac Userland: Add open(1)
This is a simple utility for invoking Core::DesktopServices::open() from command
line :^)
2020-04-19 11:14:26 +02:00
Sergey Bugaev
eacde6c499 Browser: Fix opening non-file URLs passed in argv 2020-04-19 11:14:26 +02:00
Sergey Bugaev
0aeff9c0c4 AK: Add URL::create_with_url_or_path()
This is an utility to create a URL from a given string, which may be either a
URL such as http://example.com (which will be used as-is), or a file path such
as /etc/fstab (which will be transformed into file:///etc/fstab).
2020-04-19 11:14:26 +02:00
Sergey Bugaev
5a96a6565b AK: Consider more URLs invalid
Not just http or https. This fixes "foo" being recognized as a valid URL with
protocol "foo", empty host and empty path.
2020-04-19 11:14:26 +02:00
Sergey Bugaev
50c139e61c LibCore: Check for fork() failure
For those good boy points :^)
2020-04-19 11:14:26 +02:00
Sergey Bugaev
f8b2a7b4a7 LibCore+LibGUI: Move DesktopServices to LibCore 2020-04-19 11:14:26 +02:00
Linus Groh
03f2024b6e LibJS: Improve CallExpression::execute()'s error messages 2020-04-19 11:00:39 +02:00
Brendan Coles
4e9643981f Base: Update Redmond theme window borders to appear less flat 2020-04-19 10:53:09 +02:00
Noah Rosamilia
3c9a870b8f
Ports: Add frotz port (#1859) 2020-04-19 02:10:41 +02:00
Brendan Coles
1c44ae6d19 Demos: Add Screensaver demo 2020-04-19 02:09:50 +02:00
Kesse Jones
856ab9c600 LibJS: Add Array.prototype.slice 2020-04-19 02:09:06 +02:00
Linus Groh
3474d7c88e WindowServer/LibGUI: Enforce minimum window size 2020-04-19 02:07:45 +02:00
Linus Groh
71d6459b7f LibJS: Use AK::String::index_of() for StringPrototype::index_of() 2020-04-18 22:24:22 +02:00
Stephan Unverwerth
bf5b251684 LibJS: Allow reserved words as keys in object expressions. 2020-04-18 22:23:20 +02:00
Andreas Kling
0345fdcb77 WindowServer: Allow WindowType::Desktop windows to become active
This allows us to focus the desktop and interact with it normally. :^)
2020-04-18 22:15:59 +02:00
Andreas Kling
5dd87c18c4 Base: Start a desktop FileManager by default! :^) 2020-04-18 22:09:40 +02:00
Andreas Kling
dee5d8a047 Build: Make sure to create a /home/anon/Desktop directory 2020-04-18 22:07:15 +02:00
Andreas Kling
7dbb8b6f09 FileManager: Allow running in desktop mode
FileManager can now be started with the --desktop argument. When it's
started in this mode, it will run as a WindowType::Desktop window and
not create any of its regular UI.

The desktop version of the file manager is currently pretty bare-bones
but we can improve it over time and share more code with the regular
file manager windows.

I think this is pretty cool! :^)
2020-04-18 22:04:41 +02:00
Andreas Kling
d42e380906 FileManager: Use URL::create_with_file_protocol() in one place 2020-04-18 22:03:05 +02:00
Andreas Kling
afb9ee2af8 Browser: Use URL::create_with_file_protocol() in one place 2020-04-18 22:02:41 +02:00
Andreas Kling
79eee65372 AK: Add URL::create_with_file_protocol(path)
This is a convenience helper that allows you to easily construct a
file:// URL from an absolute path.
2020-04-18 22:02:04 +02:00
Andreas Kling
75daf3857b FileManager: Use GUI::DesktopServices::open() to open files
Instead of squirreling away this logic deep in the FileManager app,
we now delegate file opening to GUI::DesktopServices.
2020-04-18 21:58:04 +02:00
Andreas Kling
3f08dd5ddc LibGUI: Add GUI::DesktopServices::open(URL)
This API is used to open a URL in whatever way the desktop system feels
is best. If you give it a file:// URL, it will try to work out a good
application to open the URL with. For all other protocols, it will open
a Browser instance. :^)
2020-04-18 21:56:28 +02:00
Andreas Kling
d17b42b28d LibGUI: Make view widgets fill background by default
Most clients will want background autofill, so let's make it the
default mode.
2020-04-18 21:55:37 +02:00
Andreas Kling
c7b7b65309 LibGUI: Fix ItemView crash when rubberbanding in main widget view
For some reason this was trying to access the Palette of the parent
widget which is obviously not going to work if the ItemView itself is
the main widget in its window.
2020-04-18 21:25:43 +02:00
Andreas Kling
54c980dbf2 LibGUI: Make ItemView respect Widget::fill_with_background_color()
This makes it possible to create a see-through ItemView. :^)
2020-04-18 21:23:39 +02:00
Andreas Kling
95805c0e56 WindowServer: Give the desktop window the whole exact desktop rect 2020-04-18 21:18:11 +02:00
Andreas Kling
3d31f2e44b WindowServer: Add WindowType::Desktop
This new window type can be used to implement a desktop file manager
for example. :^)
2020-04-18 21:10:16 +02:00
Andreas Kling
88908be350 LibWeb: Parse <br/> into a self-closed br element
We were parsing "<br/>" as an open tag with the name "br/". This fixes
that specific scenario.

We also rename is_self_closing_tag() to is_void_element() to better fit
the specs.
2020-04-18 20:35:18 +02:00
Andreas Kling
6adea6069a Base: Tweak Redmond 2000 selection color 2020-04-18 20:35:18 +02:00
Brendan Coles
e87347e1d3 IRCClient: Use sub-menus for app channel menu and member context menu 2020-04-18 19:49:05 +02:00
Andreas Kling
2de843692c Base: Tweak Redmond 2000 menu selection color 2020-04-18 19:44:57 +02:00
Andreas Kling
3bed5e28fb Base: Add a "Redmond 2000" theme from the 32-bit era :^) 2020-04-18 19:42:38 +02:00
Andreas Kling
638130591c Taskbar: Remove frame around quick-launch icons 2020-04-18 18:22:37 +02:00