diff --git a/src/scrollpad.cpp b/src/scrollpad.cpp index c3eb26d5..ff146930 100644 --- a/src/scrollpad.cpp +++ b/src/scrollpad.cpp @@ -120,13 +120,15 @@ void Scrollpad::RemoveFormatting() void Scrollpad::Refresh() { + int MaxBeginning = itsRealHeight-itsHeight; + if (itsBeginning > MaxBeginning) + itsBeginning = MaxBeginning; prefresh(itsWindow, itsBeginning, 0, itsStartY, itsStartX, itsStartY+itsHeight-1, itsStartX+itsWidth-1); } void Scrollpad::Resize(size_t new_width, size_t new_height) { AdjustDimensions(new_width, new_height); - itsBeginning = 0; itsRealHeight = itsHeight; Flush(); } @@ -178,7 +180,6 @@ void Scrollpad::Scroll(Where where) void Scrollpad::Clear(bool clear_screen) { - itsBeginning = 0; itsRealHeight = itsHeight; itsBuffer.Clear(); wclear(itsWindow); @@ -192,6 +193,11 @@ void Scrollpad::Clear(bool clear_screen) Refresh(); } +void Scrollpad::Reset() +{ + itsBeginning = 0; +} + #ifdef _UTF8 Scrollpad &Scrollpad::operator<<(const std::string &s) { diff --git a/src/scrollpad.h b/src/scrollpad.h index ec4d1857..0dbe1785 100644 --- a/src/scrollpad.h +++ b/src/scrollpad.h @@ -107,6 +107,10 @@ namespace NCurses /// virtual void Clear(bool clear_screen = 1); + /// Sets starting position to the beginning + /// + void Reset(); + /// Template function that redirects all data passed /// to the scrollpad window to its internal buffer /// @param obj any object that has ostream &operator<<() defined