summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibLine/Editor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries/LibLine/Editor.cpp')
-rw-r--r--Userland/Libraries/LibLine/Editor.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/Userland/Libraries/LibLine/Editor.cpp b/Userland/Libraries/LibLine/Editor.cpp
index e86d08bff0..d66cfde642 100644
--- a/Userland/Libraries/LibLine/Editor.cpp
+++ b/Userland/Libraries/LibLine/Editor.cpp
@@ -208,6 +208,7 @@ Editor::~Editor()
void Editor::get_terminal_size()
{
struct winsize ws;
+
if (ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) < 0) {
m_num_columns = 80;
m_num_lines = 25;
@@ -502,8 +503,8 @@ void Editor::initialize()
struct termios termios;
tcgetattr(0, &termios);
m_default_termios = termios; // grab a copy to restore
- if (m_was_resized)
- get_terminal_size();
+
+ get_terminal_size();
if (m_configuration.operation_mode == Configuration::Unset) {
auto istty = isatty(STDIN_FILENO) && isatty(STDERR_FILENO);
@@ -629,6 +630,13 @@ auto Editor::get_line(const String& prompt) -> Result<String, Editor::Error>
return Error::ReadFailure;
}
+ auto old_cols = m_num_columns;
+ auto old_lines = m_num_lines;
+ get_terminal_size();
+
+ if (m_num_columns != old_cols || m_num_lines != old_lines)
+ m_refresh_needed = true;
+
set_prompt(prompt);
reset();
strip_styles(true);