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

Reply via email to