diff --git a/app/src/main/java/com/termux/terminal/TerminalEmulator.java b/app/src/main/java/com/termux/terminal/TerminalEmulator.java index 01a4c4dc..6889ae95 100644 --- a/app/src/main/java/com/termux/terminal/TerminalEmulator.java +++ b/app/src/main/java/com/termux/terminal/TerminalEmulator.java @@ -1444,7 +1444,7 @@ public final class TerminalEmulator { final int linesToScrollArg = getArg0(1); final int linesBetweenTopAndBottomMargins = mBottomMargin - mTopMargin; final int linesToScroll = Math.min(linesBetweenTopAndBottomMargins, linesToScrollArg); - mScreen.blockCopy(0, mTopMargin, mColumns, linesBetweenTopAndBottomMargins - linesToScroll, 0, linesToScroll); + mScreen.blockCopy(0, mTopMargin, mColumns, linesBetweenTopAndBottomMargins - linesToScroll, 0, mTopMargin + linesToScroll); blockClear(0, mTopMargin, mColumns, linesToScroll); } else { // "${CSI}${func};${startx};${starty};${firstrow};${lastrow}T" - initiate highlight mouse tracking. diff --git a/app/src/test/java/com/termux/terminal/ScrollRegionTest.java b/app/src/test/java/com/termux/terminal/ScrollRegionTest.java index ff431455..b7e258a5 100644 --- a/app/src/test/java/com/termux/terminal/ScrollRegionTest.java +++ b/app/src/test/java/com/termux/terminal/ScrollRegionTest.java @@ -94,4 +94,8 @@ public class ScrollRegionTest extends TerminalTestCase { withTerminalSized(3, 3).enterString("\033[?69h\033[0;2sABCD\0339").assertLinesAre("B ", "D ", " "); } + public void testScrollDownWithScrollRegion() { + withTerminalSized(2, 5).enterString("1\r\n2\r\n3\r\n4\r\n5").assertLinesAre("1 ", "2 ", "3 ", "4 ", "5 "); + enterString("\033[3r").enterString("\033[2T").assertLinesAre("1 ", "2 ", " ", " ", "3 "); + } }