I've attached a new patch.  This patch:

*  Adds Thomas's fix for pane selection via the mouse
*  Gets rid of nflags in cmd_display_panes_exec
*  Fixes the usage of memcpy in window.c
*  Leaves tty_reset unchanged
*  Has the tty_cmd_* functions call tty_attributes instead of tty_reset
*  Includes updates to the man page
diff --git a/cmd-display-panes.c b/cmd-display-panes.c
index 9ce8971..2cc29e4 100644
--- a/cmd-display-panes.c
+++ b/cmd-display-panes.c
@@ -18,18 +18,21 @@
 
 #include <sys/types.h>
 
+#include <stdlib.h>
+#include <string.h>
+
 #include "tmux.h"
 
 /*
- * Display panes on a client.
+ * Display panes on a client, or get/set pane default fg/bg colours.
  */
 
 enum cmd_retval	 cmd_display_panes_exec(struct cmd *, struct cmd_q *);
 
 const struct cmd_entry cmd_display_panes_entry = {
 	"display-panes", "displayp",
-	"t:", 0, 0,
-	CMD_TARGET_CLIENT_USAGE,
+	"gt:P:", 0, 0,
+	"[-g] [-P style] " CMD_TARGET_CLIENT_USAGE,
 	0,
 	cmd_display_panes_exec
 };
@@ -37,13 +40,48 @@ const struct cmd_entry cmd_display_panes_entry = {
 enum cmd_retval
 cmd_display_panes_exec(struct cmd *self, struct cmd_q *cmdq)
 {
-	struct args	*args = self->args;
-	struct client	*c;
+	struct args		*args = self->args;
+	struct client		*c;
+	struct session		*s;
+	struct winlink		*wl;
+	struct window_pane	*wp;
+	const char		*str;
+
+	if (!args_has(args, 'g') && !args_has(args, 'P')) {
+
+		if ((c = cmd_find_client(cmdq, args_get(args, 't'), 0)) == NULL)
+			return (CMD_RETURN_ERROR);
+
+		server_set_identify(c);
+
+		return (CMD_RETURN_NORMAL);
+	}
+
 
-	if ((c = cmd_find_client(cmdq, args_get(args, 't'), 0)) == NULL)
+	if ((wl = cmd_find_pane(cmdq, args_get(args, 't'), &s, &wp)) == NULL)
 		return (CMD_RETURN_ERROR);
 
-	server_set_identify(c);
+	if (args_has(args, 'g')) {
+
+		if (args_has(args, 'P')) {
+			cmdq_error(cmdq, "don't use -P with -g");
+			return (CMD_RETURN_ERROR);
+		}
+
+		cmdq_print(cmdq, "%s", style_tostring(&wp->colgc));
+
+		return (CMD_RETURN_NORMAL);
+	}
+
+	if (args_has(args, 'P')) {
+		str = args_get(args, 'P');
+		if (style_parse(&grid_default_cell, &wp->colgc, str) == -1) {
+			cmdq_error(cmdq, "bad style: %s", str);
+			return (CMD_RETURN_ERROR);
+		}
+
+		wp->flags |= PANE_REDRAW;
+	}
 
 	return (CMD_RETURN_NORMAL);
 }
diff --git a/options-table.c b/options-table.c
index 2bcf29b..d7057bf 100644
--- a/options-table.c
+++ b/options-table.c
@@ -667,6 +667,16 @@ const struct options_table_entry window_options_table[] = {
 	  .default_num = 0 /* overridden in main() */
 	},
 
+	{ .name = "window-active-style",
+	  .type = OPTIONS_TABLE_STYLE,
+	  .default_str = "default"
+	},
+
+	{ .name = "window-style",
+	  .type = OPTIONS_TABLE_STYLE,
+	  .default_str = "default"
+	},
+
 	{ .name = "window-status-activity-attr",
 	  .type = OPTIONS_TABLE_ATTRIBUTES,
 	  .default_num = GRID_ATTR_REVERSE,
diff --git a/screen-redraw.c b/screen-redraw.c
index c2b2ece..c718609 100644
--- a/screen-redraw.c
+++ b/screen-redraw.c
@@ -266,7 +266,7 @@ screen_redraw_pane(struct client *c, struct window_pane *wp)
 		yoff++;
 
 	for (i = 0; i < wp->sy; i++)
-		tty_draw_line(&c->tty, wp->screen, i, wp->xoff, yoff);
+		tty_draw_line(&c->tty, wp->screen, i, wp->xoff, yoff, wp);
 	tty_reset(&c->tty);
 }
 
@@ -323,9 +323,9 @@ screen_redraw_draw_borders(struct client *c, int status, u_int top)
 			    small && i > msgx && j == msgy)
 				continue;
 			if (screen_redraw_check_active(i, j, type, w, wp))
