1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 03:37:34 +00:00
Commit graph

3030 commits

Author SHA1 Message Date
Liav A
649f78d0a4 LibGfx+Ladybird+Userland: Don't sniff for TGA images with only raw bytes
Because TGA images don't have magic bytes as a signature to be detected,
instead assume a sequence of ReadonlyBytes is a possible TGA image only
if we are given a path so we could check the extension of the file and
see if it's a TGA image.

When we know the path of the file being loaded, we will try to first
check its extension, and only if there's no match to a known decoder,
based on simple extension lookup, then we would probe for other formats
as usual with the normal sniffing method.
2023-01-18 21:48:35 +01:00
Arda Cinar
f7fe9e3355 SoundPlayer: Log loader errors and otherwise ignore them for now
Playback can resume after encountering loader errors (though not
always). Ideally, these should be visible to the user and the loader
state should be reset after encountering such errors. This patch
also has the side effect of not crashing on seek when playing MP3 files
(However, it still does not seek to the correct location) :^)
2023-01-18 10:44:19 +01:00
Sam Atkins
1dd6b7f5b7 AK+Everywhere: Rename JsonObject::get() to ::get_deprecated()
This is a preparatory step to making `get()` return `ErrorOr`.
2023-01-17 19:52:52 -05:00
Jelle Raaijmakers
78926c182f Presenter: Increase the minimum widget size
The previous 100x100 size was a bit too small for comfort :^)
2023-01-17 19:30:51 -05:00
Jelle Raaijmakers
677d27d36a Presenter: Restructure menu to be more consistent with other apps
Add a "Quit" action and create a separate "Help" menu.
2023-01-17 19:30:51 -05:00
Tim Schumacher
caeb772894 SoundPlayer: Specify the total sample count in playback device samples
The current sample count is already reported like that, so this fixes a
mismatch between current and total. In the future, we should look into
abstracting this away properly instead of requiring the user to think of
converting it manually everywhere.
2023-01-17 21:54:23 +01:00
Tim Ledbetter
9c7f4bafdf Assistant: Debounce text input on_change event
This prevents unnecessary queries being executed when pasting text
or typing very quickly. The debounce timeout is 5ms, which is half the
rate at which the UI is updated. Therefore, there should be no
noticable impact on user experience.
2023-01-17 21:52:21 +01:00
Tim Ledbetter
d9aa7eacc6 Assistant: Cache results for each query by provider
Previously, results were cached for each query in a single list.
The majority of CPU time was spent determining which items in the
cache had been seen previously. This commit removes the need to
check previous results by holding a separate list of results for each
provider type.

