Tweak previous slightly so that current session is chosen if it is in

the group rather than first.
pull/1147/merge
nicm 2017-11-02 18:43:51 +00:00
parent c1f62f1fde
commit 95850e1aca
2 changed files with 12 additions and 5 deletions

View File

@ -795,8 +795,11 @@ format_find(struct format_tree *ft, const char *key, int modifiers)
found = s; found = s;
goto found; goto found;
} }
if (fe->value == NULL && fe->cb != NULL) if (fe->value == NULL && fe->cb != NULL) {
fe->cb(ft, fe); fe->cb(ft, fe);
if (fe->value == NULL)
fe->value = xstrdup("");
}
found = fe->value; found = fe->value;
goto found; goto found;
} }

View File

@ -399,9 +399,11 @@ window_tree_build(void *modedata, u_int sort_type, uint64_t *tag,
{ {
struct window_tree_modedata *data = modedata; struct window_tree_modedata *data = modedata;
struct session *s, **l; struct session *s, **l;
struct session_group *sg; struct session_group *sg, *current;
u_int n, i; u_int n, i;
current = session_group_contains(data->fs.s);
for (i = 0; i < data->item_size; i++) for (i = 0; i < data->item_size; i++)
window_tree_free_item(data->item_list[i]); window_tree_free_item(data->item_list[i]);
free(data->item_list); free(data->item_list);
@ -412,9 +414,11 @@ window_tree_build(void *modedata, u_int sort_type, uint64_t *tag,
n = 0; n = 0;
RB_FOREACH(s, sessions, &sessions) { RB_FOREACH(s, sessions, &sessions) {
if (data->squash_groups && if (data->squash_groups &&
(sg = session_group_contains(s)) != NULL && (sg = session_group_contains(s)) != NULL) {
s != TAILQ_FIRST(&sg->sessions)) if ((sg == current && s != data->fs.s) ||
continue; (sg != current && s != TAILQ_FIRST(&sg->sessions)))
continue;
}
l = xreallocarray(l, n + 1, sizeof *l); l = xreallocarray(l, n + 1, sizeof *l);
l[n++] = s; l[n++] = s;
} }