-				tty_attributes(tty, &active_gc);
+				tty_attributes(tty, &active_gc, wp);
 			else
-				tty_attributes(tty, &other_gc);
+				tty_attributes(tty, &other_gc, wp);
 			tty_cursor(tty, i, top + j);
 			tty_putc(tty, CELL_BORDERS[type]);
 		}
@@ -333,7 +333,7 @@ screen_redraw_draw_borders(struct client *c, int status, u_int top)
 
 	if (small) {
 		memcpy(&msg_gc, &grid_default_cell, sizeof msg_gc);
-		tty_attributes(tty, &msg_gc);
+		tty_attributes(tty, &msg_gc, wp);
 		tty_cursor(tty, msgx, msgy);
 		tty_puts(tty, msg);
 	}
@@ -354,7 +354,7 @@ screen_redraw_draw_panes(struct client *c, u_int top)
 			continue;
 		s = wp->screen;
 		for (i = 0; i < wp->sy; i++)
-			tty_draw_line(tty, s, i, wp->xoff, top + wp->yoff);
+			tty_draw_line(tty, s, i, wp->xoff, top + wp->yoff, wp);
 		if (c->flags & CLIENT_IDENTIFY)
 			screen_redraw_draw_number(c, wp);
 	}
@@ -367,9 +367,9 @@ screen_redraw_draw_status(struct client *c, u_int top)
 	struct tty	*tty = &c->tty;
 
 	if (top)
-		tty_draw_line(tty, &c->status, 0, 0, 0);
+		tty_draw_line(tty, &c->status, 0, 0, 0, NULL);
 	else
-		tty_draw_line(tty, &c->status, 0, 0, tty->sy - 1);
+		tty_draw_line(tty, &c->status, 0, 0, tty->sy - 1, NULL);
 }
 
 /* Draw number on a pane. */
@@ -411,7 +411,7 @@ screen_redraw_draw_number(struct client *c, struct window_pane *wp)
 		colour_set_bg(&gc, active_colour);
 	else
 		colour_set_bg(&gc, colour);