This makes Assistant feel much more responsive to user input,
especially when the filesystem has a lot of files.
2023-01-17 21:52:21 +01:00
Tim Ledbetter
3fb4d50982 PixelPaint: Preserve layer location when copying layers
Location metadata is now included when copying a layer to the
clipboard. This allows a pasted layer to be placed in the location it
was copied from.
2023-01-17 00:36:01 +01:00
Lucas CHOLLET
c6aeb9811c Spreadsheet: Port to Core::Stream
It also takes advantage of the new, `Core::Stream`-friendly, interface
in `LibFileSystemAccessClient`.
2023-01-16 17:28:32 +03:30
Lucas CHOLLET
81008062a7 Spreadsheet: Port from Result to ErrorOr 2023-01-16 17:28:32 +03:30
Lucas CHOLLET
4952cdfe2b Spreadsheet: Move to a non-owning model for Stream in Writer::XSV 2023-01-16 17:28:32 +03:30
Lucas CHOLLET
07f0873531 Presenter: Disable "Next" and "Previous" actions when non-applicable 2023-01-16 08:28:11 +01:00
Lucas CHOLLET
2372b3b8f9 Presenter: Add Presentation::has_a_[next,previous]_frame() 2023-01-16 08:28:11 +01:00
Tim Ledbetter
dd582e4ae3 PixelPaint: Hold shift to increase move tool speed with the arrow keys
Holding shift while using the move tool with the arrow keys now moves
the selected layer in 10 pixel increments.
2023-01-15 19:11:25 +01:00
Lucas CHOLLET
667ac961b5 Presenter: Use the non-deprecated API of LibFileSystemAccessClient
The patch is tiny as Presenter is only using `LibFSAC` for its file
picker. Using only `LibFSAC` in Presenter would be nice.
2023-01-15 11:37:21 +01:00
Timothy Flynn
afeb7273cc LibJS+Everywhere: Rename Value::to_string to to_deprecated_string 2023-01-15 01:00:20 +00:00
Timothy Flynn
0ddc2e1f50 LibCrypto+Everywhere: Rename *BigInteger::to_base to to_base_deprecated 2023-01-15 01:00:20 +00:00
Timothy Flynn
a59ebdac2d LibJS+Everywhere: Return strings by value from PrimitiveString
It turns out return a ThrowCompletionOr<T const&> is flawed, as the GCC
expansion trick used with TRY will always make a copy. PrimitiveString
is luckily the only such use case.
2023-01-13 18:50:47 -05:00
MacDue
09f02d912a FontEditor: Fix more ignored .to_string() errors 2023-01-13 21:09:26 +00:00
Tim Ledbetter
ecc202c59d PixelPaint: Hold shift to constrain polygonal select tool line angle
Holding shift while using the polygonal select tool now constrains the
line angle in 22.5 degree increments. This matches the behavior of the
line tool.
2023-01-13 15:52:57 +01:00
Tim Ledbetter
569ef94228 PixelPaint: Don't allow the move tool to resize to zero pixels
This prevents an error message appearing when we attempt to scale
a layer to zero pixels using the move tool.
2023-01-13 15:45:28 +01:00
Timothy Flynn
8ccd6a31dc GamesSettings: Draw one of the previewed cards as "highlighted"
And draw a valid "moving" card over it to indicate that it is
highlighted for a reason.
2023-01-13 12:58:06 +00:00
Timothy Flynn
c0756d8e55 GamesSettings: Paint the card preview frame using a CardGame subclass
We currently paint the 3 previewed cards using ImageWidget. This works
fine, but in order to preview a card hovering over a valid target card,
it will be easier to use the already-existing CardGame paint logic. So
this patch changes GamesSettings to display the preview as-is using a
CardGame.
2023-01-13 12:58:06 +00:00
Timothy Flynn
208653a93c GamesSettings: Move classes into the GamesSettings namespace
This is to allow registering future classes as with GML.
2023-01-13 12:58:06 +00:00
Liav A
e241b47fee Userland: Remove a bunch of unveil calls on /sys/kernel/processes
These are not needed anymore since the introduction of the new
get_root_session_id syscall.
2023-01-13 13:41:30 +01:00
Linus Groh
2428e3e675 LibWebView+Ladybird: Move DOM inspection helpers to ViewImplementation 2023-01-12 23:39:36 +01:00
Linus Groh
36866730ce Browser: Implement zoom :^)
Largely based on the Ladybird implementation in 0cc151b.
2023-01-12 18:52:32 +00:00
Tim Schumacher
877be0eb43 SoundPlayer: Don't silently ignore parsing failures
If we failed to decode a sample we'd presumably want to tell the user,
and we definitely don't want to just go into another round of decoding
somewhere in the middle of a broken sample.
2023-01-12 16:52:34 +01:00
Karol Kosek
ca7648b1ae LibGUI: Port AbstractThemePreview::set_theme_from_file to Core::Stream 2023-01-12 13:56:11 +01:00
Tim Ledbetter
b0fad409bf PixelPaint: Scale lasso tool preview path on zoom level change
The size of the preview shown by the lasso tool now scales with the
current zoom level.
2023-01-12 11:29:10 +01:00
Sam Atkins
652f87821b Userland: Replace remaining Core::Timer::construct()s with try_create() 2023-01-12 11:25:51 +01:00
Sam Atkins
e181b1cb82 Userland: Use Core::Timer::create_foo() factory functions where possible 2023-01-12 11:25:51 +01:00
Sam Atkins
6edc0cf5ab LibCore+Userland: Don't auto-start new Core::Timers
This was unintuitive, and only useful in a few cases. In the majority,
users had to immediately call `stop()`, and several who did want the
timer started would call `start()` on it immediately anyway. Case in
point: There are only two places I had to add a manual `start()`.
2023-01-12 11:25:51 +01:00
Sam Atkins
a8cf0c9371 LibCore+Userland: Make Core::Timer::create_single_shot() return ErrorOr
clang-format sure has some interesting opinions about where to put a
method call that comes after a lambda. :thonk:
2023-01-12 11:25:51 +01:00
Sam Atkins
a15d44f019 LibCore+Userland: Make Core::Timer::create_repeating() return ErrorOr
The FIXMEs must flow!
2023-01-12 11:25:51 +01:00
Karol Kosek
eed63e8174 ThemeEditor: Warn about unsaved changes on file drop 2023-01-11 20:15:47 +00:00
Karol Kosek
5157a6f6b3 ThemeEditor: Fully load files on drop events
Previously, only the preview frame was updated without changing any
values in the right panel or even a file path in the window title.
2023-01-11 20:15:47 +00:00
Karol Kosek
93a2b2a02d ThemeEditor: Take drop events from the whole window
Drops were handled only by the Preview Widget previously. It probably
made a little more sense before the program redesign, as it took most of
window the space, but now honestly this idea doesn't hold up that well.
2023-01-11 20:15:47 +00:00
Karol Kosek
d4367f42ba PDFViewer: Port to Core::Stream::File 2023-01-10 22:15:23 +00:00
Timothy Flynn
d0403ec14f AK+Everywhere: Rename Utf16View::to_utf8 to to_deprecated_string
A subsequent commit will add to_utf8 back to create an AK::String.
2023-01-09 23:00:24 +00:00
Andreas Kling
3110f5b328 Presenter: Rearchitect on top of LibWeb
This patch replaces the bespoke rendering engine in Presenter with a
simple pipeline that turns presentations into single-page HTML files.
The HTML is then loaded into an OutOfProcessWebView.

