version 1.10, 2017/07/04 12:26:14 |
version 1.11, 2017/07/04 22:21:31 |
|
|
|
|
struct cmd_find_state fs; |
struct cmd_find_state fs; |
enum window_tree_type type; |
enum window_tree_type type; |
|
|
|
int offset; |
}; |
}; |
|
|
static void |
static void |
|
|
} |
} |
|
|
static void |
static void |
window_tree_draw_session(struct session *s, struct screen_write_ctx *ctx, |
window_tree_draw_session(struct window_tree_modedata *data, struct session *s, |
u_int sx, u_int sy) |
struct screen_write_ctx *ctx, u_int sx, u_int sy) |
{ |
{ |
struct options *oo = s->options; |
struct options *oo = s->options; |
struct winlink *wl; |
struct winlink *wl; |
|
|
end = start + visible; |
end = start + visible; |
} |
} |
|
|
|
if (data->offset < -(int)start) |
|
data->offset = -(int)start; |
|
if (data->offset > (int)(total - end)) |
|
data->offset = (int)(total - end); |
|
start += data->offset; |
|
end += data->offset; |
|
|
left = (start != 0); |
left = (start != 0); |
right = (end != total); |
right = (end != total); |
if (((left && right) && sx <= 6) || ((left || right) && sx <= 3)) |
if (((left && right) && sx <= 6) || ((left || right) && sx <= 3)) |
|
|
} |
} |
|
|
static void |
static void |
window_tree_draw_window(struct session *s, struct window *w, |
window_tree_draw_window(struct window_tree_modedata *data, struct session *s, |
struct screen_write_ctx *ctx, u_int sx, u_int sy) |
struct window *w, struct screen_write_ctx *ctx, u_int sx, u_int sy) |
{ |
{ |
struct options *oo = s->options; |
struct options *oo = s->options; |
struct window_pane *wp; |
struct window_pane *wp; |
|
|
end = start + visible; |
end = start + visible; |
} |
} |
|
|
|
if (data->offset < -(int)start) |
|
data->offset = -(int)start; |
|
if (data->offset > (int)(total - end)) |
|
data->offset = (int)(total - end); |
|
start += data->offset; |
|
end += data->offset; |
|
|
left = (start != 0); |
left = (start != 0); |
right = (end != total); |
right = (end != total); |
if (((left && right) && sx <= 6) || ((left || right) && sx <= 3)) |
if (((left && right) && sx <= 6) || ((left || right) && sx <= 3)) |
|
|
} |
} |
|
|
static struct screen * |
static struct screen * |
window_tree_draw(__unused void *modedata, void *itemdata, u_int sx, u_int sy) |
window_tree_draw(void *modedata, void *itemdata, u_int sx, u_int sy) |
{ |
{ |
struct window_tree_itemdata *item = itemdata; |
struct window_tree_itemdata *item = itemdata; |
struct session *sp; |
struct session *sp; |
|
|
case WINDOW_TREE_NONE: |
case WINDOW_TREE_NONE: |
return (0); |
return (0); |
case WINDOW_TREE_SESSION: |
case WINDOW_TREE_SESSION: |
window_tree_draw_session(sp, &ctx, sx, sy); |
window_tree_draw_session(modedata, sp, &ctx, sx, sy); |
break; |
break; |
case WINDOW_TREE_WINDOW: |
case WINDOW_TREE_WINDOW: |
window_tree_draw_window(sp, wlp->window, &ctx, sx, sy); |
window_tree_draw_window(modedata, sp, wlp->window, &ctx, sx, sy); |
break; |
break; |
case WINDOW_TREE_PANE: |
case WINDOW_TREE_PANE: |
screen_write_preview(&ctx, &wp->base, sx, sy); |
screen_write_preview(&ctx, &wp->base, sx, sy); |
|
|
int finished; |
int finished; |
u_int tagged; |
u_int tagged; |
|
|
|
item = mode_tree_get_current(data->data); |
finished = mode_tree_key(data->data, c, &key, m); |
finished = mode_tree_key(data->data, c, &key, m); |
|
if (item != mode_tree_get_current(data->data)) |
|
data->offset = 0; |
switch (key) { |
switch (key) { |
|
case '<': |
|
data->offset--; |
|
break; |
|
case '>': |
|
data->offset++; |
|
break; |
case ':': |
case ':': |
tagged = mode_tree_count_tagged(data->data); |
tagged = mode_tree_count_tagged(data->data); |
if (tagged != 0) |
if (tagged != 0) |