Commit Graph

2303 Commits

Author SHA1 Message Date
thankyouverycool
a74f512f6b LibGUI+WindowServer+DisplaySettings: Add Tooltips to SystemEffects
Tooltips can now be toggled on and off system-wide.
2022-08-16 16:53:00 +02:00
thankyouverycool
71a437b512 DisplaySettings: Update Workspaces tab GML
Removes some verbiage and arranges things consistent with other
settings dialogs.

Ideally we shouldn't litter UIs with shortcuts, tips, tricks,
self-evident or redundant descriptions, etc, so this can be
refined again in the future once there's an official way to expose/
customize keyboard shortcuts.
2022-08-16 16:41:47 +02:00
huttongrabiel
279caade73 TextEditor: Correct typo in MainWidget.{cpp,h} 2022-08-16 09:53:30 +01:00
Andreas Kling
6135411ea8 Terminal: Enable double-buffering for the terminal widget
This was disabled originally because of performance paranoia, but it
resulted in flickering sometimes, so let's err on the side of nicer
looking terminals. :^)
2022-08-15 17:18:11 +02:00
davidot
e746360b9a LibJS: Use NaN boxing to decrease the memory size of Values
Using the fact that there are 2^52-2 NaN representations we can
"NaN-box" all the Values possible. This means that Value no longer has
an explicit "Type" but that information is now stored in the bits of a
double. This is done by "tagging" the top two bytes of the double.
For a full explanation see the large comment with asserts at the top of
Value.

We can also use the exact representation of the tags to make checking
properties like nullish, or is_cell quicker. But the largest gains are
in the fact that the size of a Value is now halved.

The SunSpider and other benchmarks have been ran to confirm that there
are no regressions in performance compared to the previous
implementation. The tests never performed worse and in some cases
performed better. But the biggest differences can be seen in memory
usage when large arrays are allocated. A simple test which allocates a
1000 arrays of size 100000 has roughly half the memory usage.

There is also space in the representations for future expansions such as
tuples and records.

To ensure that Values on the stack and registers are not lost during
garbage collection we also have to add a check to the Heap to check for
any of the cell tags and extracting the canonical form of the pointer
if it matches.
2022-08-15 17:11:25 +02:00
huttongrabiel
27abbfdf09 TextEditor: Display widget when needle not found in replace all
When the given needle is not found, replace displays a widget that says
the needle is not found, but replace all does not.

This change adds that widget to replace all.
2022-08-15 13:09:56 +02:00
Andreas Kling
418c6eb13b Terminal: Update window size increments on terminal font change
This fixes an issue where the window resize overlay would display
inaccurate "columns x rows" after a font change. This happened because
we kept using size increments derived from the original font.
2022-08-14 23:33:28 +02:00
Andreas Kling
c3873d8709 Terminal: Rename menu item from "Settings" to "Terminal Settings" 2022-08-14 23:33:28 +02:00
Andreas Kling
33c13f1bdc Browser: Rename menu item from "Settings" to "Browser Settings" 2022-08-14 23:33:28 +02:00
Andreas Kling
24956ba65d SystemMonitor: Add some margin around widgets in the process inspector 2022-08-14 23:33:28 +02:00
Andreas Kling
511ccc3e36 SystemMonitor: Make process name appear in the process inspector again
This regressed with the UI layout system changes.
2022-08-14 23:33:28 +02:00
Lucas CHOLLET
1da9375400 Base: Launch ImageDecoder at session start-up 2022-08-14 21:52:35 +01:00
Lucas CHOLLET
e8115bfdb1 Base: Launch FileSystemAccessServer at session start-up 2022-08-14 21:52:35 +01:00
Lucas CHOLLET
ac7b0e69e5 Base: Launch WebContent at session start-up 2022-08-14 21:52:35 +01:00
Lucas CHOLLET
266e18e0b6 Base: Launch Request at session start-up 2022-08-14 21:52:35 +01:00
Lucas CHOLLET
07e89ad538 Base: Launch ConfigServer at session start-up 2022-08-14 21:52:35 +01:00
Lucas CHOLLET
bee5bcda73 Everywhere: Replace hardcoded anon's uid in unveil path with %uid 2022-08-14 21:52:35 +01:00
Lucas CHOLLET
c5b7c9f479 LibCore+LaunchServer: Move portal directory to /tmp/user/%uid
The `/tmp/user` directory is owned by root, this solution prevents
malicious users to interfere with other users' portals.

