version 1.8, 2017/08/09 11:43:45 |
version 1.9, 2017/10/25 11:26:11 |
|
|
} |
} |
|
|
static void |
static void |
window_client_do_detach(void* modedata, void *itemdata, key_code key) |
window_client_do_detach(void* modedata, void *itemdata, |
|
__unused struct client *c, key_code key) |
{ |
{ |
struct window_client_modedata *data = modedata; |
struct window_client_modedata *data = modedata; |
struct window_client_itemdata *item = itemdata; |
struct window_client_itemdata *item = itemdata; |
|
|
__unused struct session *s, key_code key, struct mouse_event *m) |
__unused struct session *s, key_code key, struct mouse_event *m) |
{ |
{ |
struct window_client_modedata *data = wp->modedata; |
struct window_client_modedata *data = wp->modedata; |
|
struct mode_tree_data *mtd = data->data; |
struct window_client_itemdata *item; |
struct window_client_itemdata *item; |
char *command, *name; |
|
int finished; |
int finished; |
|
|
/* |
finished = mode_tree_key(mtd, c, &key, m); |
* t = toggle tag |
|
* T = tag none |
|
* C-t = tag all |
|
* q = exit |
|
* O = change sort order |
|
* |
|
* d = detach client |
|
* D = detach tagged clients |
|
* x = detach and kill client |
|
* X = detach and kill tagged clients |
|
* z = suspend client |
|
* Z = suspend tagged clients |
|
* Enter = detach client |
|
*/ |
|
|
|
finished = mode_tree_key(data->data, c, &key, m); |
|
switch (key) { |
switch (key) { |
case 'd': |
case 'd': |
case 'x': |
case 'x': |
case 'z': |
case 'z': |
item = mode_tree_get_current(data->data); |
item = mode_tree_get_current(mtd); |
window_client_do_detach(data, item, key); |
window_client_do_detach(data, item, c, key); |
mode_tree_build(data->data); |
mode_tree_build(mtd); |
break; |
break; |
case 'D': |
case 'D': |
case 'X': |
case 'X': |
case 'Z': |
case 'Z': |
mode_tree_each_tagged(data->data, window_client_do_detach, key, |
mode_tree_each_tagged(mtd, window_client_do_detach, c, key, 0); |
0); |
mode_tree_build(mtd); |
mode_tree_build(data->data); |
|
break; |
break; |
case '\r': |
case '\r': |
item = mode_tree_get_current(data->data); |
item = mode_tree_get_current(mtd); |
command = xstrdup(data->command); |
mode_tree_run_command(c, NULL, data->command, item->c->ttyname); |
name = xstrdup(item->c->ttyname); |
finished = 1; |
window_pane_reset_mode(wp); |
break; |
mode_tree_run_command(c, NULL, command, name); |
|
free(name); |
|
free(command); |
|
return; |
|
} |
} |
if (finished || server_client_how_many() == 0) |
if (finished || server_client_how_many() == 0) |
window_pane_reset_mode(wp); |
window_pane_reset_mode(wp); |
else { |
else { |
mode_tree_draw(data->data); |
mode_tree_draw(mtd); |
wp->flags |= PANE_REDRAW; |
wp->flags |= PANE_REDRAW; |
} |
} |
} |
} |