Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-03-03 | WindowManager: Allow moving windows around using Logo+LMB. | Andreas Kling | |
2019-03-03 | Detect the "Logo" (Windows/Apple/whatever) key and use it for window resize. | Andreas Kling | |
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-01 | Put miscellaneous debug spam behind #ifdefs. | Andreas Kling | |
2019-03-01 | Base: Add Csilla Bold 7x10 variant. | Andreas Kling | |
It's nice to have a thin and a bold variant to complement each other. | |||
2019-02-28 | SharedGraphics: Make Painter clipping work with translated clip origin. | Andreas Kling | |
2019-02-28 | WindowServer: Add "Open ProcessManager..." to system menu. | Andreas Kling | |
This will no doubt come in handy. :^) | |||
2019-02-26 | WindowServer: Add 1920x1080 resolution option. | Andreas Kling | |
Because it's fun to go fullscreen on my development machine. :^) | |||
2019-02-26 | WindowServer: Reduce resize related debug spam. | Andreas Kling | |
2019-02-26 | WindowServer: Bump height of window titlebars and menus from 16 to 18. | Andreas Kling | |
2019-02-26 | WindowServer+LibGUI: Fix global mouse tracking with recursive widget trees. | Andreas Kling | |
Also avoid sending multiple copies of mouse events to global trackers. | |||
2019-02-26 | WindowServer: Add a simple CPU usage graph to the global menu bar. | Andreas Kling | |
This is pretty cute and helps me spot when something's chewing up CPU. | |||
2019-02-26 | WindowServer: Only invalidate the menubar rect when an app changes menubar. | Andreas Kling | |
2019-02-26 | WindowServer: Make message receivers be weak pointers. | Andreas Kling | |
2019-02-25 | Convert more RetainPtr use to Retained. | Andreas Kling | |
2019-02-21 | WindowServer: Choose resizing direction based on where it's initiated. | Andreas Kling | |
Divide the window into 3x3 hot areas and resize in the direction of the corner where the resize starts. The middle is a no-op area. This needs some polish but the basic mechanism is good. | |||
2019-02-21 | Add concept of size increments to windowing system. | Andreas Kling | |
Use this to implement incremental resizing for Terminal so that we only ever resize to fit a perfect number of rows and columns. This is very nice. :^) | |||
2019-02-20 | Rework the rendering model so that clients instantiate backing stores. | Andreas Kling | |
This makes interactive resizing work a lot better, althought it's still not perfect. There are still glitches and unpleasant flashes of zeroed memory. | |||
2019-02-20 | WindowServer: Don't spam clients with resize events. | Andreas Kling | |
Wait for them to finish a paint, then send them a new resize event. The exception is when releasing the mouse button to end the resize. Then we send a new resize event right away. | |||
2019-02-20 | WindowServer: Support resizing windows. | Andreas Kling | |
This is pretty limited and not entirely stable, but it does work! :^) | |||
2019-02-20 | WindowServer: Minor style tweak. | Andreas Kling | |
2019-02-20 | WindowServer: Remove some unused WSWindowManager members. | Andreas Kling | |
2019-02-20 | LibGUI: Implement enter/leave events (with WindowServer support.) | Andreas Kling | |
Windows now learn when the mouse cursor leaves or enters them. Use this to implement GWidget::{enter,leave}_event() and use that to implement the CoolBar button effect. :^) | |||
2019-02-19 | WindowServer: Only invalidate the menubar rect when switching menubars. | Andreas Kling | |
2019-02-19 | WindowServer: Correct invalidation rects for menu windows. | Andreas Kling | |
2019-02-19 | WindowServer: Avoid overdraw by shattering dirty rects into unique shards. | Andreas Kling | |
The algorithm I came up with is O(n^2) but given the small numbers of rects we're typically working with, it doesn't really matter. May need to revisit this in the future if we find ourselves with a huge number of rects. | |||
2019-02-19 | WindowServer: Support windows with alpha channels. And per-WSWindow opacity. | Andreas Kling | |
This patch also adds a Format concept to GraphicsBitmap. For now there are only two formats: RGB32 and RGBA32. Windows with alpha channel have their backing stores created in the RGBA32 format. Use this to make Terminal windows semi-transparent for that comfy rice look. There is one problem here, in that window compositing overdraw incurs multiple passes of blending of the same pixels. This leads to a mismatch in opacity which is obviously not good. I will work on this in a later patch. The alpha blending is currently straight C++. It should be relatively easy to optimize this using SSE instructions. For now I'm just happy with the cute effect. :^) | |||
2019-02-17 | WindowServer: Assume wallpaper images are 1024x768. | Andreas Kling | |
This is obviously not always the right thing to do, but it removes some confusion while using other resolutions. Eventually we're gonna need some kind of compressed image decoder. | |||
2019-02-17 | Add ability to switch video modes from the system menu. | Andreas Kling | |
I had to change PhysicalPage around a bit for this. Physical pages can now be instantiated for any arbitrary physical address without worrying that such pages end up in the kernel page allocator when released. Most of the pieces were already in place, I just glued everything together. | |||
2019-02-17 | WindowServer: Let menu objects reference the WSClientConnection by pointer. | Andreas Kling | |
Since these are owner/ownee relationships, there's no need for indirection. | |||
2019-02-17 | WindowServer: WSWindow can have a pointer to the client rather than an ID. | Andreas Kling | |
Since WSWindows are owned by WSConnectionClients, it's fine for them to just reference the client directly. | |||
2019-02-17 | WindowServer: Move video mode setup to WSScreen. | Andreas Kling | |
2019-02-17 | WindowServer: Make the menubar clock work again in the post-kernel world. | Andreas Kling | |
This is actually so much better. Grabbing directly at the RTC was silly. :^) | |||
2019-02-17 | Move WindowServer to userspace. | Andreas Kling | |
This is a monster patch that required changing a whole bunch of things. There are performance and stability issues all over the place, but it works. Pretty cool, I have to admit :^) | |||
2019-02-16 | WindowServer: Prune more kernel-related gunk. | Andreas Kling | |
2019-02-16 | Kernel: Add ioctls to BochsVGADevice for mode setting and page flipping. | Andreas Kling | |
Use these in WindowServer instead of poking at the BochsVGADevice directly. | |||
2019-02-14 | WindowServer: Ignore attempts to make menu windows the active window. | Andreas Kling | |
2019-02-14 | WindowServer: Add debug logging if we try to activate a client-less window. | Andreas Kling | |
2019-02-14 | WindowServer: Make WSMenu use WSClientConnection::post_message(). | Andreas Kling | |
2019-02-14 | WindowServer: Get rid of the WSWindow lock now that accesses are serial. | Andreas Kling | |
2019-02-14 | WindowServer: Add WSClientConnection class to manage an individual client. | Andreas Kling | |
This makes both object lifetimes and object ID's a lot easier to understand. | |||
2019-02-14 | WindowServer: Convert entire API to be message-based. | Andreas Kling | |
One big step towards userspace WindowServer. :^) | |||
2019-02-13 | WindowServer: Convert the remaining menu APIs into messages. | Andreas Kling | |
2019-02-13 | WindowServer: Refactor more of the menu APIs to be message-based. | Andreas Kling | |
This is all pretty verbose but I can whittle it down later. :^) | |||
2019-02-13 | Rename GUI_Event to GUI_ServerMessage. | Andreas Kling | |
Now that communication is becoming bidirectional, "event" is no longer right. | |||
2019-02-13 | WindowServer: Begin refactoring towards a fully asynchronous protocol. | Andreas Kling | |
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 | WindowServer: Don't spawn new processes with WindowServer as parent. | Andreas Kling | |
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 | WindowServer: Put a clock in the top right corner of the screen. | Andreas Kling | |
This way we don't even need the Clock app anymore. Very cool :^) | |||
2019-02-13 | WindowServer: Try out a new IterationDecision thing for lambda iteration. | Andreas Kling | |
2019-02-13 | WindowServer: Switch menubar based on the currently active window. | Andreas Kling | |
2019-02-12 | WindowServer: Process window mouse events in the correct z-order. | Andreas Kling | |