set/reset mode window functions.

This commit is contained in:
Nicholas Marriott
2007-12-06 10:04:43 +00:00
parent 103748d6ad
commit 7dc18f68e3
9 changed files with 67 additions and 58 deletions

View File

@ -1,4 +1,4 @@
/* $Id: window.c,v 1.33 2007-12-06 09:46:23 nicm Exp $ */
/* $Id: window.c,v 1.34 2007-12-06 10:04:43 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -244,9 +244,8 @@ window_destroy(struct window *w)
input_free(w);
window_reset_mode(w);
screen_destroy(&w->base);
if (w->mode != NULL)
w->mode->free(w);
buffer_destroy(w->in);
buffer_destroy(w->out);
@ -276,6 +275,35 @@ window_resize(struct window *w, u_int sx, u_int sy)
return (0);
}
int
window_set_mode(struct window *w, const struct window_mode *mode)
{
struct screen *s;
if (w->mode != NULL || w->mode == mode)
return (1);
w->mode = mode;
if ((s = w->mode->init(w)) != NULL)
w->screen = s;
server_redraw_window(w);
return (0);
}
void
window_reset_mode(struct window *w)
{
if (w->mode == NULL)
return;
w->mode->free(w);
w->mode = NULL;
w->screen = &w->base;
server_redraw_window(w);
}
void
window_parse(struct window *w)
{