This achieves a number of things, most importantly:
- Access to all the CSS features supported by LibWeb
- Sandboxed, multi-process rendering

The code could be simplified a lot further, but I wanted to get the new
architecture in place without changing anything about the file format.
2023-01-09 22:34:57 +00:00
implicitfield
f63ecc2763 VideoPlayer: Port to GML 2023-01-09 17:32:03 +00:00
implicitfield
f0a33b2a8e VideoPlayer: Propagate errors from VideoPlayerWidget::initialize_menubar 2023-01-09 17:32:03 +00:00
Arda Cinar
33ea96912a SpaceAnalyzer: Do not reset the path to '/' after a refresh
Clicking analyze or deleting a file would always cause the tree view in
the widget to reset back to viewing the root. This was changed to stay
in the directory currently being viewed
2023-01-09 17:08:17 +00:00
Arda Cinar
c045ae1a96 SpaceAnalyzer: Keep the current path via filenames, not indices
The tree map widget keeps the current path to allow the user to navigate
between directories. This path was being kept as indices into the
children array. The indices might change after the tree is regenerated
and this change is required to keep the user's current place after a
re-analysis
2023-01-09 17:08:17 +00:00
Arda Cinar
ba33267132 SpaceAnalyzer: Add a method to TreeNode to get a child node by name
This will make it easier to get to a tree node given a file path
2023-01-09 17:08:17 +00:00
Arda Cinar
0d67e60559 SpaceAnalyzer: Make sure data fields of TreeNode are encapsulated
Made the member fields of Tree and TreeNode structures private and moved
the functions in main.cpp that accessed the internals of these
structures inside the TreeNode class
2023-01-09 17:08:17 +00:00
Arda Cinar
8ba37872e9 SpaceAnalyzer: Remove an unnecessary level of inheritance
The TreeMapNode and TreeMap structs inside TreeMapWidget.h both had
single implementers, TreeNode and Tree inside main.cpp. The indirection
was removed and the new structures were moved to their own file
2023-01-09 17:08:17 +00:00
Tim Ledbetter
61074b6b5c Help: Update browse view when opening a new help page
The browse view now always tracks the currently open help page.
2023-01-09 09:55:02 +01:00