diff options
Diffstat (limited to 'window-client.c')
-rw-r--r-- | window-client.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/window-client.c b/window-client.c index 483ce8fe..9da8431e 100644 --- a/window-client.c +++ b/window-client.c @@ -54,8 +54,8 @@ enum window_client_sort_type { static const char *window_client_sort_list[] = { "name", "size", - "creation time", - "activity time" + "creation", + "activity" }; struct window_client_itemdata { @@ -141,14 +141,14 @@ window_client_cmp_activity_time(const void *a0, const void *b0) } static void -window_client_build(void *modedata, u_int sort_type, __unused uint64_t *tag) +window_client_build(void *modedata, u_int sort_type, __unused uint64_t *tag, + const char *filter) { struct window_client_modedata *data = modedata; struct window_client_itemdata *item; u_int i; struct client *c; - char *tim; - char *text; + char *tim, *text, *cp; for (i = 0; i < data->item_size; i++) window_client_free_item(data->item_list[i]); @@ -189,6 +189,15 @@ window_client_build(void *modedata, u_int sort_type, __unused uint64_t *tag) item = data->item_list[i]; c = item->c; + if (filter != NULL) { + cp = format_single(NULL, filter, c, NULL, NULL, NULL); + if (!format_true(cp)) { + free(cp); + continue; + } + free(cp); + } + tim = ctime(&c->activity_time.tv_sec); *strchr(tim, '\n') = '\0'; @@ -247,7 +256,7 @@ window_client_init(struct window_pane *wp, __unused struct cmd_find_state *fs, else data->command = xstrdup(args->argv[0]); - data->data = mode_tree_start(wp, window_client_build, + data->data = mode_tree_start(wp, args, window_client_build, window_client_draw, NULL, data, window_client_sort_list, nitems(window_client_sort_list), &s); |