diff --git a/Applications/Terminal/Terminal.cpp b/Applications/Terminal/Terminal.cpp index 5fd56b25a2..924ba3f748 100644 --- a/Applications/Terminal/Terminal.cpp +++ b/Applications/Terminal/Terminal.cpp @@ -279,14 +279,14 @@ void Terminal::set_opacity(u8 new_opacity) force_repaint(); } -VT::BufferPosition Terminal::normalized_selection_start() const +VT::Position Terminal::normalized_selection_start() const { if (m_selection_start < m_selection_end) return m_selection_start; return m_selection_end; } -VT::BufferPosition Terminal::normalized_selection_end() const +VT::Position Terminal::normalized_selection_end() const { if (m_selection_start < m_selection_end) return m_selection_end; @@ -298,7 +298,7 @@ bool Terminal::has_selection() const return m_selection_start.is_valid() && m_selection_end.is_valid(); } -bool Terminal::selection_contains(const VT::BufferPosition& position) const +bool Terminal::selection_contains(const VT::Position& position) const { if (!has_selection()) return false; @@ -306,7 +306,7 @@ bool Terminal::selection_contains(const VT::BufferPosition& position) const return position >= normalized_selection_start() && position <= normalized_selection_end(); } -VT::BufferPosition Terminal::buffer_position_at(const Point& position) const +VT::Position Terminal::buffer_position_at(const Point& position) const { auto adjusted_position = position.translated(-(frame_thickness() + m_inset), -(frame_thickness() + m_inset)); int row = adjusted_position.y() / m_line_height; diff --git a/Applications/Terminal/Terminal.h b/Applications/Terminal/Terminal.h index 3d985c56e4..4bcdbf3c79 100644 --- a/Applications/Terminal/Terminal.h +++ b/Applications/Terminal/Terminal.h @@ -31,11 +31,11 @@ public: RefPtr config() const { return m_config; } bool has_selection() const; - bool selection_contains(const VT::BufferPosition&) const; + bool selection_contains(const VT::Position&) const; String selected_text() const; - VT::BufferPosition buffer_position_at(const Point&) const; - VT::BufferPosition normalized_selection_start() const; - VT::BufferPosition normalized_selection_end() const; + VT::Position buffer_position_at(const Point&) const; + VT::Position normalized_selection_start() const; + VT::Position normalized_selection_end() const; private: // ^GWidget @@ -61,8 +61,8 @@ private: VT::Terminal m_terminal; - VT::BufferPosition m_selection_start; - VT::BufferPosition m_selection_end; + VT::Position m_selection_start; + VT::Position m_selection_end; bool m_should_beep { false }; bool m_belling { false }; diff --git a/Libraries/LibVT/Position.h b/Libraries/LibVT/Position.h new file mode 100644 index 0000000000..d6766029f7 --- /dev/null +++ b/Libraries/LibVT/Position.h @@ -0,0 +1,48 @@ +#pragma once + +namespace VT { + +class Position { +public: + Position() {} + Position(int row, int column) + : m_row(row) + , m_column(column) + { + } + + bool is_valid() const { return m_row >= 0 && m_column >= 0; } + int row() const { return m_row; } + int column() const { return m_column; } + + bool operator<(const Position& other) const + { + return m_row < other.m_row || (m_row == other.m_row && m_column < other.m_column); + } + + bool operator<=(const Position& other) const + { + return *this < other || *this == other; + } + + bool operator>=(const Position& other) const + { + return !(*this < other); + } + + bool operator==(const Position& other) const + { + return m_row == other.m_row && m_column == other.m_column; + } + + bool operator!=(const Position& other) const + { + return !(*this == other); + } + +private: + int m_row { -1 }; + int m_column { -1 }; +}; + +} diff --git a/Libraries/LibVT/Terminal.h b/Libraries/LibVT/Terminal.h index ca523ebbc7..d0cc82ca1e 100644 --- a/Libraries/LibVT/Terminal.h +++ b/Libraries/LibVT/Terminal.h @@ -3,6 +3,7 @@ #include #include #include +#include namespace VT { @@ -56,49 +57,6 @@ struct Attribute { } }; -class BufferPosition { -public: - BufferPosition() {} - BufferPosition(int row, int column) - : m_row(row) - , m_column(column) - { - } - - bool is_valid() const { return m_row >= 0 && m_column >= 0; } - int row() const { return m_row; } - int column() const { return m_column; } - - bool operator<(const BufferPosition& other) const - { - return m_row < other.m_row || (m_row == other.m_row && m_column < other.m_column); - } - - bool operator<=(const BufferPosition& other) const - { - return *this < other || *this == other; - } - - bool operator>=(const BufferPosition& other) const - { - return !(*this < other); - } - - bool operator==(const BufferPosition& other) const - { - return m_row == other.m_row && m_column == other.m_column; - } - - bool operator!=(const BufferPosition& other) const - { - return !(*this == other); - } - -private: - int m_row { -1 }; - int m_column { -1 }; -}; - class Terminal { public: explicit Terminal(TerminalClient&);