diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2008-06-07 07:13:08 +0000 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2008-06-07 07:13:08 +0000 |
commit | 958069575dc663595d37a37a8273db73a4e99aa1 (patch) | |
tree | bdc908958cf08dd968c6a2effdc02672fe813713 | |
parent | 77224aaf8bd1cf816054d968605a43145617d804 (diff) |
Clear clients with flag too.
-rw-r--r-- | resize.c | 12 | ||||
-rw-r--r-- | server-fn.c | 41 | ||||
-rw-r--r-- | server.c | 13 | ||||
-rw-r--r-- | tmux.h | 6 |
4 files changed, 23 insertions, 49 deletions
@@ -1,4 +1,4 @@ -/* $Id: resize.c,v 1.12 2008-06-06 20:02:27 nicm Exp $ */ +/* $Id: resize.c,v 1.13 2008-06-07 07:13:08 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -121,8 +121,14 @@ recalculate_sizes(void) log_debug("window size %u,%u (was %u,%u)", ssx, ssy, screen_size_x(&w->base), screen_size_y(&w->base)); - server_clear_window(w); window_resize(w, ssx, ssy); - server_redraw_window(w); + + for (i = 0; i < ARRAY_LENGTH(&clients); i++) { + c = ARRAY_ITEM(&clients, i); + if (c == NULL || c->session == NULL) + continue; + if (c->session->curw->window == w) + c->flags |= (CLIENT_CLEAR|CLIENT_REDRAW); + } } } diff --git a/server-fn.c b/server-fn.c index 46e9a7c9..4df9aee5 100644 --- a/server-fn.c +++ b/server-fn.c @@ -1,4 +1,4 @@ -/* $Id: server-fn.c,v 1.39 2008-06-07 06:47:38 nicm Exp $ */ +/* $Id: server-fn.c,v 1.40 2008-06-07 07:13:08 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -72,19 +72,6 @@ server_write_window( } void -server_clear_client(struct client *c) -{ - struct screen_redraw_ctx ctx; - - screen_redraw_start_client(&ctx, c); - screen_redraw_set_attributes(&ctx, SCREEN_DEFATTR, SCREEN_DEFCOLR); - screen_redraw_clear_screen(&ctx); - screen_redraw_stop(&ctx); - - status_write_client(c); -} - -void server_redraw_client(struct client *c) { c->flags |= CLIENT_REDRAW; @@ -97,19 +84,6 @@ server_status_client(struct client *c) } void -server_clear_session(struct session *s) -{ - struct screen_redraw_ctx ctx; - - screen_redraw_start_session(&ctx, s); - screen_redraw_set_attributes(&ctx, SCREEN_DEFATTR, SCREEN_DEFCOLR); - screen_redraw_clear_screen(&ctx); - screen_redraw_stop(&ctx); - - status_write_session(s); -} - -void server_redraw_session(struct session *s) { struct client *c; @@ -140,19 +114,6 @@ server_status_session(struct session *s) } void -server_clear_window(struct window *w) -{ - struct screen_redraw_ctx ctx; - - screen_redraw_start_window(&ctx, w); - screen_redraw_set_attributes(&ctx, SCREEN_DEFATTR, SCREEN_DEFCOLR); - screen_redraw_clear_screen(&ctx); - screen_redraw_stop(&ctx); - - status_write_window(w); -} - -void server_redraw_window(struct window *w) { struct client *c; @@ -1,4 +1,4 @@ -/* $Id: server.c,v 1.57 2008-06-07 06:47:38 nicm Exp $ */ +/* $Id: server.c,v 1.58 2008-06-07 07:13:08 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -275,9 +275,18 @@ void server_check_redraw(struct client *c) { struct screen_redraw_ctx ctx; + struct screen screen; if (c == NULL || c->session == NULL) return; + + if (c->flags & CLIENT_CLEAR) { + screen_create(&screen, c->sx, c->sy - 1, 0); + screen_redraw_start(&ctx, &screen, tty_write_client, c); + screen_redraw_clear_screen(&ctx); + screen_redraw_stop(&ctx); + screen_destroy(&screen); + } if (c->flags & CLIENT_REDRAW) { screen_redraw_start_client(&ctx, c); @@ -287,7 +296,7 @@ server_check_redraw(struct client *c) } else if (c->flags & CLIENT_STATUS) status_write_client(c); - c->flags &= ~(CLIENT_REDRAW|CLIENT_STATUS); + c->flags &= ~(CLIENT_CLEAR|CLIENT_REDRAW|CLIENT_STATUS); } /* Check for status line redraw on client. */ @@ -1,4 +1,4 @@ -/* $Id: tmux.h,v 1.137 2008-06-07 06:47:38 nicm Exp $ */ +/* $Id: tmux.h,v 1.138 2008-06-07 07:13:08 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -651,6 +651,7 @@ struct client { #define CLIENT_MOUSE 0x4 #define CLIENT_REDRAW 0x8 #define CLIENT_STATUS 0x10 +#define CLIENT_CLEAR 0x20 int flags; struct session *session; @@ -908,13 +909,10 @@ void server_write_session( struct session *, enum hdrtype, const void *, size_t); void server_write_window( struct window *, enum hdrtype, const void *, size_t); -void server_clear_client(struct client *); void server_redraw_client(struct client *); void server_status_client(struct client *); -void server_clear_session(struct session *); void server_redraw_session(struct session *); void server_status_session(struct session *); -void server_clear_window(struct window *); void server_redraw_window(struct window *); void server_status_window(struct window *); void printflike2 server_write_message(struct client *, const char *, ...); |