summaryrefslogtreecommitdiff
path: root/Libraries/LibVT
AgeCommit message (Collapse)Author
2020-01-25LibVT: Support HVP (Horizontal and Vertical Position) (final 'f')Andreas Kling
2020-01-25LibVT: Support the DA (Device Attributes) request (final 'c')Andreas Kling
This is used by vttest on startup to query the device for identity.
2020-01-22LibVT: Input dragged file path into the terminal on dropSergey Bugaev
We also support dropping plain text and non-file URLs.
2020-01-18Meta: Add license header to source filesAndreas Kling
As suggested by Joshua, this commit adds the 2-clause BSD license as a comment block to the top of every source file. For the first pass, I've just added myself for simplicity. I encourage everyone to add themselves as copyright holders of any file they've added or modified in some significant way. If I've added myself in error somewhere, feel free to replace it with the appropriate copyright holder instead. Going forward, all new source files should include a license header.
2020-01-16LibVT: enforce a minimum size of 1 column and 1 rowjoshua stein
Fixes #829
2020-01-15LibVT: only use default bold font if it's the same size as our fontjoshua stein
When the new font is a different size, just use that font for bold glyphs as well. It would be nice to find a matching bold version of the new font automatically in the future.
2020-01-08LibVT: Relayout TerminalWidget on font changeAndreas Kling
We were not recomputing the internal dimensions after a font changed, which caused things to look very off. It's still not perfect as we're always using the same (small) font for bold text, which obviously sticks out like a sore pinky when the rest of the terminal text is large.
2020-01-01LibVT: fix pixel size calculations in terminal_did_resizejoshua stein
The scrollbar width must be factored in, and one too many m_line_spacing were being factored into the height. These caused an initial terminal opening in 80x25 to get resized right away and shrunk down to 77x24.
2019-12-20Build: clean up build system, use one shared Makefilejoshua stein
Allow everything to be built from the top level directory with just 'make', cleaned with 'make clean', and installed with 'make install'. Also support these in any particular subdirectory. Specifying 'make VERBOSE=1' will print each ld/g++/etc. command as it runs. Kernel and early host tools (IPCCompiler, etc.) are built as object.host.o so that they don't conflict with other things built with the cross-compiler.
2019-12-09LibGUI: Make GMenu inherit from CObjectAndreas Kling
This is primarily to make it possible to pass a GMenu* where a CObject* is expected.
2019-12-09AK: Use size_t for the length of stringsAndreas Kling
Using int was a mistake. This patch changes String, StringImpl, StringView and StringBuilder to use size_t instead of int for lengths. Obviously a lot of code needs to change as a result of this.
2019-12-01LibVT: Fixed some debugging code that didn't compileBrandon Scott
2019-11-30LibVT: Always use Painter::clear_rect() instead of Painter::fill_rect()Andreas Kling
We never want to alpha blend when rendering the terminal buffer, so we can just use clear_rect() and avoid trouble. This fixes an issue with inconsistent translucency in the terminal app when setting a custom background opacity.
2019-11-25LibVT: Unbreak semi-transparent terminal background paintingAndreas Kling
I broke semi-transparent terminals when I added support for alpha blending to Painter::fill_rect(). When we fill the terminal widget background, we don't want blending to take place, we're just looking to replace with an exact color, so now we can use Painter::clear_rect() for that.
2019-11-23LibVT: Don't scroll to bottom for Ctrl/Alt/ShiftAndreas Kling
It's nice that we scroll the cursor into view when typing in a terminal but it's not necessary when pressing only Ctrl, Alt of Shift.
2019-11-20LibVT: Don't implicitly copy the selection on double-click or mouse-upAndreas Kling
2019-11-20LibVT: Add a context menu to TerminalWidgetAndreas Kling
Starting with only the copy and paste actions. But I'm sure we can come up with some more things to put here. :^)
2019-11-20Terminal+LibVT: Switch Terminal to using explicit copy/paste actionsAndreas Kling
Instead of implicitly copying whatever you select, and pasting when you middle-click, let's have traditional copy and paste actions bound to Ctrl+Shift+C and Ctrl+Shift+V respectively.
2019-11-20LibVT: Use the middle mouse button for pasting (instead of right)Andreas Kling
This will allow us to show a context menu when you right-click, which will feels more consistent with the rest of the Serenity desktop.
2019-11-15Terminal: Add selecting whole line on triple clickRok Povsic
The line is also added to clipboard
2019-11-10Terminal: Clip out the scrollbar when painting the terminal bufferAndreas Kling
This avoids the terminal background color sometimes flashing through the scrollbar for a brief moment.
2019-10-22LibVT: Make inject_string() a public API so clients can use itAndreas Kling
This API allows you to add arbitrary input at the current cursor position. You can even do escape sequences! :^)
2019-10-22LibVT+Terminal: Give TerminalWidget a hook for EOF on the ptyAndreas Kling
Instead of quitting the application immediately when the pty gives an EOF, fire an on_command_exit hook so the TerminalWidget client can decide for himself what to do.
2019-10-21LibVT+Terminal: Don't set window title directly from TerminalWidgetAndreas Kling
Instead, have TerminalWidget provide an on_title_change hook. This allows embedders to decide for themselves what to do if we receive a "set terminal title" escape sequence.
2019-10-21LibVT: Make TerminalWidget's automatic size policy updates optionalAndreas Kling
When embedding a TerminalWidget, you might not want it to automatically update its own size policy based on the exact terminal buffer size. This behavior is now passed as a flag to the TerminalWidget constructor which makes it behave nicely both inside HackStudio and in Terminal.
2019-10-21LibVT: Make TerminalWidget logically focusable when not a main widgetAndreas Kling
TerminalWidget was relying on the "window became active/inactive" events from WindowServer to update its own internal focus state. Unfortunately those events are only sent to the window's main widget, so this was not working when the TerminalWidget was embedded deeper in a widget tree. This patch hooks the focusin and focusout events and uses those to set the focus state when received. This makes TerminalWidget behave nicely in both configurations. This design is kind of a workaround for this awkward focus architecture and we should figure out something better in the long term.
2019-10-21LibVT: Move TerminalWidget from the Terminal app to hereAndreas Kling
It would be nice to be able to reuse this widget in other apps. :^)
2019-09-17Terminal: Ensure a \t always advances by at least one columnSergey Bugaev
2019-09-06AK: Rename <AK/AKString.h> to <AK/String.h>Andreas Kling
This was a workaround to be able to build on case-insensitive file systems where it might get confused about <string.h> vs <String.h>. Let's just not support building that way, so String.h can have an objectively nicer name. :^)
2019-09-05Terminal: Add some basic emoji supportSergey Bugaev
This is not as perfect as it is elsewhere in the system, as we cannot really change how terminal "thinks about" characters and bytes. What we can do though, and what this commit does, is to *render* emojis, but make it seem as if they take up all the space, and all the columns their bytes would take if they were all regular characters.
2019-08-19LibVT: Add scrollback history to VT::TerminalAndreas Kling
The default (hard-coded) history size is 500 lines. When the history is altered, the TerminalClient is notified via terminal_history_changed().
2019-08-13LibVT: Shave down VT::Attribute from 8 bytes to 3 bytesAndreas Kling
We have one of these per character in the terminal buffers, so it's a decent haircut. :^)
2019-08-13LibVT: Rename VT::BufferPosition to VT::Position and move to own fileAndreas Kling
2019-08-12LibVT: Factor out terminal emulation from Terminal to make it reusableAndreas Kling
Now that we're bringing back the in-kernel virtual console, we should move towards having a single implementation of terminal emulation. This patch rips out the emulation code from the Terminal application and turns it into the beginnings of LibVT. The basic design idea is that users of VT::Terminal will implement and provide a VT::TerminalClient subclass to handle presentation-specific things. We'll need to iterate on this, but it's a start. :^)