summaryrefslogtreecommitdiff
path: root/Widgets
AgeCommit message (Collapse)Author
2019-01-19Move Widget & friends into LibGUI.Andreas Kling
2019-01-19Make a SharedGraphics directory for classes shared between Kernel and LibGUI.Andreas Kling
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-17Paper over annoying race in GraphicsBitmap instantiation.Andreas Kling
This works for now. This has to be done quite differently when I eventually move the WindowServer to userspace.
2019-01-17Get rid of #ifdef SERENITY. We're past that phase of bootstrapping.Andreas Kling
2019-01-17Tidy up Painter::fill_rect() a bit.Andreas Kling
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-16Optimize the Painter::blit() loop a bit. ~3% fewer cycles, I'll take it.Andreas Kling
2019-01-16Move some more classes to the new coding style.Andreas Kling
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-16Pass the process to CharacterDevice::read/write.Andreas Kling
This is much nicer than grabbing directly at 'current' inside a read().
2019-01-16Rename CharacterDevice::has_data_available_for_reading() -> can_read().Andreas Kling
2019-01-15Allow character devices to block write attempts until there is more space.Andreas Kling
2019-01-15Let's do dword-at-a-time memcpy() and memset() in userspace as well.Andreas Kling
Also fix a dumb bug that showed up when I was memsetting something other than zeroes.
2019-01-15Minor Terminal tweaks.Andreas Kling
2019-01-15Add very basic KeyDown events to the GUI event stream.Andreas Kling
The Terminal program now hosts an interactive shell. :^)
2019-01-15Factor out individual glyph drawing into Painter::draw_glyph().Andreas Kling
2019-01-15Start working on a graphical Terminal program.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-14Share GraphicsBitmaps between the windowing server and the client process.Andreas Kling
This is pretty cool. :^) GraphicsBitmaps are now mapped into both the server and the client address space (usually at different addresses but that doesn't matter.) Added a GUI syscall for getting a window's backing store, and another one for invalidating a window so that the server redraws it.
2019-01-14Start refactoring the windowing system to use an event loop.Andreas Kling
Userspace programs can now open /dev/gui_events and read a stream of GUI_Event structs one at a time. I was stuck on a stupid problem where we'd reenter Scheduler::yield() due to having one of the has_data_available_for_reading() implementations using locks.
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-13Minor GUI API things + make Button corners properly transparent.Andreas Kling
2019-01-13Start working on a GUI kernel API.Andreas Kling
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-12Paper over a race in DoubleBuffer.Andreas Kling
I'm still somewhat okay throwing InterruptDisabler at races as they screw me. Eventually I'm gonna have to devise a different strategy though.
2019-01-12Optimize WindowManager::flush() with fast_dword_copy().Andreas Kling
2019-01-12Give GraphicsBitmap a member for the pitch.Andreas Kling
2019-01-12Make FrameBuffer::flush() a no-op when building outside of SDL.Andreas Kling
2019-01-12Draw the cursor *after* flushing all dirty rects.Andreas Kling
2019-01-12Remove FrameBuffer::blit() since it was superseded by Painter::blit().Andreas Kling
2019-01-12Add fast dword-sized copy and fill to the Painter code.Andreas Kling
2019-01-12Fix broken focus rects (due to yet another Rect semantics bug.)Andreas Kling
2019-01-12ListBox: Fix item rect inconsistency between paints and clicks.Andreas Kling
2019-01-12Fix more underdraw bugs in Button due to new Rect semantics.Andreas Kling
2019-01-12Clip painters to widget rect by default to prevent overdraw.Andreas Kling
2019-01-12Update Painter class to the new coding style.Andreas Kling
2019-01-12Fix rect drawing to grok new Rect semantics.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-12Tidy up the h/v line drawing loops a bit.Andreas Kling
2019-01-12Make the Event class virtual.Andreas Kling
I realized that we're leaking all the members in Event subclasses.
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-12Redraw both incoming and outgoing widget when changing focus.Andreas Kling