summaryrefslogtreecommitdiff
path: root/Libraries/LibVT
AgeCommit message (Collapse)Author
2020-11-29LibVT: Make terminal scrollback max size configurableAnotherTest
2020-11-10LibVT: Add TerminalWidget::scroll_to_bottom() APIAndreas Kling
(And use this internally when scrolling to bottom on non-modifier keydown events.)
2020-11-03LibVT: Copying from terminal scrollback resulted in wrong textAndreas Kling
This regressed when turning the terminal history into a circular buffer as only the non-const version of Terminal::line() was updated with the new indexing logic.
2020-10-31LibGfx: Move FontDatabase from LibGUI to LibGfxAndreas Kling
Not sure why I put this into LibGUI in the first place.
2020-10-30LibGUI: Add Widget focus policiesAndreas Kling
Every widget now has a GUI::FocusPolicy that determines how it can receive focus: - NoFocus: The widget is not focusable (default) - TabFocus: The widget can be focused using the tab key. - ClickFocus: The widget can be focused by clicking on it. - StrongFocus: Both of the above. For widgets that have a focus proxy, getting/setting the focus policy will affect the proxy instead.
2020-10-30LibVT: Use dbgln() in TerminalWidgetAndreas Kling
2020-10-25LibGfx+LibGUI+Clients: Make fonts findable by their qualified nameAndreas Kling
The qualified name of a font is "<Family> <Size> <Weight>". You can get the QN of a Font via the Font::qualified_name() API, and you can get any system font by QN from the GUI::FontDatabase. :^)
2020-10-02Everywhere: Fix typosNico Weber
Mostly in comments, but sprintf() now prints "August" instead of "Auguest" so that's something.
2020-09-25Meta+LibHTTP through LibWeb: Make clang-format-10 cleanBen Wiederhake
2020-09-15LibVT: Use xterm modifier scheme for tilde keys tooNico Weber
2020-09-15LibVT+LibLine: Use `1;mods` CSI parameters for ctrl/alt/shift-arrow keysNico Weber
xterms send a bitmask (+ 1) in the 2nd CSI parameter if "special" keys (arrow keys, pgup/down, etc) are sent with modifiers held down. Serenity's Terminal used to send ^[[O, which is a nonexistent escape sequence and a misread of VT100's ^[O (ie the '[' is replaced by 'O'). Since the xterm scheme also supports shift and alt modifiers, switch to that. More flexible, and makes ctrl-left/right and alt-left/right work in SerenityOS's bash port. Also do this for page up/down. No behavior change for SerenityOS's Shell.
2020-09-13Terminal: Make sure empty hrefs set a null string on AttributeNico Weber
Else, we store an empty but allocated string for each Attribute after a href was emitted (since it's ended by a non-null empty string), which makes Line objects very expensive to destroy and to modify. Reduces `disasm /bin/id` from 414ms to 380ms (min-of-5). There's a lot more perf wins to be had with better href handling (most lines don't have any hrefs, so instead of storing a string per Attr, maybe we could have a vector of hrefs per line and int offsets into that in each Attr for example), but this is a simple, obvious, and effective improvement, so let's start with this.
2020-09-11LibVT: Show an I-beam cursor over TerminalWidgetAndreas Kling
..and implement this using the new widget override cursor mechanism.
2020-09-11LibGUI+WindowServer: Rename window "override cursor" to just "cursor"Andreas Kling
Let's just say each window has a cursor, there's not really overriding going on.
2020-09-10LibGfx: Move StandardCursor enum to LibGfxAndreas Kling
This enum existed both in LibGUI and WindowServer which was silly and error-prone.
2020-09-10LibVT: Let Terminal keep history in a circular bufferNico Weber
This makes Terminal::scroll_up() O(1) instead of O(n) in the size of the history. (It's still O(n) in the size of visible lines.) Reduces time to run `disasm /bin/id` with the default terminal window size from 530ms to 409ms (min-of-5) on my system.
2020-09-10LibVT: Let Terminal only expose history_size, not storageNico Weber
2020-09-05LibGUI: Make the Clipboard API deal in raw byte buffers a bit moreAndreas Kling
To open up for putting not just text/plain content on the clipboard, let's make the GUI::Clipboard API a bit more raw-data-friendly. :^)
2020-08-30LibVT+Terminal: Mark default action in context menuBen Wiederhake
2020-08-30Libraries: Unbreak building with extra debug macrosBen Wiederhake
2020-08-27Base: Move 16x16 common icons to /res/icons/16x16/thankyouverycool
Drops the '16' suffix from filenames. Resizes inconsistent audio-volume icons to intended size.
2020-08-18WindowServer+LibVT: Convert some dbgprintf() to dbg()Sergey Bugaev
These kept annoying me, because these were the only two lines in the default boot log that went unattributed.
2020-08-15LibGUI: Make focus events more aware of why focus is changingAndreas Kling
This patch adds GUI::FocusEvent which has a GUI::FocusSource. The focus source is one of three things: - Programmatic - Mouse - Keyboard This allows receivers of focus events to implement different behaviors depending on how they receive/lose focus.
2020-08-05Unicode: Try s/codepoint/code_point/g againNico Weber
This time, without trailing 's'. Ran: git grep -l 'codepoint' | xargs sed -ie 's/codepoint/code_point/g
2020-08-05Revert "Unicode: s/codepoint/code_point/g"Nico Weber
This reverts commit ea9ac3155d1774f13ac4e9a96605c0e85a8f299e. It replaced "codepoint" with "code_points", not "code_point".
2020-08-03Unicode: s/codepoint/code_point/gAndreas Kling
Unicode calls them "code points" so let's follow their style.
2020-07-12LibVT: Don't scroll to bottom when pressing the right shift keyAndreas Kling
2020-07-09LibVT: Set scrollbar page sizeTom
2020-07-05Terminal+LibVT: Add "clear including history" action (Ctrl+Shift+K) :^)Andreas Kling
Sometimes you just want to get rid of all your scrollback history in the terminal, and now there's a way to do that.
2020-07-04Userspace: Remove a bunch of unnecessary Kernel/API/KeyCode.h includesAndreas Kling
2020-07-04Kernel: Move headers intended for userspace use into Kernel/API/Andreas Kling
2020-07-04LibGUI: Turn GUI::Application::the() into a pointerAndreas Kling
During app teardown, the Application object may be destroyed before something else, and so having Application::the() return a reference was obscuring the truth about its lifetime. This patch makes the API more honest by returning a pointer. While this makes call sites look a bit more sketchy, do note that the global Application pointer only becomes null during app teardown.
2020-06-30Terminal: Bump the default ScrollLength to 4Andreas Kling
This feels so much better than scrolling one line at a time. :^)
2020-06-30LibVT/Terminal: add a scroll length to the TerminalWidgetBenoît Lormeau
The scroll length is the number of lines by which the terminal will go up/down when scrolling the mouse wheel once.
2020-06-25Terminal: Ignore cell background when visual beep is activeAnotherTest
Fixes #2621
2020-06-16LibVT: Replace u8 type to u32 for code pointHüseyin ASLITÜRK
Replace KeyEvent text attribute usage with code_point.
2020-06-12AK: Make string-to-number conversion helpers return OptionalAndreas Kling
Get rid of the weird old signature: - int StringType::to_int(bool& ok) const And replace it with sensible new signature: - Optional<int> StringType::to_int() const
2020-06-10LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSizeAndreas Kling
This fits nicer with FloatRect,FloatPoint,FloatSize and gives a much better visual clue about what type of metric is being used.
2020-05-30LibVT: Allow updating the window progress via an escape sequenceAndreas Kling
You can now request an update of the terminal's window progress by sending this escape sequence: <esc>]9;<value>;<max_value>;<escape><backslash> I'm sure we can find many interesting uses for this! :^)
2020-05-30LibVT: Fix emitting \0 when pressing a modifier keySergey Bugaev
This causes the kernel to return EOF, which in turn confuses everything. This is a regression from the LibVT port of VirtualConsole.
2020-05-27LibVT: Move most of key press handling logic into VT::TerminalSergey Bugaev
This will let us share it between the userspace (TerminalWidget) and the Kernel.
2020-05-26AK: Rename FileSystemPath -> LexicalPathSergey Bugaev
And move canonicalized_path() to a static method on LexicalPath. This is to make it clear that FileSystemPath/canonicalized_path() only perform *lexical* canonicalization.
2020-05-18LibVT: Pass the handler name to Launcher::open_url to control what gets launchedNicholas Hollett
Now we can pick which application gets opened in the context menu for URLs in the Terminal \o/
2020-05-17LibVT: TerminalWidget now opts into emoji input by default :^)Andreas Kling
2020-05-17LibVT: Handle keydown events with multi-byte text correctlyAndreas Kling
TerminalWidget can now handle keydown events that contain multi-byte UTF-8 sequences. :^)
2020-05-17LibVT: Make TerminalWidget::selected_text() produce UTF-8 strings :^)Andreas Kling
2020-05-17LibVT: Store all-ASCII terminal lines as 8-bit charactersAndreas Kling
To conserve memory, we now use byte storage for terminal lines until we encounter a non-ASCII codepoint. At that point, we transparently switch to UTF-32 storage for that one line.
2020-05-16LibVT: Don't try to set the window title to invalid UTF-8 textAndreas Kling
2020-05-16LibVT: Add incremental UTF-8 parsing to the terminal input handlerAndreas Kling
Instead of relying on the GUI code to handle UTF-8, we now process and parse the incoming data into 32-bit codepoints ourselves. This means that you can now show emojis in the terminal and they will only take up one character cell each. :^)
2020-05-16LibVT: Tweak input parsing related namesAndreas Kling