At the moment, the logic for setting the fg/bg/attr for winlinks happens only in status_print(). Split out the logic to winlink_set_alert_colours() so that it can be used elsewhere. --- trunk/status.c | 33 ++------------------------------- trunk/tmux.h | 3 +++ trunk/window.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 31 deletions(-)
diff --git a/trunk/status.c b/trunk/status.c index e841d80..65852d0 100644 --- a/trunk/status.c +++ b/trunk/status.c @@ -706,37 +706,8 @@ status_print( fmt = options_get_string(oo, "window-status-current-format"); } - if (wl->flags & WINLINK_BELL) { - fg = options_get_number(oo, "window-status-bell-fg"); - if (fg != 8) - colour_set_fg(gc, fg); - bg = options_get_number(oo, "window-status-bell-bg"); - if (bg != 8) - colour_set_bg(gc, bg); - attr = options_get_number(oo, "window-status-bell-attr"); - if (attr != 0) - gc->attr = attr; - } else if (wl->flags & WINLINK_CONTENT) { - fg = options_get_number(oo, "window-status-content-fg"); - if (fg != 8) - colour_set_fg(gc, fg); - bg = options_get_number(oo, "window-status-content-bg"); - if (bg != 8) - colour_set_bg(gc, bg); - attr = options_get_number(oo, "window-status-content-attr"); - if (attr != 0) - gc->attr = attr; - } else if (wl->flags & (WINLINK_ACTIVITY|WINLINK_SILENCE)) { - fg = options_get_number(oo, "window-status-activity-fg"); - if (fg != 8) - colour_set_fg(gc, fg); - bg = options_get_number(oo, "window-status-activity-bg"); - if (bg != 8) - colour_set_bg(gc, bg); - attr = options_get_number(oo, "window-status-activity-attr"); - if (attr != 0) - gc->attr = attr; - } + /* Set the colours for the alerts on this winlink. */ + winlink_set_alert_colours(wl, gc); text = status_replace(c, NULL, wl, NULL, fmt, t, 1); return (text); diff --git a/trunk/tmux.h b/trunk/tmux.h index 49f053f..5a18411 100644 --- a/trunk/tmux.h +++ b/trunk/tmux.h @@ -847,6 +847,7 @@ struct window_choose_data { struct client *client; struct session *session; struct format_tree *ft; + struct winlink *wl; char *ft_template; char *command; u_int idx; @@ -2081,6 +2082,8 @@ struct window_pane *window_pane_find_left(struct window_pane *); struct window_pane *window_pane_find_right(struct window_pane *); void window_set_name(struct window *, const char *); void winlink_clear_flags(struct winlink *); +void winlink_set_alert_colours( + struct winlink *, struct grid_cell *); /* layout.c */ u_int layout_count_cells(struct layout_cell *); diff --git a/trunk/window.c b/trunk/window.c index a832f4f..5e2d65c 100644 --- a/trunk/window.c +++ b/trunk/window.c @@ -1193,3 +1193,48 @@ winlink_clear_flags(struct winlink *wl) } } } + +/* Set the fg/bg colour for a given window's alert status. */ +void +winlink_set_alert_colours(struct winlink *wl, struct grid_cell *gc) +{ + struct options *oo; + int fg, bg, attr; + + if (wl == NULL) + return; + + oo = &wl->window->options; + + if (wl->flags & WINLINK_BELL) { + fg = options_get_number(oo, "window-status-bell-fg"); + if (fg != 8) + colour_set_fg(gc, fg); + bg = options_get_number(oo, "window-status-bell-bg"); + if (bg != 8) + colour_set_bg(gc, bg); + attr = options_get_number(oo, "window-status-bell-attr"); + if (attr != 0) + gc->attr = attr; + } else if (wl->flags & WINLINK_CONTENT) { + fg = options_get_number(oo, "window-status-content-fg"); + if (fg != 8) + colour_set_fg(gc, fg); + bg = options_get_number(oo, "window-status-content-bg"); + if (bg != 8) + colour_set_bg(gc, bg); + attr = options_get_number(oo, "window-status-content-attr"); + if (attr != 0) + gc->attr = attr; + } else if (wl->flags & (WINLINK_ACTIVITY|WINLINK_SILENCE)) { + fg = options_get_number(oo, "window-status-activity-fg"); + if (fg != 8) + colour_set_fg(gc, fg); + bg = options_get_number(oo, "window-status-activity-bg"); + if (bg != 8) + colour_set_bg(gc, bg); + attr = options_get_number(oo, "window-status-activity-attr"); + if (attr != 0) + gc->attr = attr; + } +} -- 1.7.10 ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ tmux-users mailing list tmux-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-users