Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-05-27 | AK: Add ensure_capacity() for HashMap and HashTable. | Andreas Kling | |
These functions make sure that the underlying table can accomodate at least 'capacity' entries before needing a rehash. | |||
2019-05-27 | SharedGraphics: Make Rect::shatter() return a Vector<Rect, 4>. | Andreas Kling | |
We know that shatter() will never return more than four rects, so we can use vector inline capacity to always avoid heap allocation here. | |||
2019-05-27 | LibCore: Add CObject::for_each_child_of_type<T>() | Andreas Kling | |
Use this to iterate over all the GRadioButtons in a group. | |||
2019-05-27 | LibCore+LibGUI: Add is<T>(CObject&) and to<T>(CObject&) helpers. | Andreas Kling | |
2019-05-27 | LibGUI: Add GWidget::for_each_child_widget(callback). | Andreas Kling | |
2019-05-27 | LibCore: Add CObject::for_each_child(callback). | Andreas Kling | |
2019-05-27 | GFilePicker: Add a preview pane on the right-hand side for image previews. | Andreas Kling | |
Currently the preview pane is always open, but maybe it should be something you can configure, or something that happens automagically. | |||
2019-05-27 | FileSystemPath: Add a has_extension() helper. | Andreas Kling | |
This code: if (path.string().to_lowercase().ends_with(".foo")) Can now be written as: if (path.has_extension(".foo")) | |||
2019-05-26 | GFilePicker: Return paths as FileSystemPath rather than String | faissaloo | |
2019-05-26 | WSCompositor: Allow a compose to bypass the timer when it first happens | Robin Burchell | |
d66fa60fcf23fa7217a065479af6b1f5a851a506 introduced the use of a timer to coalesce screen updates. This is OK, but it does introduce update latency. To help mitigate the impact of this, we now have a second (immediate) timer. When a compose pass is first triggered, the immediate timer will allow the compose to happen on the next spin of the event loop (so, only coalescing updates across a single event loop pass). Any updates that trigger while the delayed timer is running, though, will be delayed to that (~60fps) timer. This fixes #103. | |||
2019-05-26 | CEventLoop: Make it possible to determine running/quit state without using ↵ | Robin Burchell | |
exec() ... by removing a redundant member that nothing uses (running), and exposing whether or not quit has been requested. | |||
2019-05-26 | IDEDiskDevice: Implement basic DMA writes. | Andreas Kling | |
This could share more code with reads, and generally be better. But it works and it's considerably faster than PIO, so let's use it. :^) | |||
2019-05-26 | Shell: A '>' redirection target should be truncated. | Andreas Kling | |
2019-05-26 | WSCompositor: Use a timer to schedule compose rather than an event | Robin Burchell | |
Really poor man's vsync. Still not actual vsync, but at least we won't constantly spin buffers if we get many dirty rects. | |||
2019-05-26 | AK: Implement String::to_int (#99) | Faissal Bensefia | |
2019-05-26 | WSEventLoop: Don't assert when being told to construct a crazy window type | Robin Burchell | |
Seriously non-cool :( | |||
2019-05-26 | GTextEditor: Take frame size into account when setting clip rect | Robin Burchell | |
The ruler right does not include the (already translated) frame size. Take that into account too, otherwise we overdraw the ruler. Fixes #23. | |||
2019-05-26 | Userland: Add a helpful little program for provoking different crashes. | Andreas Kling | |
Currently supported crash types: -s : Segmentation violation -d : Division by zero -i : Illegal instruction -a : Abort | |||
2019-05-26 | LibC: Implement abort() as raise(SIGABRT). | Andreas Kling | |
2019-05-26 | Kernel: Sending a signal to yourself should block until dispatch. | Andreas Kling | |
By moving the sending (and receiving) thread into the BlockedSignal state, we ensure that the thread doesn't continue executing until the signal has been dispatched. | |||
2019-05-26 | Kernel: Send more specific signals when crashing due to CPU exceptions. | Andreas Kling | |
- For division by zero, send SIGFPE. - For illegal instruction, send SIGILL. - For the rest, default to SIGSEGV. | |||
2019-05-26 | Shell: When a command is terminated by a signal, print signal description. | Andreas Kling | |
Previously we were only printing the signal number (except for SIGINT.) | |||
2019-05-26 | LibC: Let the string for SIGFPE be "Division by zero". | Andreas Kling | |
That's really what we send this signal for, so let's call it that. | |||
2019-05-26 | QuickSort: Don't sort a single item, nothing to do | Robin Burchell | |
2019-05-26 | ReadMe: Add myself to authors section while I'm doing something useful | Robin Burchell | |
2019-05-26 | Shell: Add append operator (>>) | Robin Burchell | |
Fixes #93. | |||
2019-05-26 | Kernel: Support O_APPEND | Robin Burchell | |
As per the manpage, this acts as a transparent lseek() before write. | |||
2019-05-26 | LibGUI: Unbreak popup menus, now that invalid menus have ID -1. | Andreas Kling | |
2019-05-25 | WindowServer: Tweak window titlebar look somewhat. | Andreas Kling | |
Add a subtle shadow to the titlebar text. Also make the titlebar one pixel taller to fully accomodate the 90s "3D frame" effect. :^) | |||
2019-05-25 | WindowServer: Remove unused old "middle border" color. | Andreas Kling | |
2019-05-25 | GButton: Align the button text according to text_alignment(). | Andreas Kling | |
Added a Rect::align_within(other_rect, alignment) helper that seemed useful. | |||
2019-05-25 | Ext2FS: Block #0 can terminate an inode block list early. | Andreas Kling | |
We were already handling this for the indirect blocks, but the direct ones would happily consider #0 to be a valid block list entry. | |||
2019-05-25 | Base: Add a 32x32 icon for Minesweeper. | Andreas Kling | |
2019-05-25 | Base: Tweak the small Terminal icon slightly. | Andreas Kling | |
2019-05-25 | Ext2FS: Fix build with EXT2_DEBUG enabled, and tweak some variable names. | Andreas Kling | |
2019-05-25 | Base: Make a 32x32 icon for Snake. | Andreas Kling | |
2019-05-25 | GSlider: Oops, fix typo in previous commit. | Andreas Kling | |
2019-05-25 | LibGUI: Notify widgets when their enabled state changes. | Andreas Kling | |
This is done by dispatching a (synchronous) "EnabledChange" event that can be picked up in change_event(). Use this event to kick widgets out of their "being pressed"-type modes if the user is interacting with them while the state is programmatically changed. | |||
2019-05-25 | WindowServer: Don't draw titlebar separator for titlebar-less windows. | Andreas Kling | |
2019-05-25 | LibGUI: Elide the text in GCheckBox and GRadioButton when low on space. | Andreas Kling | |
2019-05-25 | StylePainter: Remove some unused code. | Andreas Kling | |
2019-05-24 | WindowServer: Make it possible to turn off window title bars (#88) | Christopher Dumas | |
Also, Launcher now does not use titlebars. Only check if titlebar should be shown if the window type works with that. | |||
2019-05-24 | GSlider: Ignore mouse events when disabled. | Andreas Kling | |
2019-05-24 | GLabel: Paint the text with a disabled look when appropriate. | Andreas Kling | |
Also turn on right-side text elision in all cases by default. | |||
2019-05-24 | LibGUI: When tabbing between focusable widgets, skip over disabled ones. | Andreas Kling | |
2019-05-24 | LibGUI: Share code for text painting in GAbstractButton. | Andreas Kling | |
This gives all the GAbstractButton a consistent disabled appearance. | |||
2019-05-24 | Demos: Start working on a simple WidgetGallery app. | Andreas Kling | |
It's good to have a place where we can try out all the different widgets. This needs some more work on a nice layout, and should also include more of the widgets. :^) | |||
2019-05-24 | WindowServer: Remove some unused WSWindowManager members. | Andreas Kling | |
2019-05-24 | Launcher loads applications from Launcher.ini, is started by default, and is ↵ | Christopher Dumas | |
resized automatically Co-Authored-By: Andreas Kling <awesomekling@gmail.com> | |||
2019-05-24 | WindowServer: Factor out compositing from WSWindowManager into WSCompositor. | Andreas Kling | |
This is far from finished and the two classes are awkwardly grabbing at each other's innards, but here's a first step in the right direction. |