Commit graph

1386 commits

Author SHA1 Message Date
Andreas Kling
1ac71d1fb1 GTextEditor: Improvements to cursor rendering.
The view now scrolls along with you as you move the cursor around.
2019-03-07 13:13:25 +01:00
Andreas Kling
dff57909a7 GTextEditor: Only draw the cursor line background shade when focused. 2019-03-07 02:26:44 +01:00
Andreas Kling
6db132069f GTextEditor: Draw the cursor line in a slightly darker shade. 2019-03-07 02:24:46 +01:00
Andreas Kling
be0ac86b63 TextEditor: Add New/Open/Save actions.
They aren't hooked up to anything, I just felt like making some icons. ;^)
2019-03-07 01:46:37 +01:00
Andreas Kling
c3bb84239e TextEditor: Show the open filename in the window title. 2019-03-07 01:08:07 +01:00
Andreas Kling
1f92636c6d GTextEditor: Make the cursor blink while the editor is focused. 2019-03-07 01:05:35 +01:00
Andreas Kling
ca65ca2f2d TextEditor: Show the current cursor position in the statusbar. 2019-03-07 00:46:29 +01:00
Andreas Kling
9158de6c41 Begin working on a graphical TextEditor.
It's gonna be a wrapper around a new GTextEditor widget so I can easily
reuse the functionality anywhere I need it. :^)
2019-03-07 00:31:06 +01:00
Andreas Kling
67ee579113 WindowServer: Add window icons. Every window has the same icon for now.
The icons show up both in the title bars and in the window switcher.
Eventually I'd like to be able to minimize to icon, and maybe even have
myself a taskbar.
2019-03-06 23:03:36 +01:00
Andreas Kling
3729f7cc6a About: Use Katica Bold for displaying the system name. :^) 2019-03-06 22:39:49 +01:00
Andreas Kling
495c4f940d WindowServer: Only the left mouse button should initiate window drag. 2019-03-06 22:38:19 +01:00
Andreas Kling
eedfb2649e WindowServer: Tweak appearance of window close buttons. 2019-03-06 22:36:37 +01:00
Andreas Kling
5773b91a04 WindowServer: Use the right font for computing titlebar text rects. 2019-03-06 22:34:45 +01:00
Andreas Kling
e56fe71dbc Kernel: And some more KResult/KResultOr<T> porting work. 2019-03-06 22:30:13 +01:00
Andreas Kling
028afabf6b Kernel: Port more code to KResult and KResultOr<T>. 2019-03-06 22:14:31 +01:00
Andreas Kling
3079ef01ce Userland: /bin/cp needs to handle open(dst) failing with EISDIR. 2019-03-06 20:28:00 +01:00
Andreas Kling
e6f389a544 Kernel: Add two error checks for open() to return EISDIR or ENODEV. 2019-03-06 20:27:19 +01:00
Andreas Kling
7d46375690 Userland: Support "cp foo somedirectory"
Don't overwrite the literal directory inode contents when copying a file
to a directory, duh. :^)
2019-03-06 20:22:23 +01:00
Andreas Kling
d75897708b Base: Tweak Katica system menu glyph. 2019-03-06 20:04:52 +01:00
Andreas Kling
2950d33c76 ProcessManager: Tweak priority icons. 2019-03-06 20:03:10 +01:00
Andreas Kling
7df1121e1c LibGUI: GTableModel::data() should take a GModelIndex instead of int,int. 2019-03-06 19:56:47 +01:00
Andreas Kling
dc4e6dd7bc LibGUI: Fix LibGUI::to_string() for GVariant::Type::Float. 2019-03-06 19:49:59 +01:00
Andreas Kling
09ecef6299 GTableView: Ignore right clicks for now. 2019-03-06 19:44:18 +01:00
Andreas Kling
f3341d2ae7 Base: Tweak Katica and Katica Bold glyphs. 2019-03-06 19:41:36 +01:00
Andreas Kling
b46c7da0a4 FontEditor: Don't crash when clicking on the unused part of a glyph. 2019-03-06 19:04:30 +01:00
Andreas Kling
31d6b640eb Add a bold variant of Katica and make that the system's default bold font.
..and do some minor tweaks to the font rendering code.
2019-03-06 14:50:27 +01:00
Andreas Kling
66a5ddd94a More work on the variable-width font support.
Katica is now the default system font, and it looks quite nice. :^)
I'm gonna need to refine the GTextBox movement stuff eventually,
but it works well-enough for basic editing now.
2019-03-06 14:06:40 +01:00
Andreas Kling
e53cef02d5 Kernel: Dump kernel stack trace on assertion failure. 2019-03-06 14:05:41 +01:00
Andreas Kling
7f6c81d90f Implement basic support for variable-width fonts.
Also add a nice new font called Katica. It's not used anywhere yet but
I'm definitely itching to start using it. :^)
2019-03-06 12:52:41 +01:00
Andreas Kling
0a86366c71 Make a preparation pass for variable-width fonts. 2019-03-06 11:03:10 +01:00
Andreas Kling
b85fe0bd07 WindowServer: Let the window switcher render itself as a WSWindow.
Much better than drawing directly into the back buffer.
2019-03-06 10:03:10 +01:00
Andreas Kling
f3ff402cf3 WindowServer: Store the mouse button state in one variable.
This makes the logic around it a lot less verbose.
2019-03-05 14:13:07 +01:00
Andreas Kling
26a9d662f4 Kernel+WindowServer: Move mouse input signal parsing to kernel driver.
It was silly for the WindowServer to have to know anything about the
format of PS/2 mouse packets.

