mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:57:35 +00:00
LibVT+Kernel: Clean up scroll API
This commit cleans up some of the `#ifdef`-ed code smell in `Terminal`, by extending the scroll APIs to take a range of lines as a parameter. This makes it possible to use the same code for `IL`/`DL` as for scrolling. Note that the current scrolling implementation is very naive, and does many insertions/deletions in the middle of arrays, whereas swaps should be enough. This optimization will come in a later commit. The `linefeed` override was removed from `VirtualConsole`. Previously, it exhibited incorrect behavior by moving to column 0. Now that we use the method defined in `Terminal`, code which relied on this behavior stopped working. We go instead go through the TTY layer which handles the various output flags. Passing the input character-by-character seems a bit excessive, so a fix for it will come in another PR.
This commit is contained in:
parent
5f92790489
commit
ae6bdc4e29
5 changed files with 141 additions and 113 deletions
|
@ -58,7 +58,7 @@ protected:
|
|||
|
||||
TTY(unsigned major, unsigned minor);
|
||||
void emit(u8, bool do_evaluate_block_conditions = false);
|
||||
virtual void echo(u8) = 0;
|
||||
void echo_with_processing(u8);
|
||||
|
||||
bool can_do_backspace() const;
|
||||
void do_backspace();
|
||||
|
@ -80,7 +80,8 @@ protected:
|
|||
private:
|
||||
// ^CharacterDevice
|
||||
virtual bool is_tty() const final override { return true; }
|
||||
inline void echo_with_processing(u8);
|
||||
|
||||
virtual void echo(u8) = 0;
|
||||
|
||||
template<typename Functor>
|
||||
void process_output(u8, Functor put_char);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue