Fix Screen::moveImage overwriting content

The previous version didn't care about partial images i.e., the a few
lines of the full image. This lead to broken behaviour in apps like VI.
wilder
Waqar Ahmed 4 years ago
parent f1224716a1
commit 7bb6e94725
  1. 4
      src/Screen.cpp

@ -1164,8 +1164,8 @@ void Screen::moveImage(int dest, int sourceBegin, int sourceEnd)
const int destY = dest / _columns;
const int srcY = sourceBegin / _columns;
if (dest < sourceBegin) {
std::rotate(_screenLines.begin() + destY, _screenLines.begin() + srcY, _screenLines.end());
std::rotate(_lineProperties.begin() + destY, _lineProperties.begin() + srcY, _lineProperties.end());
std::rotate(_screenLines.begin() + destY, _screenLines.begin() + srcY, _screenLines.begin() + srcY + lines);
std::rotate(_lineProperties.begin() + destY, _lineProperties.begin() + srcY, _lineProperties.begin() + srcY + lines);
} else {
for (int i = lines; i >= 0; --i) {
_screenLines[destY + i] = std::move(_screenLines[srcY + i]);

Loading…
Cancel
Save