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
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-users