summaryrefslogtreecommitdiff
path: root/Widgets/WindowManager.cpp
AgeCommit message (Collapse)Author
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.
2019-01-16Window: Update coding style.Andreas Kling
2019-01-14Build Painter & friends into LibC. Use it in the GUI test app.Andreas Kling
2019-01-14So long SDL stuff. You were a nice bootstrapping environment.Andreas Kling
2019-01-13Keep back and front painters around in WindowManager.Andreas Kling
The internal state never changes in some meaningful way for these (at this time.)
2019-01-13Flush the old and new cursor rects in a single rect.Andreas Kling
2019-01-13Make a nice bitmap cursor.Andreas Kling
It's rendered as two CharacterBitmaps right now because I don't have a good primitive for this and I wanted it right away. I should add 2-color bitmaps.. Also make a neat little effect where the cursor becomes inverted on press.
2019-01-13Make GraphicsBitmaps be Region-backed when running in the kernel.Andreas Kling
This is a lot better than having them in kmalloc memory. I'm gonna need a way to keep track of which process owns which bitmap eventually, maybe through some sort of resource keying system. We'll see.
2019-01-13Have WindowManager::invalidate() unite dirty rects that intersect each other.Andreas Kling
This is kinda primitive but it avoids double-draw when slowly dragging stuff.
2019-01-12Optimize WindowManager::flush() with fast_dword_copy().Andreas Kling
2019-01-12Draw the cursor *after* flushing all dirty rects.Andreas Kling
2019-01-12Update Painter class to the new coding style.Andreas Kling
2019-01-12Give WindowManager member copies of the Framebuffer& and the screen rect.Andreas Kling
These are used all the time, let's avoid function calls for them.
2019-01-12WindowManager::invalidate() can just use Rect::intersection().Andreas Kling
2019-01-12WindowManager should only flush pixels inside the screen rect.Andreas Kling
2019-01-12Add a Vector::clear_with_capacity() that doesn't release the backing store.Andreas Kling
Use this for WindowManager's dirty rects to avoid kmalloc traffic.
2019-01-12Let the EventLoop drive the WindowManager through WM_Compose events.Andreas Kling
2019-01-12All right, let's double buffer the display. It looks so much better.Andreas Kling
This performs like dogshit. I need to make some optimizations. :^)
2019-01-12Only initiate window title bar drags for left mouse button clicks.Andreas Kling
2019-01-12Tidy up window border rendering a bit.Andreas Kling
2019-01-12Get rid of the "root widget" concept in WindowManager.Andreas Kling
Instead just create a GraphicsBitmap wrapper around the display framebuffer and teach Painter how to draw directly into a GraphicsBitmap.
2019-01-12Don't repaint the root layer in invalidated areas with windows over them.Andreas Kling
2019-01-12Ignore WindowManager invalidations inside already invalidated rects.Andreas Kling
2019-01-12Start refactoring the WindowManager to be invalidation driven.Andreas Kling
2019-01-11Throw up some widgets on screen so we can see what they look like.Andreas Kling
2019-01-11Hook up the PS2MouseDevice to the AbstractScreen+WindowManager.Andreas Kling
Render the mouse cursor by xor'ing the pixels. I don't know anything about hardware cursors yet and this way we don't need to recompose the window hierarchy every time you move the mouse. :^)
2019-01-10Hook everything up to run the GUI on top of the kernel.Andreas Kling
Okay things kinda sorta work. Both Bochs and QEMU now boot into GUI mode. There's a ton of stuff that doesn't make sense and so many things to rework. Still it's quite cool to have made it this far. :^)
2019-01-10Start separating out the SDL-related stuff in Widgets.Andreas Kling
2019-01-10More window manager hacking. Get rid of TerminalWidget for now.Andreas Kling
2019-01-09More window manager hacking. FocusIn/FocusOut events.Andreas Kling
2019-01-09Remove some #if 0'd code.Andreas Kling
2019-01-09Stop recomposing the window hierarchy after every dang widget paint.Andreas Kling
2019-01-09Print the number of WindowManager recompose() calls to debugger.Andreas Kling
2019-01-09Let WindowManager send out events for WindowBecame{Active,Inactive}Andreas Kling
2019-01-09More window management work.Andreas Kling
- Fix inverted mouse event hit test z-ordering. - Let the RootWidget backing store simply be the display framebuffer.
2019-01-09Add basic z-order for Windows.Andreas Kling
2019-01-09Start refactoring graphics system to have per-window backing stores.Andreas Kling
It was fun for everyone to share a single framebuffer but it was also kinda really awful. Let's move towards having a "GraphicsBitmap" as the backing store for each Window. This is going to need a lot of refactoring so let's get started.
2018-12-21Yet another pass of style fixes.Andreas Kling
2018-10-14Close the MsgBox when clicking the OK button.Andreas Kling
This feels vaguely crashy. I haven't tested window/widget destruction before so there's sure to be bugs.
2018-10-13Implement basic focus.Andreas Kling
2018-10-13Let the WindowManager track the active window.Andreas Kling
We draw the active window in a different color, obviously. :^)
2018-10-13Start using WeakPtr for some of the WindowManager window pointers.Andreas Kling
2018-10-13Use HashMap::remove() in some places that I wanted it.Andreas Kling
2018-10-12Some color cleanup.Andreas Kling
2018-10-12After moving a window, try to repaint a bit less.Andreas Kling
Only repaint windows that intersect either the old or the new rect. Also only repaint those rects in the root widget.
2018-10-12Add a CheckBox widget.Andreas Kling
2018-10-12Add a clock widget.Andreas Kling
2018-10-12Window contents move along with the window!Andreas Kling
2018-10-12Very hacky support for dragging a window around.Andreas Kling
2018-10-12The WindowManager can now react to mouse events on the window title bar.Andreas Kling