scrollpad: fix height calculation on window resize

This commit is contained in:
Andrzej Rybczak
2014-08-27 12:46:49 +02:00
parent b7ceae7273
commit e7523337c0

View File

@@ -62,7 +62,6 @@ m_real_height(height)
{ {
} }
void Scrollpad::refresh() void Scrollpad::refresh()
{ {
assert(m_real_height >= m_height); assert(m_real_height >= m_height);
@@ -74,6 +73,7 @@ void Scrollpad::refresh()
void Scrollpad::resize(size_t new_width, size_t new_height) void Scrollpad::resize(size_t new_width, size_t new_height)
{ {
adjustDimensions(new_width, new_height); adjustDimensions(new_width, new_height);
recreate(new_width, new_height);
flush(); flush();
} }
@@ -125,7 +125,7 @@ void Scrollpad::clear()
{ {
m_real_height = m_height; m_real_height = m_height;
m_buffer.clear(); m_buffer.clear();
wclear(m_window); werase(m_window);
delwin(m_window); delwin(m_window);
m_window = newpad(m_height, m_width); m_window = newpad(m_height, m_width);
setTimeout(m_window_timeout); setTimeout(m_window_timeout);
@@ -260,9 +260,11 @@ void Scrollpad::flush()
w << *p; w << *p;
return height; return height;
}; };
m_real_height = std::max(write_buffer(true), m_height); m_real_height = std::max(write_buffer(true), m_height);
recreate(m_width, m_real_height); if (m_real_height > m_height)
recreate(m_width, m_real_height);
else
werase(m_window);
write_buffer(false); write_buffer(false);
} }