-	tty_attributes(tty, &gc);
+	tty_attributes(tty, &gc, wp);
 	for (ptr = buf; *ptr != '\0'; ptr++) {
 		if (*ptr < '0' || *ptr > '9')
 			continue;
@@ -438,7 +438,7 @@ draw_text:
 		colour_set_fg(&gc, active_colour);
 	else
 		colour_set_fg(&gc, colour);
-	tty_attributes(tty, &gc);
+	tty_attributes(tty, &gc, wp);
 	tty_puts(tty, buf);
 
 	tty_cursor(tty, 0, 0);
diff --git a/server-client.c b/server-client.c
index 3ca9907..f234f50 100644
--- a/server-client.c
+++ b/server-client.c
@@ -328,8 +328,7 @@ server_client_check_mouse(struct client *c, struct window_pane *wp)
 	if (options_get_number(oo, "mouse-select-pane") &&
 	    (m->event == MOUSE_EVENT_DOWN || m->event == MOUSE_EVENT_WHEEL)) {
 		window_set_active_at(wp->window, m->x, m->y);
-		server_status_window(wp->window);
-		server_redraw_window_borders(wp->window);
+		server_redraw_window(wp->window);
 		wp = wp->window->active; /* may have changed */
 	}
 
diff --git a/tmux.1 b/tmux.1
index f615dd0..656a2a7 100644
--- a/tmux.1
+++ b/tmux.1
@@ -1305,9 +1305,14 @@ flag, see the
 .Sx FORMATS
 section.
 This command works only if at least one client is attached.
-.It Ic display-panes Op Fl t Ar target-client
+.It Xo Ic display-panes
+.Op Fl g
+.Op Fl P Ar style
+.Op Fl t Ar target-client
+.Xc
 .D1 (alias: Ic displayp )
-Display a visible indicator of each pane shown by
+If no flags have been specified, display a visible indicator of
+each pane shown by
 .Ar target-client .
 See the
 .Ic display-panes-time ,
@@ -1320,6 +1325,15 @@ While the indicator is on screen, a pane may be selected with the
 to
 .Ql 9
 keys.
+.Pp
+With
+.Fl P,
+a style argument can be passed to set a pane's foreground and
+background colour.  The style will override any style that
+has been set with the window-style or window-active-style options.
+The
+.Fl g
+flag will show what colour style has been set for the pane.
 .It Xo Ic find-window
 .Op Fl CNT
 .Op Fl F Ar format
@@ -2928,6 +2942,15 @@ Instructs
 .Nm
 to expect UTF-8 sequences to appear in this window.
 .Pp
+.It Ic window-active-style Ar style
+Set the default foreground and background colours for the active pane in the
+window via a style argument.
+For how to specify
+.Ar style ,
+see the
+.Ic message-command-style
+option.
+.Pp
 .It Ic window-status-activity-style Ar style
 Set status line style for windows with an activity alert.
 For how to specify
@@ -2985,6 +3008,14 @@ see the
 .Ic message-command-style
 option.
 .Pp
+.It Ic window-style Ar style
+Set the default window foreground and background colours via a style argument.
+For how to specify
+.Ar style ,
+see the
+.Ic message-command-style
+option.
+.Pp
 .It Xo Ic xterm-keys
 .Op Ic on | off
 .Xc
diff --git a/tmux.h b/tmux.h
index e296ac7..4751cbd 100644
--- a/tmux.h
+++ b/tmux.h
@@ -900,6 +900,9 @@ struct window_pane {
 
 	struct input_ctx ictx;
 
+	/* Default fg/bg grid cell colours */
+	struct grid_cell colgc;
+
 	int		 pipe_fd;
 	struct bufferevent *pipe_event;
 	size_t		 pipe_off;
@@ -1604,7 +1607,8 @@ void	environ_push(struct environ *);
 /* tty.c */
 void	tty_init_termios(int, struct termios *, struct bufferevent *);
 void	tty_raw(struct tty *, const char *);
-void	tty_attributes(struct tty *, const struct grid_cell *);
+void	tty_attributes(struct tty *, const struct grid_cell *,
+	    const struct window_pane *);
 void	tty_reset(struct tty *);
 void	tty_region_pane(struct tty *, const struct tty_ctx *, u_int, u_int);
 void	tty_region(struct tty *, u_int, u_int);
@@ -1628,7 +1632,8 @@ void	tty_stop_tty(struct tty *);
 void	tty_set_title(struct tty *, const char *);
 void	tty_update_mode(struct tty *, int, struct screen *);
 void	tty_force_cursor_colour(struct tty *, const char *);
-void	tty_draw_line(struct tty *, struct screen *, u_int, u_int, u_int);
+void	tty_draw_line(struct tty *, struct screen *, u_int, u_int, u_int,
+	    const struct window_pane *);
 int	tty_open(struct tty *, char **);
 void	tty_close(struct tty *);
 void	tty_free(struct tty *);
diff --git a/tty.c b/tty.c
index 1bb8981..257ebf8 100644
--- a/tty.c
+++ b/tty.c
@@ -47,7 +47,9 @@ void	tty_redraw_region(struct tty *, const struct tty_ctx *);
 void	tty_emulate_repeat(
 	    struct tty *, enum tty_code_code, enum tty_code_code, u_int);
 void	tty_repeat_space(struct tty *, u_int);
-void	tty_cell(struct tty *, const struct grid_cell *);
+void	tty_cell(struct tty *, const struct grid_cell *,
+	    const struct window_pane *);
+void	tty_default_colours(struct grid_cell *, const struct window_pane *);
 
 #define tty_use_acs(tty) \
 	(tty_term_has((tty)->term, TTYC_ACSC) && !((tty)->flags & TTY_UTF8))
@@ -604,15 +606,16 @@ tty_redraw_region(struct tty *tty, const struct tty_ctx *ctx)
 
 	if (ctx->ocy < ctx->orupper || ctx->ocy > ctx->orlower) {
 		for (i = ctx->ocy; i < screen_size_y(s); i++)
-			tty_draw_line(tty, s, i, ctx->xoff, ctx->yoff);
+			tty_draw_line(tty, s, i, ctx->xoff, ctx->yoff, wp);
 	} else {
 		for (i = ctx->orupper; i <= ctx->orlower; i++)
-			tty_draw_line(tty, s, i, ctx->xoff, ctx->yoff);
+			tty_draw_line(tty, s, i, ctx->xoff, ctx->yoff, wp);
 	}
 }
 
 void
-tty_draw_line(struct tty *tty, struct screen *s, u_int py, u_int ox, u_int oy)
+tty_draw_line(struct tty *tty, struct screen *s, u_int py, u_int ox, u_int oy,
+    const struct window_pane *wp)
 {
 	const struct grid_cell	*gc;
 	struct grid_line	*gl;
@@ -650,16 +653,16 @@ tty_draw_line(struct tty *tty, struct screen *s, u_int py, u_int ox, u_int oy)
 			    ~(GRID_FLAG_FG256|GRID_FLAG_BG256);
 			tmpgc.flags |= s->sel.cell.flags &
 			    (GRID_FLAG_FG256|GRID_FLAG_BG256);
-			tty_cell(tty, &tmpgc);
+			tty_cell(tty, &tmpgc, wp);
 		} else
-			tty_cell(tty, gc);
+			tty_cell(tty, gc, wp);
 	}
 
 	if (sx >= tty->sx) {
 		tty_update_mode(tty, tty->mode, s);
 		return;
 	}
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, wp);
 
 	tty_cursor(tty, ox + sx, oy + py);
 	if (sx != screen_size_x(s) && ox + screen_size_x(s) >= tty->sx &&
@@ -713,11 +716,12 @@ tty_cmd_insertcharacter(struct tty *tty, const struct tty_ctx *ctx)
 	struct window_pane	*wp = ctx->wp;
 
 	if (!tty_pane_full_width(tty, ctx)) {
-		tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff);
+		tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff,
+		    wp);
 		return;
 	}
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, wp);
 
 	tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy);
 