This commit also moves `launch`'s portal in the user directory.
2022-08-14 21:52:35 +01:00
kleines Filmröllchen
ec52d16f7a PixelPaint: Add Median filter
The median filter replaces a pixel with the median of all pixels
(usually grey value is used) in a square neighborhood. This is a
standard image processing filter used for denoising, as despite its
simplicity it can e.g. retain edges quite well.

The first implementation is quite inefficient mostly to environmental
constraints. Due to how images are passed to the processing function,
two unnecessary copies happen. And because there's no fast sorting
algorithm for small arrays (insertion sort) yet, quick sort needs to be
used which is quite slow on this scale.
2022-08-14 18:24:55 +01:00
Sam Atkins
ca0e32e59f FontEditor: Mark pasted glyphs as modified
Co-authored-by: thankyouverycool <66646555+thankyouverycool@users.noreply.github.com>
2022-08-14 13:59:19 +01:00
Sam Atkins
5b7168b247 FontEditor: Add an option to show or hide modification highlights 2022-08-14 13:59:19 +01:00
Sam Atkins
7f6bf8c7c1 FontEditor: Store glyph modified state on the undo stack
This means that if you modify a glyph, then undo that modification, we
stop showing the glyph as modified.
2022-08-14 13:59:19 +01:00
cflip
0822bf5580 FileManager: Add 'Set as Desktop Wallpaper' action to file context menu 2022-08-14 09:44:08 +01:00
electrikmilk
a5cef2c41a Base: Add Icon for Partition Editor
This adds a 16x16 and 32x32 icon that is missing for the Partition
Editor.
2022-08-14 00:52:56 +01:00
Sam Atkins
913412e0c5 Browser+Base: Allow opening multiple URLs at once from command line
This lets you run `br example.com wikipedia.org some/local/file.html` in
one go and have them all opened as tabs.
2022-08-13 23:32:52 +02:00
Lucas CHOLLET
9df81e20d7 ThemeEditor: Use FileSystemAccessServer instead of unveiling files 2022-08-13 21:04:06 +01:00
cflip
272917de28 PixelPaint: Allow configuration of default image size through GUI
This adds a checkbox to the new image dialog that allows the user to
set the default values without needing to manually edit the config file
2022-08-13 09:10:29 +01:00
Liav A
488f22941b SystemMonitor: Remove GML references to the deleted Hardware tab 2022-08-12 12:24:40 +02:00
Junior Rantila
d40b0439d8 Terminal: Propagate more errors 2022-08-09 20:09:33 -04:00
thankyouverycool
1d445356b6 DisplaySettings: Add an Effects tab
Effects tab provides the UI for setting SystemEffects.
DisplaySettings is getting a bit crowded and might need a re-org
at some point, but this seems like a good home for effects while
the settings mature.
2022-08-09 12:08:21 +02:00
Karol Kosek
5c4d130af5 Browser: Make Refresh action in tab context menu refresh the chosen tab
It was sending refresh requests to the current tab instead.
2022-08-07 20:49:45 +02:00
Karol Kosek
0db481c763 Browser: Make the bookmark button use an action
This merges 2 duplicated definitions (one for button, second just for
the keyboard shortcut) which also makes the button 'react' on that
shortcut. :^)
2022-08-07 20:49:45 +02:00
Karol Kosek
3b5766d078 Browser: Show bookmark and history page lists under the their buttons
Previously they were showing right under the cursor.
2022-08-07 20:49:45 +02:00
Karol Kosek
8f5968d4ad Browser: Set margins for BookmarkBarWidget
It's just what GUI::Toolbar is using. Changed this to make the bookmark
overflow button align with the bookmark button.
2022-08-07 20:49:45 +02:00
Karol Kosek
d80bc2ba32 Browser: Use overflow-menu icon for hidden bookmarks the button
97b381652a started using that icon for toolbars. Let's also use it here
for the sweet system consistency!
2022-08-07 20:49:45 +02:00
thankyouverycool
a808cfa75c LibGUI+Applications: Govern Splitter resizing by opportunistic growth
This patch replaces the concept of fixed resizees with opportunistic
ones which use the new SpecialDimension::OpportunisticGrow UISize.
This lets us simplify splitter resize code and take advantage of
the layout system's automatic calculations for minimum size and
expansion. Functionally the same as before, but fixes Splitter's
unintended ability to grow window size.
2022-08-05 13:54:18 +02:00
Andreas Kling
50d951aea2 LibJS: Let Shape store a Realm instead of a GlobalObject
This is a cautious first step towards being able to create JS objects
before a global object has been instantiated.
2022-08-05 12:42:46 +02:00
thankyouverycool
7537a045e5 Applications: Make a few of the larger Toolbars collapsible
Some Toolbars for FileManager, FontEditor and PixelPaint can now
collapse on resize.
2022-08-04 02:56:17 +02:00
thankyouverycool
407231f11c FontEditor: Move new font creation to NewFontDialog and handle errors
Fixes potential OOM crashes when creating a new font and an oversight
in which glyph spacing was not being set.
2022-08-04 02:54:00 +02:00
thankyouverycool
807bd6da6c FontEditor: Improve error handling opening, saving and editing fonts
Adds fallible functions for opening and saving fonts and cutting
and copying selections. FontEditor now falls back on a guaranteed
default BitmapFont on startup. Fixes crashing on start when the
default system font is set to TrueType.
2022-08-04 02:54:00 +02:00
thankyouverycool
e9a150c87c FontEditor: Add show_error() helper 2022-08-04 02:54:00 +02:00
thankyouverycool
c044a556db FontEditor: Let editor recover from failed initializations
Fail early during font initialization and leave the editor in a
valid state in case of errors during UndoSelection creation.
2022-08-04 02:54:00 +02:00
Filiph Siitam Sandström
3c1594e9ca DisplaySettings: Capitalize s in screen settings 2022-08-03 21:49:41 +01:00
James Puleo
8c11786145 HexEditor: Rename camel case variable names in HexEditor::save_as
This also changes those variables to be references to the casted
document type, instead of pointers.
2022-08-03 10:12:11 -04:00
James Puleo
88cf40179d HexEditor: Make HexEditor::open_new_file fallible and reduce branching
Returning a `bool` is meaningless, so let's make it more expresive :^)
2022-08-03 10:12:11 -04:00
James Puleo
035d63f528 HexEditor: Remove unused readonly flag
`HexEditor::set_readonly` was never called, even though
`HexEditor::is_readonly` was occasionally queried -- so it's entirely
been removed.
2022-08-03 10:12:11 -04:00
James Puleo
8695ae4c50 HexEditor: Don't spam debug output when finding all strings
For each string found we would output it, which was way too much noise
:^)
2022-08-03 10:12:11 -04:00
James Puleo
0bfcbf0b0a HexEditor: Change Find All Strings shortcut to Ctrl + Shift + F
The previous shortcut of `Ctrl + Shift + S` conflicted with `Save As...`
action shortcut.
2022-08-03 10:12:11 -04:00
Jelle Raaijmakers
379c7c2f64 Run: Trigger on escape key only once
When you press the escape key in the Browse dialog, the key down event
closes the dialog while the key up event then closes the Run window.

Prevent this by only listening to key down events.
2022-08-02 12:54:39 +01:00
Andreas Kling
548081ea23 Userland+Base: Make the window titlebar font configurable separately
Instead of defaulting to "bold variant of the system default font",
let's allow the user to set any font they want as the titlebar font.
2022-08-01 10:29:53 +02:00