mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14: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
|
@ -37,17 +37,12 @@ private:
|
|||
virtual void clear() override;
|
||||
virtual void clear_including_history() override;
|
||||
|
||||
virtual void scroll_up() override;
|
||||
virtual void scroll_down() override;
|
||||
virtual void linefeed() override;
|
||||
virtual void scroll_up(u16 region_top, u16 region_bottom, size_t count) override;
|
||||
virtual void scroll_down(u16 region_top, u16 region_bottom, size_t count) override;
|
||||
virtual void put_character_at(unsigned row, unsigned column, u32 ch) override;
|
||||
virtual void set_window_title(const String&) override;
|
||||
|
||||
virtual void ICH(Parameters) override;
|
||||
|
||||
virtual void IL(Parameters) override;
|
||||
virtual void DCH(Parameters) override;
|
||||
virtual void DL(Parameters) override;
|
||||
};
|
||||
|
||||
class VirtualConsole final : public TTY
|
||||
|
@ -140,8 +135,8 @@ private:
|
|||
|
||||
void on_code_point(u32);
|
||||
|
||||
void scroll_down();
|
||||
void scroll_up();
|
||||
void scroll_down(u16 region_top, u16 region_bottom, size_t count);
|
||||
void scroll_up(u16 region_top, u16 region_bottom, size_t count);
|
||||
void clear_line(size_t index);
|
||||
void put_character_at(unsigned row, unsigned column, u32 ch, const VT::Attribute&);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue