X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjexer%2Ftterminal%2FECMA48.java;h=22867e1d1c6e7c45e549dfdfc55999940e6aee53;hb=cf9af8df455c0ea5390e4c0ed2555506a051a379;hp=017c3c7f1df6b6b347f1f862d9151de06231ce35;hpb=a90d3119be3030c35765a00d3cc149f61fd8f69e;p=fanfix.git diff --git a/src/jexer/tterminal/ECMA48.java b/src/jexer/tterminal/ECMA48.java index 017c3c7..22867e1 100644 --- a/src/jexer/tterminal/ECMA48.java +++ b/src/jexer/tterminal/ECMA48.java @@ -179,7 +179,7 @@ public class ECMA48 implements Runnable { * @param deviceType DeviceType.VT100, DeviceType, XTERM, etc. * @param baseLang a base language without UTF-8 flag such as "C" or * "en_US" - * @return "LANG=en_US", "LANG=en_US.UTF-8", etc. + * @return "en_US", "en_US.UTF-8", etc. */ public static String deviceTypeLang(final DeviceType deviceType, final String baseLang) { @@ -690,6 +690,15 @@ public class ECMA48 implements Runnable { private boolean columns132 = false; /** + * Get 132 columns value. + * + * @return if true, the terminal is in 132 column mode + */ + public final boolean isColumns132() { + return columns132; + } + + /** * true = reverse video. Set by DECSCNM. */ private boolean reverseVideo = false; @@ -891,7 +900,7 @@ public class ECMA48 implements Runnable { * @param type one of the DeviceType constants to select VT100, VT102, * VT220, or XTERM * @param inputStream an InputStream connected to the remote side. For - * type == XTERM, inputStrem is converted to a Reader with UTF-8 + * type == XTERM, inputStream is converted to a Reader with UTF-8 * encoding. * @param outputStream an OutputStream connected to the remote user. For * type == XTERM, outputStream is converted to a Writer with UTF-8 @@ -978,7 +987,6 @@ public class ECMA48 implements Runnable { * Handle a linefeed. */ private void linefeed() { - int i; if (currentState.cursorY < scrollRegionBottom) { // Increment screen y @@ -3307,17 +3315,31 @@ public class ECMA48 implements Runnable { * DECSTBM - Set top and bottom margins. */ private void decstbm() { - int top = getCsiParam(0, 1, 1, height) - 1; - int bottom = getCsiParam(1, height, 1, height) - 1; + boolean decPrivateModeFlag = false; - if (top > bottom) { - top = bottom; + for (int i = 0; i < collectBuffer.length(); i++) { + if (collectBuffer.charAt(i) == '?') { + decPrivateModeFlag = true; + break; + } } - scrollRegionTop = top; - scrollRegionBottom = bottom; + if (decPrivateModeFlag) { + // This could be restore DEC private mode values. + // Ignore it. + } else { + // DECSTBM + int top = getCsiParam(0, 1, 1, height) - 1; + int bottom = getCsiParam(1, height, 1, height) - 1; - // Home cursor - cursorPosition(0, 0); + if (top > bottom) { + top = bottom; + } + scrollRegionTop = top; + scrollRegionBottom = bottom; + + // Home cursor + cursorPosition(0, 0); + } } /** @@ -3683,7 +3705,7 @@ public class ECMA48 implements Runnable { * * @param ch character from the remote side */ - public void consume(char ch) { + private void consume(char ch) { // DEBUG // System.err.printf("%c", ch);