Andreas Kling
66e9de8aaa
WindowServer: Rename WSMenuBarKeeper => WSMenuManager.
2019-07-18 10:18:16 +02:00
Robin Burchell
3837de0573
WSEventLoop: Remove inheritance from CEventLoop
...
The only reason for the inheritance was to add FDs to the select set.
Since CNotifier is available (and now also quite useful), we can make use of it
instead, and remove the inheritance.
2019-07-17 20:16:44 +02:00
Andreas Kling
62335c5f0c
WindowServer: Spawn a SystemDialog when activating the shutdown menu.
...
This allows us to ask the user for confirmation instead of just shutting
down the system abruptly.
2019-07-16 21:41:13 +02:00
Andreas Kling
85674aa498
WindowServer: Don't deliver the same mouse event twice.
...
We were sometimes delivering the same mouse event twice to the active input
window. This happened because we had already delivered it via the automatic
cursor tracking mechanism.
2019-07-13 11:50:39 +02:00
Robin Burchell
8a1a9e78d7
WSWindowManager: Ensure that we pick a single window to deliver a full stream of events to
...
This is effectively a mouse grab except that we don't require any client
coordination to request it (which is probably OK, and certainly a lot
simpler to implement).
This prevents e.g. dragging the mouse cursor out of paint and over the
terminal from selecting text unexpectedly.
2019-07-12 18:19:45 +02:00
Andreas Kling
1791ebaacd
WindowServer: Convert dbgprintf() in WSWindowManager to dbg().
...
Here goes the first trial run for the new LogStream mechanism.
I like it so far. :^)
2019-07-04 07:07:40 +02:00
Andreas Kling
27f699ef0c
AK: Rename the common integer typedefs to make it obvious what they are.
...
These types can be picked up by including <AK/Types.h>:
* u8, u16, u32, u64 (unsigned)
* i8, i16, i32, i64 (signed)
2019-07-03 21:20:13 +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
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
90b1354688
AK: Rename RetainPtr => RefPtr and Retained => NonnullRefPtr.
2019-06-21 18:37:47 +02:00
Andreas Kling
ef1bfcb9d8
WindowServer: Move some event code from WSWindowManager to WSMenuBarKeeper.
2019-06-21 15:02:11 +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
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
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
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
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
Robin Burchell
ec0d598934
WSWindowManager: Add double click to maximize/restore
2019-05-18 15:54:10 +02:00
Andreas Kling
33d0916d29
WindowServer: Add support for fullscreen windows.
...
Fullscreen windows are rendered alone and above everything else when they
are active, and as part of the regular window stack order when something
else is active.
Currently windows cannot be made fullscreen after-the-fact, but must have
the fullscreen flag included in their CreateWindow message.
It should not possible to interact with the menu, taskbar or window frame
while the active window is fullscreened. :^)
2019-05-17 22:33:19 +02:00
Robin Burchell
805e87a21c
WindowServer: Add a more dynamic app list
...
This contains more stuff, and is easier to add to since it's just a vector :)
2019-05-17 14:20:44 +02:00
Andreas Kling
4e7e2950bc
WindowServer: Fill unbacked windows with their background color.
...
This avoids flashing a content-less window frame during client startup.
2019-05-16 20:11:09 +02:00
Robin Burchell
c4610b825d
WSWindowManager: Fix a small whoopsie with double click delivery
...
We must reset the click clock to invalid after delivering the double
click event. Otherwise, a subsequent click will make us (incorrectly)
deliver another double click.
2019-05-16 01:24:34 +02:00
Robin Burchell
a4b0dfff43
Move double click events from LibGUI to the window server
2019-05-15 22:45:28 +02:00
Andreas Kling
641893104a
WindowServer: Add a maximize/unmaximize button to windows.
2019-05-12 21:32:02 +02:00
Andreas Kling
5b2e122624
WindowServer: Don't launch a terminal when clicking system menu separators.
...
The menu item for launching a terminal was sharing ID's with the separators.
2019-05-07 17:11:28 +02:00
Andreas Kling
ea9a39a9f2
LibGUI+WindowServer: Add a GResizeCorner widget.
...
This widget is automatically included in GStatusBar, but can be added in
any other place, too. When clicked (with the left button), it initiates a
window resize (using a WM request.)
In this patch I also fixed up some issues with override cursors being
cleared after the WindowServer finishes a drag or resize.
2019-05-03 01:38:24 +02:00
Andreas Kling
6614746ca8
WindowServer: Spawn a secondary thread to decode wallpapers.
...
The threading API's are not very mature, so this code looks a bit crufty
but it does take the load off the WindowServer main thread when changing
wallpapers. :^)
2019-05-01 16:07:47 +02:00
Andreas Kling
ed957ca2e1
WindowServer: Add 1280x720 resolution to the system menu.
2019-04-28 05:24:52 +02:00
Andreas Kling
de4b77ef27
WindowServer: Ignore title change notifications for non-normal windows.
2019-04-25 17:38:16 +02:00
Andreas Kling
f520d87097
WindowServer: Remove debug spam about activating non-normal windows.
2019-04-23 20:46:10 +02:00
Andreas Kling
9f122bff5a
WindowServer+LibGUI: Allow arbitrary number of rects in messages.
...
To get truly atomic updates, add a mechanism for passing arbitrary amounts
of extra data along with WindowServer messages. This allows us to pass all
the rects in a single message.
2019-04-22 01:15:47 +02:00
Andreas Kling
49e7ffc06a
WindowServer: Introduce a WM event mask so Taskbar can ignore window rects.
...
Taskbar was waking up to do nothing every time a window rect changed.
2019-04-20 14:40:59 +02:00
Andreas Kling
b88f2bc799
WindowServer: Broadcast window icons to newly joined WM listener clients.
2019-04-18 19:42:48 +02:00
Andreas Kling
c931eaa22c
WindowServer: Generate a separate WM event for window icon changes.
2019-04-18 00:39:11 +02:00
Andreas Kling
18ef6b111b
WindowServer: Mouse switching between system menu and app menu was broken.
2019-04-17 12:06:09 +02:00
Andreas Kling
86361d3d45
WindowServer: Improve the look of menus.
...
This patch makes menus stand out a bit more from their background by using
the same kind of shading that Windows 2000 had.
2019-04-16 17:02:26 +02:00
Andreas Kling
311019d8ee
WindowServer: Don't waste time pre-filling windows with background color.
...
There's a subsequent pass that fills whatever the backing store didn't
cover anyway, just a few lines later. This was all wasted work.
2019-04-16 15:10:57 +02:00
Andreas Kling
f61549ca5f
Make better use of geometry class helpers in some places.
2019-04-16 13:58:02 +02:00
Andreas Kling
a3e8fc3d9c
LibCore: Add a convenience constructor for CTimer.
...
new CTimer(250, [] { thing_to_do_every_250_msec(); });
2019-04-14 05:44:15 +02:00
Andreas Kling
94a5e08faf
WindowServer: Rename WSMessage* => WSEvent*.
...
Since I'm on a roll here, I'll just rename WSMessageFoo to WSEventFoo now
that these inherit from CEventFoo anyway.
2019-04-14 05:23:37 +02:00
Andreas Kling
de184d0999
WindowServer: Port WindowServer to LibCore.
...
This was pretty straightforward thanks to the work I did separating out
LibCore from LibGUI already. :^)
- WSMessageLoop now inherits from CEventLoop.
- WSMessage now inherits from CEvent.
- WSMessageReceiver goes away.
Now there is only one event loop in Serenity. Very nice!
2019-04-14 05:15:22 +02:00