Commit Graph

182 Commits

Author SHA1 Message Date
Andreas Kling
575acfac98 WindowServer: Add a separator before "close" in window menus. 2019-06-30 15:59:11 +02:00
VAN BOSSUYT Nicolas
802d4dcb6b Meta: Removed all gitignore in the source tree only keeping the root one 2019-06-30 10:41:26 +02:00
Andreas Kling
315716d193 GUI: Use Win2K-like "warm gray" color instead of the older colder gray.
Someone suggested this a long time ago and I never got around to it.
So here we go, here's the warm gray! I have to admit I like it better. :^)
2019-06-30 09:23:16 +02:00
Andreas Kling
14b51253c0 WindowServer: Allow changing window opacity with Logo+MouseWheel.
This is just a silly little feature that I thought was a bit neat. :^)
2019-06-29 09:27:55 +02:00
Andreas Kling
2bd8118843 Kernel: Change the format of /proc/all to JSON.
Update ProcessManager, top and WSCPUMonitor to handle the new format.

Since the kernel is not allowed to use floating-point math, we now compile
the JSON classes in AK without JsonValue::Type::Double support.
To accomodate large unsigned ints, I added a JsonValue::Type::UnsignedInt.
2019-06-29 09:04:45 +02:00
Andreas Kling
872cccb8f7 WindowServer: Make use of the new Vector(initializer_list). 2019-06-28 20:21:28 +02:00
Andreas Kling
0deade2883 WindowServer: Fix compiler warnings. 2019-06-22 14:49:01 +02:00
Andreas Kling
550b0b062b AK: Rename RetainPtr.h => RefPtr.h, Retained.h => NonnullRefPtr.h. 2019-06-21 18:45:59 +02:00
Andreas Kling
c26e3ce86b Change "retain" to "ref" in various comments. 2019-06-21 18:40:24 +02:00
Andreas Kling
90b1354688 AK: Rename RetainPtr => RefPtr and Retained => NonnullRefPtr. 2019-06-21 18:37:47 +02:00
Andreas Kling
77b9fa89dd AK: Rename Retainable => RefCounted.
(And various related renames that go along with it.)
2019-06-21 15:30:03 +02:00
Andreas Kling
ef1bfcb9d8 WindowServer: Move some event code from WSWindowManager to WSMenuBarKeeper. 2019-06-21 15:02:11 +02:00
Andreas Kling
ede598589a WindowServer: Make most of WSMenuBarKeeper private.
The outside world doesn't need to know about all this stuff.
2019-06-21 11:12:45 +02:00
Andreas Kling
2e9cc75d11 WindowServer+Taskbar: Let WindowServer manage the "window menus".
Taskbar now simply asks the WindowServer to popup a window menu when right
clicking on a taskbar button.

This patch also implements the "close" menu item, and furthermore makes the
window menu show up when you left-click a window's titlebar icon. :^)
2019-06-21 11:03:43 +02:00
Andreas Kling
9ac17c7bc9 WindowServer: Render the global menubar into a separate WSWindow.
Previously we were rendering the whole menubar on every compose(),
even if nothing changed about it. Now it's in its own window and can
be invalidated and painted separately.
2019-06-21 08:19:43 +02:00
Andreas Kling
4080221547 WindowServer: Remove unused WSWindowManager::m_windows hash table. 2019-06-18 14:40:18 +02:00
Robin Burchell
c52d553249 WindowServer: Add a shutdown option to the menu, rather than forcing terminal use 2019-06-16 12:25:30 +02:00
Andreas Kling
39d1a9ae66 Meta: Tweak .clang-format to not wrap braces after enums. 2019-06-07 17:13:23 +02:00
Andreas Kling
8358833bc8 WindowServer: Run clang-format on everything. 2019-06-07 11:47:19 +02:00
Christopher Dumas
908d9458c7 WindowServer: New API for Scaled Blit 2019-06-06 18:35:00 +02:00
Christopher Dumas
90d924a97c WindowServer: Implement scaled backgrounds and scaled blitting function 2019-06-06 18:35:00 +02:00
Christopher Dumas
c72953cf06 WindowServer: Clang-Format 2019-06-06 18:35:00 +02:00
Andreas Kling
3fa0b6cd92 WindowServer: Always update the maximize button icon when we should.
We were only updating it in the WSButton callback, not when changing the
maximized state by calling WSWindow::set_maximized().