This patch also enables use of the middle mouse button.
2019-03-05 14:01:03 +01:00
Andreas Kling
1cc32ebc7e Kernel: Remove "requested wakeups" feature.
I only needed this to support the WindowServer living inside the kernel.
Now that it's been migrated to userspace, this can go. :^)
2019-03-05 13:34:36 +01:00
Andreas Kling
91031346e5 Kernel: More signal handling improvements.
Finally fixed the weird flaky crashing when resizing Terminal windows.
It was because we were dispatching a signal to "current" from the scheduler.
Yet another thing I dislike about even having a "current" process while
we're in the scheduler. Not sure yet how to fix this.

Let the signal handler's kernel stack be a kmalloc() allocation for now.
Once we can do allocation of consecutive physical pages in the supervisor
memory region, we can use that for all types of kernel stacks.
2019-03-05 12:52:35 +01:00
Andreas Kling
086a0fc969 LibGUI: Let GApplication::exec() call exit() instead of returning to main().
This sidesteps the problem of having various things on the heap that don't
get torn down. It's obviously not a great solution, but it'll work for now.
2019-03-05 12:48:59 +01:00
Andreas Kling
9e1fcb74a2 Kernel: Returning from a signal handler reset the signal mask correctly.
We were setting the handled signal number as the new signal mask, oops.
2019-03-05 11:00:26 +01:00
Andreas Kling
251293f2e1 Kernel: Block a signal from being dispatched again until handler returns.
We don't handle nesting yet, but this is a step in the right direction.
2019-03-05 10:34:08 +01:00
Andreas Kling
b67d0a3632 WindowServer: Determine resizing "hot corner" based on window's outer rect. 2019-03-04 11:34:25 +01:00
Andreas Kling
67fc42f64e Kernel: SIGCONT should unblock a blocked process.
Otherwise we might stay in BlockedSignal state forever. Unblocking just
means that the current syscall may fail with EINTR.
2019-03-04 11:25:24 +01:00
Andreas Kling
d932c03843 GTableView: Tweak focus appearance for selected items. 2019-03-04 11:17:25 +01:00
Andreas Kling
06bd2fb2d5 GTableView: Allow initiating keyboard navigation with no current selection. 2019-03-04 10:57:26 +01:00
Andreas Kling
7e955f7b60 GTableView: Tweak the look of column headers. 2019-03-04 10:54:34 +01:00
Andreas Kling
4ea7a51ecd LibGUI: Improve GStatusBar and GToolBar and share some code via GStyle. 2019-03-04 10:47:54 +01:00
Andreas Kling
ac2a3f7fdf GTableView: Make the last column header separator look right. 2019-03-04 10:26:16 +01:00
Andreas Kling
f91a20f9d0 LibGUI: Unbreak clearing GTableView selection by clicking outside items.
Also, clicking on the column headers should not clear selection.
2019-03-04 10:18:05 +01:00
Andreas Kling
ef4d517429 LibGUI: Tweak focus appearance and add it to GTableView. 2019-03-04 10:12:09 +01:00
Andreas Kling
5c27e74fac WindowServer: Add a window switcher.
This needs some work on the window ordering and things like that, but it
works quite nicely as a starting point.

The keyboard shortcut is Logo+Tab. :^)
2019-03-03 15:17:05 +01:00
Andreas Kling
483e0a5526 SharedGraphics: Add Rect::center_within(Rect). 2019-03-03 13:34:50 +01:00
Andreas Kling
0e4b7990c0 Kernel: Detect the Tab key. :^) 2019-03-03 13:34:29 +01:00