From 8be636afaee6decbf7e7465870e2296c343b36c4 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Thu, 13 Aug 2009 22:05:54 +0000 Subject: Pin the cursor column to terminal width on resize git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@395 df292f66-193f-0410-a5fc-6d59da041ff2 --- src/de/mud/terminal/vt320.java | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'src/de/mud/terminal') diff --git a/src/de/mud/terminal/vt320.java b/src/de/mud/terminal/vt320.java index 0fdaf16..1ebc98c 100644 --- a/src/de/mud/terminal/vt320.java +++ b/src/de/mud/terminal/vt320.java @@ -139,7 +139,6 @@ public abstract class vt320 extends VDUBuffer implements VDUInput { @Override public void setScreenSize(int c, int r, boolean broadcast) { int oldrows = height; - //int oldcols = width; if (debug>2) { if (debugStr == null) @@ -158,11 +157,24 @@ public void setScreenSize(int c, int r, boolean broadcast) { super.setScreenSize(c,r,false); - /* Tricky, since the VDUBuffer works strangely. */ - if (r > oldrows) { - setCursorPosition(C, R + (r - oldrows)); + boolean cursorChanged = false; + + // Don't let the cursor go off the screen. + if (C >= c) { + C = c - 1; + cursorChanged = true; + } + + if (R >= r) { + R = r - 1; + cursorChanged = true; + } + + if (cursorChanged) { + setCursorPosition(C, R); redraw(); } + if (broadcast) { setWindowSize(c, r); /* broadcast up */ } -- cgit v1.2.3