summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2007-11-27 21:07:38 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2007-11-27 21:07:38 +0000
commitc6384a765b1113fbff54bc3f0126b3a578730b36 (patch)
tree3f39fae37a3c479f550ff9e7da3141298eab1e90
parent7034ba236f4cbb94753f23747e363644a932221e (diff)
Flush data on tty open. Also reset colour before clearing line/screen.
-rw-r--r--TODO4
-rw-r--r--screen.c6
-rw-r--r--tty.c8
3 files changed, 13 insertions, 5 deletions
diff --git a/TODO b/TODO
index 206c4ce8..6974251c 100644
--- a/TODO
+++ b/TODO
@@ -57,7 +57,9 @@
- lift SHRT_MAX limits for history
- audit copy/scroll and other modes for problems with very small windows
- screen_draw_* moved out/renamed (accept TTY_*?)
-- SIGWINCH can probably be handled in server
-- For 0.2 --------------------------------------------------------------------
- window splitting?
+- restore term cap checks
+- anything which uses cmd_{send,recv}_string will break if the string is
+ split. string length should be part of the command size
diff --git a/screen.c b/screen.c
index 4318cdf5..f83a9142 100644
--- a/screen.c
+++ b/screen.c
@@ -1,4 +1,4 @@
-/* $Id: screen.c,v 1.51 2007-11-27 19:32:15 nicm Exp $ */
+/* $Id: screen.c,v 1.52 2007-11-27 21:07:38 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -458,6 +458,7 @@ screen_draw_clear_screen(struct screen_draw_ctx *ctx)
{
u_int i;
+ screen_draw_set_attributes(ctx, SCREEN_DEFATTR, SCREEN_DEFCOLR);
for (i = 0; i < screen_size_y(ctx->s); i++) {
screen_draw_move_cursor(ctx, 0, i);
screen_draw_clear_line_to(ctx, screen_size_x(ctx->s));
@@ -568,11 +569,12 @@ screen_draw_line(struct screen_draw_ctx *ctx, u_int py)
cx = ctx->s->grid_size[cy];
if (ctx->sel.flag ||
- screen_size_x(ctx->s) < 3 || cx >= screen_size_x(ctx->s) - 3)
+ screen_size_x(ctx->s) < 5 || cx >= screen_size_x(ctx->s) - 5)
screen_draw_cells(ctx, 0, py, screen_size_x(ctx->s));
else {
screen_draw_cells(ctx, 0, py, cx);
screen_draw_move_cursor(ctx, cx, py);
+ screen_draw_set_attributes(ctx, SCREEN_DEFATTR, SCREEN_DEFCOLR);
ctx->write(ctx->data, TTY_CLEARENDOFLINE);
}
}
diff --git a/tty.c b/tty.c
index 582bf299..71a8c616 100644
--- a/tty.c
+++ b/tty.c
@@ -1,4 +1,4 @@
-/* $Id: tty.c,v 1.4 2007-11-27 20:01:30 nicm Exp $ */
+/* $Id: tty.c,v 1.5 2007-11-27 21:07:38 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -51,7 +51,7 @@ int
tty_open(struct tty *tty, char **cause)
{
struct termios tio;
- int error;
+ int error, what;
tty->fd = open(tty->path, O_RDWR|O_NONBLOCK);
if (tty->fd == -1) {
@@ -103,6 +103,10 @@ tty_open(struct tty *tty, char **cause)
if (tcsetattr(tty->fd, TCSANOW, &tio) != 0)
fatal("tcsetattr failed");
+ what = 0;
+ if (ioctl(tty->fd, TIOCFLUSH, &what) != 0)
+ fatal("ioctl(TIOCFLUSH)");
+
if (enter_ca_mode != NULL)
tty_puts(tty, enter_ca_mode);
if (keypad_xmit != NULL)