Fixes #119.
2019-06-02 15:35:00 +02:00
Andreas Kling
51581c21fc WindowServer+LibGUI: Add a way to bring a window to the front.
GWindow::move_to_front() can now be used to move a window to the top of
the window stack.

We use this in Terminal to bring the settings window to the front if it
already exists when it's requested, in case it's hiding behind something.
2019-06-01 20:10:37 +02:00
Andreas Kling
8d7fbbe1fb WindowServer: Don't reach the end of mode_to_enum() without returning. 2019-06-01 20:02:05 +02:00
Robin Burchell
0dc9af5f7e Add clang-format file
Also run it across the whole tree to get everything using the One True Style.
We don't yet run this in an automated fashion as it's a little slow, but
there is a snippet to do so in makeall.sh.
2019-05-28 17:31:20 +02:00
Christopher Dumas
3e26faa226 removed extra impl of scaling 2019-05-27 21:40:53 +02:00
Christopher Dumas
da9c70598f centered backgrounds are now an option 2019-05-27 21:40:53 +02:00
Christopher Dumas
c23882dde1 can now tile background and made sure the IRC choose server popup still works 2019-05-27 21:40:53 +02:00
Christopher Dumas
e3f81bce49 IRC client setttings, Terminal settings, more WM settings 2019-05-27 21:40:53 +02:00
Christopher Dumas
63486b8438 implemented settings for window manager. 2019-05-27 21:40:53 +02:00
Christopher Dumas
d4a16d6031 Network stack is now configurable, and resolution is also configurable, but loading cursors causes a page-fault? 2019-05-27 21:40:53 +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
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
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
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
e478a2fb0a WindowServer: Don't draw titlebar separator for titlebar-less windows. 2019-05-25 04:17:21 +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
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
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
Robin Burchell
9aa9454c6b WindowServer: Don't eat a MouseUp when producing a MouseDoubleClick
Otherwise, double clicking a button will leave it in pressed state.
2019-05-21 16:43:56 +02:00
Andreas Kling
9df8d28542 WindowServer: Don't start window resize for MouseUp or MouseMove. 2019-05-20 11:06:10 +02:00
Andreas Kling
d65114afd7 WindowServer: Convert some assertions into client did_misbehave()'s. 2019-05-20 04:29:07 +02:00
Andreas Kling
091448b8f3 WindowServer: Use blocking sockets for client connections. 2019-05-20 04:08:09 +02:00
Andreas Kling
0b850cf726 WindowServer: Allow sending up to 32 invalidation rects inline.
Oops, it looks like I left the max inline rects limit at 1 while debugging
this code.. We can fit 32 rects in a single WSAPI message without needing
a second "extra data" message, so let's use the space we have!
2019-05-20 03:18:43 +02:00
Robin Burchell
a8864dc590 Kernel: Report EAGAIN from read() on a non-blocking socket if the buffer is empty
This is not EOF, and never should have been so -- can trip up other code
when porting.

Also updates LibGUI and WindowServer which both relied on the old
behaviour (and didn't work without changes). There may be others, but I
didn't run into them with a quick inspection.
2019-05-20 01:31:28 +02:00
Robin Burchell
5f597d0cb2 WindowServer: Improve client write handling a little
* EPIPE now correctly deletes the client connection
* EAGAIN (which is now returned by the kernel if the write buffer fills)
  terminates the connection also
2019-05-19 14:13:49 +02:00