@@ -725,7 +729,8 @@ tty_cmd_insertcharacter(struct tty *tty, const struct tty_ctx *ctx)
 	    tty_term_has(tty->term, TTYC_ICH1))
 		tty_emulate_repeat(tty, TTYC_ICH, TTYC_ICH1, ctx->num);
 	else
-		tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff);
+		tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff,
+		    wp);
 }
 
 void
@@ -736,11 +741,12 @@ tty_cmd_deletecharacter(struct tty *tty, const struct tty_ctx *ctx)
 	if (!tty_pane_full_width(tty, ctx) ||
 	    (!tty_term_has(tty->term, TTYC_DCH) &&
 	    !tty_term_has(tty->term, TTYC_DCH1))) {
-		tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff);
+		tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff,
+		    wp);
 		return;
 	}
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, wp);
 
 	tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy);
 
@@ -754,7 +760,7 @@ tty_cmd_clearcharacter(struct tty *tty, const struct tty_ctx *ctx)
 {
 	u_int	i;
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, ctx->wp);
 
 	tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy);
 
@@ -776,7 +782,7 @@ tty_cmd_insertline(struct tty *tty, const struct tty_ctx *ctx)
 		return;
 	}
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, ctx->wp);
 
 	tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower);
 	tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy);
