aboutsummaryrefslogtreecommitdiffstats
path: root/src/de/mud/terminal
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2009-08-13 22:05:54 +0000
committerKenny Root <kenny@the-b.org>2009-08-13 22:05:54 +0000
commit8be636afaee6decbf7e7465870e2296c343b36c4 (patch)
treeed8e8d850f2e1d2908b8dd41a89bd1f02fbb9f6c /src/de/mud/terminal
parent1a47eab6b2692a880cea5c7df343ecf5655c1292 (diff)
downloadconnectbot-8be636afaee6decbf7e7465870e2296c343b36c4.tar.gz
connectbot-8be636afaee6decbf7e7465870e2296c343b36c4.tar.bz2
connectbot-8be636afaee6decbf7e7465870e2296c343b36c4.zip
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
Diffstat (limited to 'src/de/mud/terminal')
-rw-r--r--src/de/mud/terminal/vt320.java20
1 files changed, 16 insertions, 4 deletions
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 */
}