From edd2de9b5e935df323a0943191aa71358aeea4c5 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Fri, 29 Sep 2023 11:10:24 +0200 Subject: [PATCH] Send both SCO and DEC command for save/restore cursor position (fixes #226) (#262) --- src/main/java/org/fusesource/jansi/Ansi.java | 32 ++++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/fusesource/jansi/Ansi.java b/src/main/java/org/fusesource/jansi/Ansi.java index c1054742..803604cb 100644 --- a/src/main/java/org/fusesource/jansi/Ansi.java +++ b/src/main/java/org/fusesource/jansi/Ansi.java @@ -716,19 +716,45 @@ public Ansi scrollDown(final int rows) { return rows > 0 ? appendEscapeSequence('T', rows) : rows < 0 ? scrollUp(-rows) : this; } + @Deprecated + public Ansi restorCursorPosition() { + return restoreCursorPosition(); + } + public Ansi saveCursorPosition() { + saveCursorPositionSCO(); + return saveCursorPositionDEC(); + } + + // SCO command + public Ansi saveCursorPositionSCO() { return appendEscapeSequence('s'); } - @Deprecated - public Ansi restorCursorPosition() { - return appendEscapeSequence('u'); + // DEC command + public Ansi saveCursorPositionDEC() { + builder.append(FIRST_ESC_CHAR); + builder.append('7'); + return this; } public Ansi restoreCursorPosition() { + restoreCursorPositionSCO(); + return restoreCursorPositionDEC(); + } + + // SCO command + public Ansi restoreCursorPositionSCO() { return appendEscapeSequence('u'); } + // DEC command + public Ansi restoreCursorPositionDEC() { + builder.append(FIRST_ESC_CHAR); + builder.append('8'); + return this; + } + public Ansi reset() { return a(Attribute.RESET); }