summaryrefslogtreecommitdiff
path: root/Applications/Terminal/Terminal.cpp
AgeCommit message (Collapse)Author
2019-03-06Make a preparation pass for variable-width fonts.Andreas Kling
2019-02-27More compat work towards porting vim.Andreas Kling
It now builds and runs in the small-featureset configuration. :^)
2019-02-25More moving towards using signed types.Andreas Kling
I'm still feeling this out, but I am starting to like the general idea.
2019-02-21WindowServer: Oops, forgot to plumb through the base size for incresize.Andreas Kling
2019-02-21Add 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-20Support resizing the Terminal app.Andreas Kling
I set it up so that TIOCSWINSZ on a master PTY gets forwarded to the slave. This feels intuitively right. Terminal can then use that to inform the shell or whoever is inside the slave that the window size has changed. TIOCSWINSZ also triggers the generation of a SIGWINCH signal. :^)
2019-02-20Rework 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-19WindowServer: 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-17LibGUI: Rename GEventLoop::exit() and GApplication::exit() to quit().Andreas Kling
These functions don't exit immediately, but rather on the next iteration of the event loop. Since exit() is already used by the standard library, let's call it quit() instead. That way, saying exit() means the same thing here as anywhere else.
2019-02-15Use modern C++ attributes instead of __attribute__ voodoo.Andreas Kling
This is quite nice, although I wish [[gnu::always_inline]] implied inline. Also "gnu::" is kind of a wart, but whatcha gonna do.
2019-02-12Plumb menu item activation events from WindowServer to clients.Andreas Kling
GMenu now has an "on_item_activation" callback that fires whenever one of its items are activated. The menu item identifier is used to distinguish between items. Use this to implement font switching in Terminal. :^)
2019-02-11Terminal: Move the notifier into the Terminal class.Andreas Kling
2019-02-10Terminal: Fix lagged full flush after scrolling the whole buffer.Andreas Kling
Now that we're using the lazy rendering model of LibGUI, we can't wait until paint_event() to decide how much we want to update. :^)
2019-02-10Port Terminal to LibGUI.Andreas Kling
To facilitate listening for action on arbitrary file descriptors, I've added a GNotifier class. It's quite simple but very useful: GNotifier notifier(fd, GNotifier::Read); notifier.on_ready_to_read = [this] (GNotifier& fd) { // read from fd or whatever else you like :^) }; The callback will get invoked by GEventLoop when select() says we have something to read on the fd.
2019-02-10Move apps into a top-level Applications/ directory.Andreas Kling