Age | Commit message (Collapse) | Author |
|
If the icons could not be loaded, we fall back to the defaults (which
are the bitmaps that were always used before.)
|
|
This allows both typing the path, and selecting it with a file-open
dialog.
|
|
Previously, these would continue to show the previously entered values,
until you interacted with the ComboBoxes.
|
|
The editing UI at the bottom is now split into two groups, one for
colors and one for metrics.
|
|
|
|
|
|
The inactive window previously didn't have a background fill, so it
looked odd.
|
|
The old behavior of restarting the timer after every second click could
result in double-click-chains (or triple+ clicks), which does not feel
like the right behavior.
By resetting the double-clicking timer, you need to perform a new full
double-click to make the arrows change color again.
|
|
This resolves #10641.
|
|
This was introduced in 74f1f2b5e2ed9b06f7dc5c4a247c8512c8b3ec32.
I have no idea why the checker script didn't pick it up. Bash bug maybe?
|
|
The shuffling algorithm uses a naïve bloom filter to provide random
uniformity, avoiding items that were recently played. With 32 bits,
double hashing, and an error rate of ~10%, this bloom filter should
be able to hold around ~16 keys, which should be sufficient to give the
illusion of fairness to the shuffling algorithm.
This avoids having to shuffle the playlist itself (user might have
spent quite a bit of time to sort them, so it's not a good idea to mess
with it), or having to create a proxy model that shuffles (that could
potentially use quite a bit of memory).
|
|
Let's use the nice APIs we have, and make the M3U parser a bit more
readable, shorter, and resilient.
|
|
This is a first pass at refactoring SoundPlayer so that the View widget
is decoupled from the player itself.
In doing so, this fixed a couple of issues, including possibly
inconsistent states (e.g. player could be paused and stopped at the
same time).
With the change, Player actually controls the show, and calls methods
overriden by its subclasses to perform actions, such as update the Seek
bar; the hard work of massaging the raw data is done by the Player
class, so subclasses don't need to reimplement any of these things.
This also removes some copies of playlist management code that happened
to be copied+pasted inside callbacks of buttons -- it now lives inside
a neatly packaged Playlist class, and the Player only asks for the next
song to play.
In addition, the menu bar has been slightly rearranged.
|
|
Add option to reverse primary and secondary buttons in Mouse Settings.
- WindowServer.ini: add default entry
- switch-mouse-buttons.png: new icon for settings entry
- Mouse.gml/MouseWidget.*: new settings dialog
- ClientConnection/WindowManager/Server: window message for settings
- EventLoop.cpp: swap buttons 1 and 2 if settings are on
|
|
It was comparing if they both had the same index position (which was
always false).
|
|
From what I think, the array should consist of point indexes that have
been matched instead of just the last one.
For example, these are the array contents after searching 'file' for
'File Manager':
- Before: [ 3 ]
- Now: [ 0, 1, 2, 3 ]
Besides that, this greatly improves the scoring logic, as it can now
calculate bonuses.
Closes: #8310
|
|
This does not change the results, but makes the code clearer.
|
|
|
|
Found by clazy.
|
|
Let's use the same name as the spec. :^)
|
|
They were previously taking up 9% of samples in a profile of PixelPaint
while selecting a mask, and as a result of moving them to the header
they were inlined, which effectively eliminated them from the profile.
|
|
|
|
|
|
|
|
This method will eventually be removed once all native functions are
converted to ThrowCompletionOr
|
|
The old versions were renamed to JS_DECLARE_OLD_NATIVE_FUNCTION and
JS_DEFINE_OLD_NATIVE_FUNCTION, and will be eventually removed once all
native functions were converted to the new format.
|
|
When the image is flipped or rotated, the window is resized to ensure
that the image still fits in the frame. However, currently the original
bitmap rect is used, which doesn't take into account the scaling
factor. Fix this by using the scaled rect instead.
|
|
Off by default.
|
|
The Stack tab doesn't display this information anyway, so there's no
need to have it calculated and returned to us.
|
|
|
|
|
|
|
|
|
|
This part is also quite needed when opening files from drag-and-drop
events.
|
|
|
|
|
|
Previously, when the last layer got deleted, the active layer was
set to nullptr, causing a crash.
Now, we create a new transparent background layer with the image
dimensions instead.
|
|
Using a table display this information in a much more organised and
flexible way than than what can be achieved with a TextEditor.
|
|
|
|
|
|
|
|
Also update get_function_name() to use ThrowCompletionOr, but this is
not a standard AO and should be refactored out of existence eventually.
|
|
Since there's no global API for being able to just assign a callback
function to config changes, I've made an inline struct in desktop
mode with the sole purpose of checking to see if the Wallpaper
entry has changed, and then updates GUI::Desktop.
It's pretty neat seeing the wallpaper change as soon as you edit the
config file :^)
|
|
Prior this patch, you couldn't remove any files from the context menu
if you didn't have write access to them.
It was incorrect, as the write permission for files means that you can
modify the contents of the file, where for directories it means that
you can create, rename, and remove the files there.
|
|
|
|
|
|
|
|
|
|
Turns out size_t is not guaranteed to be 64-bit on i686 and trying to
set the max value using a u64 caused a narrowing conversion.
|
|
The memory and CPU graphs fail to display anything when the memory size
is larger than 2**31 bytes, because of the small range of int. This
commit makes replaces the type with size_t. Hopefully nobody will have
18 quintillion bytes of memory before this gets replaced. :^)
|