Andreas Kling
5d30c6b00c
WindowServer: Add WSClientConnection::create_bitmap().
...
There we go. Now WSWindow doesn't know about Process at all.
2019-02-14 10:29:17 +01:00
Andreas Kling
9ab9734da0
WindowServer: Add WSClientConnection::post_message().
...
This way WSWindow doesn't have to grab at the Process.
2019-02-14 10:15:49 +01:00
Andreas Kling
427df5f312
LibGUI: Yield (using select()) in GEventLoop::wait_for_specific_event().
...
This is factored a bit stupidly. It would be nicer to just have the
read() in drain_events_from_server() be blocking, but the fd is opened
with O_NONBLOCK right now.
This makes everything run real snappy once again. :^)
2019-02-14 10:06:41 +01:00
Andreas Kling
222a6f7bbc
WindowServer: Post error messages to clients on protocol failure.
2019-02-14 09:32:34 +01:00
Andreas Kling
f33f094483
FileManager: Add some menus.
2019-02-14 08:52:12 +01:00
Andreas Kling
28da956a12
WindowServer: Refactor WSClientConnection to have one function per request.
...
This is a lot nicer than the big switch full of code. This stuff has a bit
of a "please generate me instead" vibe to it, but I need to mess around with
it some more to figure out what the needs are.
This patch also unbreaks global cursor tracking, which was forgotten in the
big messaging refactoring.
2019-02-14 08:43:29 +01:00
Andreas Kling
aa7947c889
WindowServer: Add WSClientConnection class to manage an individual client.
...
This makes both object lifetimes and object ID's a lot easier to understand.
2019-02-14 08:22:47 +01:00
Andreas Kling
f529b845ec
WindowServer: Convert entire API to be message-based.
...
One big step towards userspace WindowServer. :^)
2019-02-14 01:21:32 +01:00
Andreas Kling
ef4e9860fd
WindowServer: Convert the remaining menu APIs into messages.
2019-02-13 21:47:14 +01:00
Andreas Kling
cf432b4c3d
WindowServer: Refactor more of the menu APIs to be message-based.
...
This is all pretty verbose but I can whittle it down later. :^)
2019-02-13 18:49:23 +01:00
Andreas Kling
fbbf57b61c
Rename GUI_Event to GUI_ServerMessage.
...
Now that communication is becoming bidirectional, "event" is no longer right.
2019-02-13 17:59:38 +01:00
Andreas Kling
4f98a35beb
WindowServer: Begin refactoring towards a fully asynchronous protocol.
...
In order to move the WindowServer to userspace, I have to eliminate its
dependence on system call facilities. The communication channel with each
client needs to be message-based in both directions.
2019-02-13 17:54:30 +01:00
Andreas Kling
96352ab735
LibGUI: Pass the computed max_fd(+1) to select().
2019-02-13 17:08:13 +01:00
Andreas Kling
1d758fd2ce
WindowServer: Don't spawn new processes with WindowServer as parent.
...
I don't want to have to wait() on them from the WindowServer. Let's just set
new processes free and someone else will take care of them.
2019-02-13 09:53:21 +01:00
Andreas Kling
269f9ae524
WindowServer: Forgot to actually set 'had_any_timer' after we had any timer.
2019-02-13 09:38:32 +01:00
Andreas Kling
c5a00a56c8
WindowServer: Put a clock in the top right corner of the screen.
...
This way we don't even need the Clock app anymore. Very cool :^)
2019-02-13 09:27:08 +01:00
Andreas Kling
cac8153436
WindowServer: Try out a new IterationDecision thing for lambda iteration.
2019-02-13 01:04:11 +01:00
Andreas Kling
732f273949
WindowServer: Switch menubar based on the currently active window.
2019-02-13 00:19:21 +01:00
Andreas Kling
4f33fb3a1a
WindowServer: Process window mouse events in the correct z-order.
2019-02-12 23:56:19 +01:00
Andreas Kling
1d7fc866ee
WindowServer: Menu windows shouldn't steal focus when clicked.
2019-02-12 16:34:47 +01:00
Andreas Kling
961783e0df
Let's have makeall.sh build with make -j2.
...
The full rebuild keeps getting slower, this makes it a bit more bearable.
2019-02-12 16:34:19 +01:00
Andreas Kling
5500a13491
Meta: Update ReadMe with a new screenshot. :^)
2019-02-12 15:47:37 +01:00
Andreas Kling
000ccc0a03
Base: Adjust the OS logo icon a little bit.
2019-02-12 15:46:32 +01:00
Andreas Kling
fd99382004
Launcher: Remove button for guitest.
2019-02-12 15:24:25 +01:00
Andreas Kling
d74b131c27
Add a little About app and hook it up to the system menu's "About..." entry.
...
Added icons and customizable text alignment to GLabel.
2019-02-12 15:23:07 +01:00
Andreas Kling
d6326d6c2e
LibGUI: Add a GFontDatabase class that lets you enumerate fonts and more.
...
"More" in this case being also giving you the ability to load a font by name.
Use this as backend for Terminal's font menu. :^)
2019-02-12 14:36:19 +01:00
Andreas Kling
7df7e5e2a6
Base: Add some human-friendly spaces to font names.
...
"LizaRegular" => "Liza Regular", etc.
2019-02-12 14:34:37 +01:00
Andreas Kling
627e06632a
WindowServer: Don't crash when trying to open an empty menu.
2019-02-12 14:28:39 +01:00
Andreas Kling
3085e400bc
LibGUI: Add GAction class and make GMenu deal in actions rather than strings.
2019-02-12 14:09:48 +01:00
Andreas Kling
a5a7ea3d1e
Base: Rename Liza8x10 to LizaThin8x10.
2019-02-12 13:31:00 +01:00
Andreas Kling
ec7099dac3
WindowServer: Made a slightly nicer icon for the system menu.
2019-02-12 13:19:58 +01:00
Andreas Kling
2b94b54640
WindowServer: Draw menu windows above normal windows.
2019-02-12 13:04:54 +01:00
Andreas Kling
27df572381
AK: Fix bug in MMX memcpy() unaligned prologue handling.
2019-02-12 12:39:04 +01:00
Andreas Kling
7ce15f1c54
Fix some compilation warnings.
2019-02-12 12:11:22 +01:00
Andreas Kling
f3c8821b0f
Bootloader: Bump sector count once again.
...
This is starting to get cramped. I wonder how much longer this hilarious
frankenloader will be able to boot us.
2019-02-12 12:09:50 +01:00
Andreas Kling
c61f9eba61
WindowServer: Add a WSWindowType enum.
...
So far there's only Normal and Menu. Maybe we'll need more later.
2019-02-12 11:53:45 +01:00
Andreas Kling
111589a558
Kernel: Make sure processes always start out with fds 0, 1 and 2 open.
...
If we don't have a TTY for the process, fall back to /dev/null.
2019-02-12 11:25:25 +01:00
Andreas Kling
7def86c86d
WindowServer: Send all mouse events inside the menubar rect to the menubar.
2019-02-12 10:47:02 +01:00
Andreas Kling
e03af1e8b9
WindowServer: Make it possible to launch a terminal from the system menu.
2019-02-12 10:45:09 +01:00
Andreas Kling
4b8133e925
WindowServer: Clean up any menu objects on process exit.
...
..and now that this works, implement the Quit menu action in Terminal. :^)
2019-02-12 10:41:09 +01:00
Andreas Kling
f311d0f353
Kernel: Don't bother trying to pass environment to init's testing processes.
2019-02-12 10:19:52 +01:00
Andreas Kling
db98327bdc
Plumb menu item activation events from WindowServer to clients.
...
GMenu now has an "on_item_activation" callback that fires whenever one
of its items are activated. The menu item identifier is used to distinguish
between items.
Use this to implement font switching in Terminal. :^)
2019-02-12 10:08:35 +01:00
Andreas Kling
9c1c885483
WindowServer: Add locking and fix coalesced invalidation race.
...
WSWindowManager::invalidate() had a bug where it would mark the entire screen
rect as dirty, but it wouldn't scheduled a deferred recompose.
This would cause any subsequent calls to invalidate(Rect) to be coalesced
with the pending compose, but the pending compose never happened.
2019-02-12 09:25:50 +01:00
Andreas Kling
431e7bf085
PS2MouseDevice: Add current buffer size to debug logging.
2019-02-12 09:22:55 +01:00
Andreas Kling
5cd588a497
WindowServer: Always include the system menu in the menubar.
...
Solve this by adding a for_each_active_menubar_menu() iteration helper that
automagically visits the system menu before the current menubar's menus.
2019-02-12 08:49:07 +01:00
Andreas Kling
15b4c9f9f1
WindowServer: More work on the menu system.
...
Menus are now tied to a Process (by WeakPtr.) This will allow us to pass
notifications to the correct event stream.
2019-02-12 08:39:19 +01:00
Andreas Kling
133706d697
Add API's and plumbing for WindowServer clients to make menus.
2019-02-12 00:52:19 +01:00
Andreas Kling
bb31d961b4
WindowServer: Let's call the default menu "Dummy" for now.
2019-02-11 15:39:19 +01:00
Andreas Kling
757429fb55
LibGUI: More work on client-side menus.
2019-02-11 15:37:12 +01:00
Andreas Kling
c75ecaae32
Terminal: Move the notifier into the Terminal class.
2019-02-11 15:07:05 +01:00