@@ -794,7 +800,7 @@ tty_cmd_deleteline(struct tty *tty, const struct tty_ctx *ctx)
 		return;
 	}
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, ctx->wp);
 
 	tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower);
 	tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy);
@@ -808,7 +814,7 @@ tty_cmd_clearline(struct tty *tty, const struct tty_ctx *ctx)
 	struct window_pane	*wp = ctx->wp;
 	struct screen		*s = wp->screen;
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, wp);
 
 	tty_cursor_pane(tty, ctx, 0, ctx->ocy);
 
@@ -824,7 +830,7 @@ tty_cmd_clearendofline(struct tty *tty, const struct tty_ctx *ctx)
 	struct window_pane	*wp = ctx->wp;
 	struct screen		*s = wp->screen;
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, wp);
 
 	tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy);
 
@@ -837,7 +843,7 @@ tty_cmd_clearendofline(struct tty *tty, const struct tty_ctx *ctx)
 void
 tty_cmd_clearstartofline(struct tty *tty, const struct tty_ctx *ctx)
 {
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, ctx->wp);
 
 	if (ctx->xoff == 0 && tty_term_has(tty->term, TTYC_EL1)) {
 		tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy);
@@ -861,7 +867,7 @@ tty_cmd_reverseindex(struct tty *tty, const struct tty_ctx *ctx)
 		return;
 	}
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, ctx->wp);
 
 	tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower);
 	tty_cursor_pane(tty, ctx, ctx->ocx, ctx->orupper);
@@ -894,7 +900,7 @@ tty_cmd_linefeed(struct tty *tty, const struct tty_ctx *ctx)
 	if (ctx->num && !(tty->term->flags & TERM_EARLYWRAP))
 		return;
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, wp);
 
 	tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower);
 	tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy);
@@ -909,7 +915,7 @@ tty_cmd_clearendofscreen(struct tty *tty, const struct tty_ctx *ctx)
 	struct screen		*s = wp->screen;
 	u_int		 	 i, j;
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, wp);
 
 	tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1);
 	tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy);
@@ -942,7 +948,7 @@ tty_cmd_clearstartofscreen(struct tty *tty, const struct tty_ctx *ctx)
 	struct screen		*s = wp->screen;
 	u_int		 	 i, j;
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, wp);
 
 	tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1);
 	tty_cursor_pane(tty, ctx, 0, 0);
@@ -969,7 +975,7 @@ tty_cmd_clearscreen(struct tty *tty, const struct tty_ctx *ctx)
 	struct screen		*s = wp->screen;
 	u_int		 	 i, j;
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, wp);
 
 	tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1);
 	tty_cursor_pane(tty, ctx, 0, 0);
@@ -997,7 +1003,7 @@ tty_cmd_alignmenttest(struct tty *tty, const struct tty_ctx *ctx)
 	struct screen		*s = wp->screen;
 	u_int			 i, j;
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, wp);
 
 	tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1);
 
@@ -1038,12 +1044,12 @@ tty_cmd_cell(struct tty *tty, const struct tty_ctx *ctx)
 			 */
 			cx = screen_size_x(s) - grid_cell_width(&ctx->last_cell);
 			tty_cursor_pane(tty, ctx, cx, ctx->ocy);
-			tty_cell(tty, &ctx->last_cell);
+			tty_cell(tty, &ctx->last_cell, wp);
 		}
 	} else
 		tty_cursor_pane(tty, ctx, ctx->ocx, ctx->ocy);
 
-	tty_cell(tty, ctx->cell);
+	tty_cell(tty, ctx->cell, wp);
 }
 
 void
@@ -1055,7 +1061,7 @@ tty_cmd_utf8character(struct tty *tty, const struct tty_ctx *ctx)
 	 * Cannot rely on not being a partial character, so just redraw the
 	 * whole line.
 	 */
-	tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff);
+	tty_draw_line(tty, wp->screen, ctx->ocy, ctx->xoff, ctx->yoff, wp);
 }
 
 void
