Andreas Kling
e655aebd70
Window: Update coding style.
2019-01-16 13:50:24 +01:00
Andreas Kling
b673c1a77d
Build Painter & friends into LibC. Use it in the GUI test app.
2019-01-14 20:02:51 +01:00
Andreas Kling
b0e3f73375
Start refactoring the windowing system to use an event loop.
...
Userspace programs can now open /dev/gui_events and read a stream of GUI_Event
structs one at a time.
I was stuck on a stupid problem where we'd reenter Scheduler::yield() due to
having one of the has_data_available_for_reading() implementations using locks.
2019-01-14 14:42:49 +01:00
Andreas Kling
bac9aa90dd
Update Painter class to the new coding style.
2019-01-12 17:02:54 +01:00
Andreas Kling
f6d2c3ed87
Hook everything up to run the GUI on top of the kernel.
...
Okay things kinda sorta work. Both Bochs and QEMU now boot into GUI mode.
There's a ton of stuff that doesn't make sense and so many things to rework.
Still it's quite cool to have made it this far. :^)
2019-01-10 23:19:29 +01:00
Andreas Kling
ceb373cf71
More window manager hacking. FocusIn/FocusOut events.
2019-01-09 05:40:04 +01:00
Andreas Kling
cfd76ade73
Stop recomposing the window hierarchy after every dang widget paint.
2019-01-09 04:46:16 +01:00
Andreas Kling
9963da9005
Start refactoring graphics system to have per-window backing stores.
...
It was fun for everyone to share a single framebuffer but it was also
kinda really awful. Let's move towards having a "GraphicsBitmap" as the
backing store for each Window.
This is going to need a lot of refactoring so let's get started.
2019-01-09 02:06:04 +01:00
Andreas Kling
fc1facf5c0
Let widget have a font() instead of using Font::defaultFont() everywhere.
2018-10-14 13:06:05 +02:00
Andreas Kling
959a1b0750
Close the MsgBox when clicking the OK button.
...
This feels vaguely crashy. I haven't tested window/widget destruction
before so there's sure to be bugs.
2018-10-14 01:23:01 +02:00
Andreas Kling
3ebea05996
Add a simple MsgBox() :^)
2018-10-14 00:21:42 +02:00
Andreas Kling
a3fb19fe9c
Use fooEvent() type names for the virtual event handlers.
2018-10-13 22:51:50 +02:00
Andreas Kling
6f1b384cde
More work on focus.
...
ListBox now renders differently depending on focus state.
2018-10-13 20:59:25 +02:00
Andreas Kling
1929cb6b71
Implement basic focus.
2018-10-13 17:52:47 +02:00
Andreas Kling
e16d145cb4
Some color cleanup.
2018-10-12 23:02:23 +02:00
Andreas Kling
6f9e0e3876
After moving a window, try to repaint a bit less.
...
Only repaint windows that intersect either the old or the new rect.
Also only repaint those rects in the root widget.
2018-10-12 19:39:48 +02:00
Andreas Kling
16576112b0
Add a CheckBox widget.
2018-10-12 14:16:40 +02:00
Andreas Kling
c7463aad11
Add a CBitmap class. The C is for Courage.
2018-10-12 12:49:45 +02:00
Andreas Kling
73895ce043
Add a clock widget.
2018-10-12 12:18:59 +02:00
Andreas Kling
6f6f9bd84d
Window contents move along with the window!
2018-10-12 02:41:27 +02:00
Andreas Kling
64127e0637
Very hacky support for dragging a window around.
2018-10-12 02:24:05 +02:00
Andreas Kling
415c4b90c5
Start adding a Window class.
2018-10-12 01:03:22 +02:00
Andreas Kling
a4491e9630
More hacking on Widgets.
2018-10-11 16:52:40 +02:00
Andreas Kling
ab5266b924
Rage hacking on TerminalWidget.
...
There's some really hideous plumbing with globals going on here, but my
priority right now is getting a basic VT100 terminal emulator working.
2018-10-11 12:33:03 +02:00
Andreas Kling
f337616741
More hacking on Widgets.
2018-10-11 01:48:09 +02:00
Andreas Kling
6f37429f57
Intense hacking on Widgets.
2018-10-10 16:49:36 +02:00
Andreas Kling
8c84f9749e
Start working on a Widgets library.
2018-10-10 15:12:38 +02:00