Andreas Kling
ce7c302933
Kernel: Oops, gettimeofday()'s tv_usec should be micro, not milliseconds.
2019-03-13 03:25:18 +01:00
Andreas Kling
0c806bfa25
WindowServer: Include switcher windows in the window iteration.
2019-03-10 13:30:43 +01:00
Andreas Kling
64237c5028
WindowServer: Show the username of the WindowServer owner in the menu.
2019-03-10 03:16:27 +01:00
Andreas Kling
a149ad9b44
WindowServer: Window iteration should see the highlight window "in front".
2019-03-10 02:33:43 +01:00
Andreas Kling
420ef4da8a
WindowServer: Clear any highlighted window when dismissing the switcher.
2019-03-10 02:19:55 +01:00
Andreas Kling
2336d43abc
WindowServer: Tweak CPU usage history color.
2019-03-10 01:22:36 +01:00
Andreas Kling
94df0c1ba6
WindowServer: Fix bug where window content could bleed through menus.
...
We have to iterate using for_each_visible_window_from_back_to_front()
if we want every window in the correct order.
2019-03-10 01:08:21 +01:00
Andreas Kling
272a41d02d
WindowServer: Skip composing windows where entire dirty rect is covered.
...
If another window is currently in front of us and is fully opaque,
we can just skip to the next window. This avoids a whole lot of painting
with overlapping windows. :^)
2019-03-09 21:38:28 +01:00
Andreas Kling
ffe4522316
SharedGraphics: Allow passing a Font to text drawing functions.
...
This way we don't have to juggle around with calls to Painter::set_font()
which simplifies a bunch of places.
2019-03-09 21:24:12 +01:00
Andreas Kling
b1c272a507
WindowServer: Initiating a window drag/resize should also make frontmost.
2019-03-09 17:10:53 +01:00
Andreas Kling
684c52941d
WindowServer: Always clip window updates to the window's outer rect.
2019-03-09 17:03:08 +01:00
Andreas Kling
88f6ce152f
SharedGraphics: Add PainterStateSaver RAII helper and Point::operator-().
...
Two little things to help tidy up a bit in WSWindowManager.
2019-03-09 16:54:41 +01:00
Andreas Kling
f40d11f06d
LibGUI+WindowServer: Implement drag-to-select behavior in GTextEditor.
...
To make this feel right, I needed to start passing keyboard modifiers along
with mouse events. That allows shift-clicking to extend the selection. :^)
2019-03-08 17:53:02 +01:00
Andreas Kling
b8581b0069
Seal clipboard buffers after copying data into them.
...
This is just a quick safety mechanism to ensure that nobody alters the
contents of a clipping after it's been set.
Ultimately this will be replaced by a more sophisticated SHM object.
2019-03-08 13:33:35 +01:00
Andreas Kling
6820f9e14f
WindowServer+LibGUI: Add a server-side clipboard.
...
On the client side, use GClipboard's data() and set_data(String) to access
the global clipboard. :^)
2019-03-08 13:27:19 +01:00
Andreas Kling
eda0866992
Add a C++ helper class for working with shared buffers.
...
This is a bit more comfortable than passing the shared buffer ID manually
everywhere and keeping track of size etc.
2019-03-08 12:24:05 +01:00
Andreas Kling
1e0971c8b4
WindowServer: Fix slightly off alignment of menubar clock.
2019-03-08 01:31:03 +01:00
Andreas Kling
c9c40e1da6
Base+WindowServer: Add a new default wallpaper for fun.
2019-03-07 23:58:04 +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
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
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
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
b67d0a3632
WindowServer: Determine resizing "hot corner" based on window's outer rect.
2019-03-04 11:34:25 +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
b4631d2083
WindowManager: Allow moving windows around using Logo+LMB.
2019-03-03 13:18:58 +01:00
Andreas Kling
57fe316e01
Detect the "Logo" (Windows/Apple/whatever) key and use it for window resize.
...
This will be comfortable enough while I'm still developing with emulators.
QEMU keeps eating my "Alt" key presses and it's making things difficult.
2019-03-03 12:56:48 +01:00
Andreas Kling
5e40aa4f1a
LibGUI: Move shortcut actions from GEventLoop to GApplications.
...
I'm gonna want to have nested event loops sooner or later, so let's not
pollute GEventLoop with things that are meant to work globally.
This patch also changes key events to pass around their modifiers as a
bitfield all the way around the system instead of breaking them up.
2019-03-03 12:32:15 +01:00
Andreas Kling
596a5ce5a4
LibGUI+WindowServer: Add app-global keyboard shortcuts.
...
This patch adds a GShortcut class. Each GAction can have a GShortcut which
will cause the event loop to listen for that key combination app-globally
and activate the event in case it's pressed.
The shortcut will also be displayed when the action is added to a menu.
Use this to hook up Alt+Up with the "open parent directory" action in the
FileManager app. :^)
2019-03-02 10:10:06 +01:00
Andreas Kling
4f9b6a88a6
WindowServer: Use SA_NOCLDWAIT.
2019-03-01 16:16:38 +01:00
Andreas Kling
6c2089c59d
Put miscellaneous debug spam behind #ifdefs.
2019-03-01 10:51:58 +01:00
Andreas Kling
b5e5f26a82
Base: Add Csilla Bold 7x10 variant.
...
It's nice to have a thin and a bold variant to complement each other.
2019-03-01 02:50:50 +01:00
Andreas Kling
fd428d6ed3
SharedGraphics: Make Painter clipping work with translated clip origin.
2019-02-28 18:57:36 +01:00
Andreas Kling
05f9257621
WindowServer: Add "Open ProcessManager..." to system menu.
...
This will no doubt come in handy. :^)
2019-02-28 11:36:50 +01:00
Andreas Kling
c80182f81f
WindowServer: Add 1920x1080 resolution option.
...
Because it's fun to go fullscreen on my development machine. :^)
2019-02-26 14:11:01 +01:00
Andreas Kling
3f29a12d90
More compat work. Rename libraries from LibFoo.a => libfoo.a
...
This makes it more straightforward to build a cross-compiler toolchain.
Also move math stuff from LibC to LibM.
2019-02-26 13:30:57 +01:00
Andreas Kling
f6b41d166d
WindowServer: Reduce resize related debug spam.
2019-02-26 12:47:45 +01:00
Andreas Kling
88e77fe3af
WindowServer: Bump height of window titlebars and menus from 16 to 18.
2019-02-26 11:04:14 +01:00
Andreas Kling
ae90043424
WindowServer+LibGUI: Send the window size along with Paint server messages.
...
This way GWindow doesn't need to do synchronous IPC to fetch the appropriate
size for the window's backing store. This is mostly only relevant during
live resize.
2019-02-26 10:53:21 +01:00
Andreas Kling
1effe70543
WindowServer+LibGUI: Fix global mouse tracking with recursive widget trees.
...
Also avoid sending multiple copies of mouse events to global trackers.
2019-02-26 10:34:05 +01:00
Andreas Kling
2fb3fa7f69
WindowServer: Add a simple CPU usage graph to the global menu bar.
...
This is pretty cute and helps me spot when something's chewing up CPU.
2019-02-26 02:17:25 +01:00
Andreas Kling
b341cab9cc
WindowServer: Only invalidate the menubar rect when an app changes menubar.
2019-02-26 01:07:10 +01:00
Andreas Kling
d77f8ba413
WindowServer: Make message receivers be weak pointers.
2019-02-26 00:54:10 +01:00
Andreas Kling
9624b54703
More moving towards using signed types.
...
I'm still feeling this out, but I am starting to like the general idea.
2019-02-25 22:06:55 +01:00
Andreas Kling
15fb917f28
Convert more RetainPtr use to Retained.
2019-02-25 16:04:08 +01:00
Andreas Kling
d7753c7c8d
Move over to building all of userspace with i686-pc-serenity-g++.
2019-02-22 14:45:14 +01:00