@@ -1088,12 +1094,13 @@ tty_cmd_rawstring(struct tty *tty, const struct tty_ctx *ctx)
 	tty->cx = tty->cy = UINT_MAX;
 	tty->rupper = tty->rlower = UINT_MAX;
 
-	tty_reset(tty);
+	tty_attributes(tty, &grid_default_cell, ctx->wp);
 	tty_cursor(tty, 0, 0);
 }
 
 void
-tty_cell(struct tty *tty, const struct grid_cell *gc)
+tty_cell(struct tty *tty, const struct grid_cell *gc,
+    const struct window_pane *wp)
 {
 	struct utf8_data	ud;
 	u_int			i;
@@ -1108,7 +1115,7 @@ tty_cell(struct tty *tty, const struct grid_cell *gc)
 		return;
 
 	/* Set the attributes. */
-	tty_attributes(tty, gc);
+	tty_attributes(tty, gc, wp);
 
 	/* Get the cell and if ASCII write with putc to do ACS translation. */
 	grid_cell_get(gc, &ud);
@@ -1312,12 +1319,14 @@ out:
 }
 
 void
-tty_attributes(struct tty *tty, const struct grid_cell *gc)
+tty_attributes(struct tty *tty, const struct grid_cell *gc,
+    const struct window_pane *wp)
 {
 	struct grid_cell	*tc = &tty->cell, gc2;
 	u_char			 changed;
 
 	memcpy(&gc2, gc, sizeof gc2);
+	tty_default_colours(&gc2, wp);
 
 	/*
 	 * If no setab, try to use the reverse attribute as a best-effort for a
@@ -1614,3 +1623,44 @@ tty_bell(struct tty *tty)
 {
 	tty_putcode(tty, TTYC_BEL);
 }
+
+void
+tty_default_colours(struct grid_cell *gc, const struct window_pane *wp)
+{
+	const struct grid_cell        *agc, *pgc, *wgc;
+
+	if (wp == NULL)
+		return;
+
+	pgc = &wp->colgc;
+	agc = options_get_style(&wp->window->options, "window-active-style");
+	wgc = options_get_style(&wp->window->options, "window-style");
+
+	if (gc->fg == 8 && !(gc->flags & GRID_FLAG_FG256)) {
+		if (pgc->fg != 8 || (pgc->flags & GRID_FLAG_FG256)) {
+			gc->fg = pgc->fg;
+			gc->flags |= (pgc->flags & GRID_FLAG_FG256);
+		} else if (wp == wp->window->active &&
+		    (agc->fg != 8 || (agc->flags & GRID_FLAG_FG256))) {
+			gc->fg = agc->fg;
+			gc->flags |= (agc->flags & GRID_FLAG_FG256);
+		} else {
+			gc->fg = wgc->fg;
+			gc->flags |= (wgc->flags & GRID_FLAG_FG256);
+		}
+	}
+
+	if (gc->bg == 8 && !(gc->flags & GRID_FLAG_BG256)) {
+		if (pgc->bg != 8 || (pgc->flags & GRID_FLAG_BG256)) {
+			gc->bg = pgc->bg;
+			gc->flags |= (pgc->flags & GRID_FLAG_BG256);
+		} else if (wp == wp->window->active &&
+		    (agc->bg != 8 || (agc->flags & GRID_FLAG_BG256))) {
+			gc->bg = agc->bg;
+			gc->flags |= (agc->flags & GRID_FLAG_BG256);
+		} else {
+			gc->bg = wgc->bg;
+			gc->flags |= (wgc->flags & GRID_FLAG_BG256);
+		}
+	}
+}
diff --git a/window.c b/window.c
index fff2cfc..7a06470 100644
--- a/window.c
+++ b/window.c
@@ -704,6 +704,8 @@ window_pane_create(struct window *w, u_int sx, u_int sy, u_int hlimit)
 
 	wp->saved_grid = NULL;
 
+	memcpy(&wp->colgc, &grid_default_cell, sizeof wp->colgc);
+
 	screen_init(&wp->base, sx, sy, hlimit);
 	wp->screen = &wp->base;
 
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to