Commit graph

2549 commits

Author SHA1 Message Date
faissaloo
6ac8aab941 GFilePicker: Return paths as FileSystemPath rather than String 2019-05-26 22:52:09 +02:00
Robin Burchell
9b86eb9fad WSCompositor: Allow a compose to bypass the timer when it first happens
d66fa60fcf 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 18:22:33 +02:00
Robin Burchell
8df3e2516f CEventLoop: Make it possible to determine running/quit state without using exec()
... by removing a redundant member that nothing uses (running), and
exposing whether or not quit has been requested.
2019-05-26 18:17:40 +02:00
Andreas Kling
bb288c1baf IDEDiskDevice: Implement basic DMA writes.
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 14:58:21 +02:00
Andreas Kling
dd595fe865 Shell: A '>' redirection target should be truncated. 2019-05-26 14:57:12 +02:00
Robin Burchell
d66fa60fcf WSCompositor: Use a timer to schedule compose rather than an event
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 04:10:05 +02:00
Faissal Bensefia
411cdf067b AK: Implement String::to_int (#99) 2019-05-26 04:08:36 +02:00
Robin Burchell
79dba9a545 WSEventLoop: Don't assert when being told to construct a crazy window type
Seriously non-cool :(
2019-05-26 03:41:53 +02:00
Robin Burchell
9b2fb47136 GTextEditor: Take frame size into account when setting clip rect
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 02:46:26 +02:00
Andreas Kling
9308ce071f Userland: Add a helpful little program for provoking different crashes.
Currently supported crash types:

    -s : Segmentation violation
    -d : Division by zero
    -i : Illegal instruction
    -a : Abort
2019-05-26 02:35:25 +02:00
Andreas Kling
cde3274ffb LibC: Implement abort() as raise(SIGABRT). 2019-05-26 02:35:25 +02:00
Andreas Kling
0cac84d6bd Kernel: Sending a signal to yourself should block until dispatch.
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 02:35:25 +02:00
Andreas Kling
6ffcee9176 Kernel: Send more specific signals when crashing due to CPU exceptions.
- For division by zero, send SIGFPE.
- For illegal instruction, send SIGILL.
- For the rest, default to SIGSEGV.
2019-05-26 02:35:25 +02:00
Andreas Kling
0fa098845f Shell: When a command is terminated by a signal, print signal description.
Previously we were only printing the signal number (except for SIGINT.)
2019-05-26 02:35:25 +02:00
Andreas Kling
7c37ffd9d8 LibC: Let the string for SIGFPE be "Division by zero".
That's really what we send this signal for, so let's call it that.
2019-05-26 02:35:25 +02:00
Robin Burchell
23a5ce3319 QuickSort: Don't sort a single item, nothing to do 2019-05-26 01:47:41 +02:00
Robin Burchell
eeab2e8bb5 ReadMe: Add myself to authors section while I'm doing something useful 2019-05-26 01:32:05 +02:00
Robin Burchell
aee99b05a6 Shell: Add append operator (>>)
Fixes #93.
2019-05-26 01:32:05 +02:00
Robin Burchell
c6e79bd53a Kernel: Support O_APPEND
As per the manpage, this acts as a transparent lseek() before write.
2019-05-26 01:32:05 +02:00
Andreas Kling
90dbf689c0 LibGUI: Unbreak popup menus, now that invalid menus have ID -1. 2019-05-26 01:07:56 +02:00
Andreas Kling
41ebb3eba3 WindowServer: Tweak window titlebar look somewhat.
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 21:55:53 +02:00
Andreas Kling
34150f0836 WindowServer: Remove unused old "middle border" color. 2019-05-25 21:19:42 +02:00
Andreas Kling
cca510162e GButton: Align the button text according to text_alignment().
Added a Rect::align_within(other_rect, alignment) helper that seemed useful.
2019-05-25 20:15:52 +02:00
Andreas Kling
75b0e5cce5 Ext2FS: Block #0 can terminate an inode block list early.
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 19:19:43 +02:00
Andreas Kling
e1f922ded2 Base: Add a 32x32 icon for Minesweeper. 2019-05-25 18:46:25 +02:00
Andreas Kling
10391bd82b Base: Tweak the small Terminal icon slightly. 2019-05-25 18:23:12 +02:00
Andreas Kling
728327df8a Ext2FS: Fix build with EXT2_DEBUG enabled, and tweak some variable names. 2019-05-25 17:23:17 +02:00
Andreas Kling
9cfd674a75 Base: Make a 32x32 icon for Snake. 2019-05-25 14:21:08 +02:00
Andreas Kling
83aa785c57 GSlider: Oops, fix typo in previous commit. 2019-05-25 13:44:37 +02:00
Andreas Kling
d12857fc36 LibGUI: Notify widgets when their enabled state changes.
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 13:40:57 +02:00
Andreas Kling
e478a2fb0a WindowServer: Don't draw titlebar separator for titlebar-less windows. 2019-05-25 04:17:21 +02:00
Andreas Kling
817ac9c22b LibGUI: Elide the text in GCheckBox and GRadioButton when low on space. 2019-05-25 04:01:22 +02:00
Andreas Kling
be62b42352 StylePainter: Remove some unused code. 2019-05-25 03:29:37 +02:00
Christopher Dumas
957f8b84f2 WindowServer: Make it possible to turn off window title bars (#88)
Also, Launcher now does not use titlebars.
Only check if titlebar should be shown if the window type works with that.
2019-05-24 23:37:23 +02:00
Andreas Kling
cb9134a2ca GSlider: Ignore mouse events when disabled. 2019-05-24 23:03:11 +02:00
Andreas Kling
ac7e02d984 GLabel: Paint the text with a disabled look when appropriate.
Also turn on right-side text elision in all cases by default.
2019-05-24 23:00:36 +02:00
Andreas Kling
b0ccd04a9c LibGUI: When tabbing between focusable widgets, skip over disabled ones. 2019-05-24 22:57:05 +02:00
Andreas Kling
c62be7bb2b LibGUI: Share code for text painting in GAbstractButton.
This gives all the GAbstractButton a consistent disabled appearance.
2019-05-24 22:54:37 +02:00
Andreas Kling
149b7f92a7 Demos: Start working on a simple WidgetGallery app.
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 22:47:41 +02:00
Andreas Kling
d0bc21b96f WindowServer: Remove some unused WSWindowManager members. 2019-05-24 21:11:55 +02:00
Christopher Dumas
dd84dcf31f Launcher loads applications from Launcher.ini, is started by default, and is resized automatically
Co-Authored-By: Andreas Kling <awesomekling@gmail.com>
2019-05-24 20:40:09 +02:00
Andreas Kling
ad908f1395 WindowServer: Factor out compositing from WSWindowManager into WSCompositor.
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.
2019-05-24 19:32:46 +02:00
Andreas Kling
508007f1dd GRadioButton: Draw a focus rect when focused. 2019-05-24 17:41:22 +02:00
Andreas Kling
677794f30d LibGUI: Make GCheckBox inherit from GAbstractButton. 2019-05-24 17:11:42 +02:00
Andreas Kling
21c56477b0 LibGUI: Add a GAbstractButton base class for button widgets.
This patch moves GButton and GRadioButton to inherit from it. This allows
them to share code for mouse event handling, etc.
2019-05-24 16:32:20 +02:00
Andreas Kling
abbcdba72e WindowServer: Add 2560x1440 resolution option.
Also expand the QEMU VGA memory size to 64 MB, since otherwise we won't
have enough memory for double-buffering the screen.
2019-05-24 14:02:17 +02:00
Christopher Dumas
9823354754 LibGUI: Don't crash when updating menu item that's not in the window server (#83)
Don't crash when updating menu item that's not in the window server. Menu Items begin with an invalid ID of -1, and only get a valid ID if the menu they are attached to is added to the window server. They don't send updates to the server unless they have a valid ID.

Fixes #82
2019-05-24 04:31:00 +02:00
Andreas Kling
ebf645d72a Kernel: Tidy up IDEDiskDevice a bit.
The main cleanup here is putting the I/O address base in a member variable.
2019-05-24 04:17:15 +02:00
Andreas Kling
36d8b9e89b LibGUI: Add a GRadioButton widget.
Radio buttons are automagically exclusive with other radio button children
of the same parent. :^)
2019-05-24 02:29:16 +02:00
Christopher Dumas
00075b1c8a Added functionality to make back and forward buttons work in FileManager. Also
fixed it so that directories don't get double-opened (first when they are
opened, and second when the selection changes to match in the file tree view)
2019-05-24 00:24:28 +02:00