summaryrefslogtreecommitdiff
path: root/WindowServer/WSWindowManager.cpp
AgeCommit message (Collapse)Author
2019-02-05SharedGraphics: Add some useful painting helpers and make use of them.Andreas Kling
2019-02-05WindowServer: Make the window close button look a bit nicer.Andreas Kling
2019-02-05Add a simple close button ("X") to windows.Andreas Kling
Clicking the button generates a WindowCloseRequest event which the client app then has to deal with. The default behavior for GWindow is to close() itself. I also added a flag, GWindow::should_exit_event_loop_on_close() which does what it sounds like it does. This patch exposed some bugs in GWindow and GWidget teardown.
2019-02-05Rename LizaBold to LizaRegular and LizaBlack to LizaBold.Andreas Kling
LizaRegular is quickly becoming my favorite bitmap font. It's so pretty :^)
2019-02-04LizaBold8x10: Import a bold variant of Liza8x10 and make it the default bold.Andreas Kling
Start using it right away for window titles.
2019-02-03Kernel: Rewrite ProcFS.Andreas Kling
Now the filesystem is generated on-the-fly instead of manually adding and removing inodes as processes spawn and die. The code is convoluted and bloated as I wrote it while sleepless. However, it's still vastly better than the old ProcFS, so I'm committing it. I also added /proc/PID/fd/N symlinks for each of a process's open fd's.
2019-02-03WindowServer: Add some stripes to the window titles.Andreas Kling
I like the look of this right now. Maybe later I'll feel differently.
2019-01-31Big, possibly complete sweep of naming changes.Andreas Kling
2019-01-30Add a String::format() and use that in place of ksprintf() in the Kernel.Andreas Kling
You're never gonna be right 100% of the time when guessing how much buffer space you need. This avoids having to make that type of decision in a bunch of cases. :^)
2019-01-27Make buttons unpress when the cursor leaves the button rect.Andreas Kling
Implement this functionality by adding global cursor tracking. It's currently only possible for one GWidget per GWindow to track the cursor.
2019-01-26WindowServer: Rename the two painting phases.Andreas Kling
Work now happens in terms of two messages: - WM_ClientWantsToPaint - WM_ClientFinishedPaint This feels fairly obvious compared to the old Paint/Invalidate.
2019-01-26WindowServer: More event -> message renaming.Andreas Kling
2019-01-26WindowServer: Rename WSEvent to WSMessage.Andreas Kling
Also do the same for WSMessageLoop and WSMessageReceiver. More to come.
2019-01-25WindowServer: Make dragging window frames look kinda cool.Andreas Kling
2019-01-25Snazz up the windows with some title bar gradients. :^)Andreas Kling
2019-01-25WindowServer: Put the desktop background color in a member.Andreas Kling
2019-01-25WindowServer: Retain window backing stores while blitting them.Andreas Kling
2019-01-24Let userland retain the window backing store while drawing into it.Andreas Kling
To start painting, call: gui$get_window_backing_store() Then finish up with: gui$release_window_backing_store() Process will retain the underlying GraphicsBitmap behind the scenes. This fixes racing between the WindowServer and GUI clients. This patch also adds a WSWindowLocker that is exactly what it sounds like.
2019-01-24Kernel: Finally stop exposing Region members to the public.Andreas Kling
2019-01-21WindowServer: Rename WSEvent subclasses WSFooEvent for consistency.Andreas Kling
Add a WSWindowInvalidationEvent that carries a rect instead of having an awkward single-purpose rect in WSEvent. Flesh out WSKeyEvent a bit more.
2019-01-21WindowServer: Show PID and window ID in title bars for now.Andreas Kling
This is useful for debugging since I'm often wondering which process some window belongs to (and what the window ID is.)
2019-01-21WindowServer: Don't invalidate already frontmost window for moving to front.Andreas Kling
2019-01-20WindowServer: Only blit dirty rect of windows to back buffer.Andreas Kling
Previously we'd blit every pixel in every window that intersected any dirty rect to the back buffer. With this patch, we limit ourselves to blitting the pixels inside the actual dirty rects. There's still a lot of optimizations to make in this code.
2019-01-20WSWindowManager: Add an invalidation and a FIXME.Andreas Kling
2019-01-20Start bringing up LibGUI properly (formerly Widgets.)Andreas Kling
2019-01-19Make a SharedGraphics directory for classes shared between Kernel and LibGUI.Andreas Kling
2019-01-19WSWindowManager: Minor style fixes.Andreas Kling
2019-01-19Invalidate the window when starting to drag it.Andreas Kling
This ensures that the drag color shows up immediately.
2019-01-18WindowServer: Use a different border color for windows being dragged.Andreas Kling
Also get rid of an unnecessary invalidation on drag end.
2019-01-18Add mechanism to expose kernel variables to userspace via ProcFS.Andreas Kling
Only booleans are supported at first. More types can be added easily. Use this to add /proc/sys/wm_flash_flush which when enabled flashes pending screen flush rects in yellow before they happen.
2019-01-18WindowServer: Merge WSFrameBuffer into WSScreen.Andreas Kling
2019-01-18Update coding style in WSWindowManager.Andreas Kling
2019-01-18Support polling with select() by using a zero timeout.Andreas Kling
Use this in WindowServer to avoid getting blocked in select() when there are pending injected events.
2019-01-18Make it possible to invalidate only a portion of a window.Andreas Kling
Use this in Terminal to only invalidate rows where anything changed.
2019-01-17Add WindowActivated and WindowDeactivated events.Andreas Kling
Use this to implement different looking Terminal cursors depending on the window active state.
2019-01-17WindowServer: Slap everything with locks.Andreas Kling
2019-01-16WindowServer: Skip blitting windows into the back buffer if possible.Andreas Kling
Windows that don't intersect any of the dirty rects don't need to be copied into the back buffer since they won't be affected by the subsequent flushes.
2019-01-16Optimize Painter::draw_rect() a bit.Andreas Kling
Reorganize the loops to make it go fast. The draw_rect() part of painting window frames is now ~2.65x faster.
2019-01-16Move some more classes to the new coding style.Andreas Kling
2019-01-16Allow the scheduler to unblock the current process.Andreas Kling
It's a bit confusing that the "current" process is not actually running while we're inside the scheduler. Perhaps the scheduler should redirect "current" to its own dummy Process. I'm not sure. Regardless, this patch improves responsiveness by allowing the scheduler to unblock a process right after it calls select() in case it already has a pending wakeup request.
2019-01-16Tear out or duplicate what's unique for WindowServer from Widgets.Andreas Kling
This turned into a huge refactoring that somehow also includes making locks recursive/reentrant.