version 1.216, 2018/12/18 13:20:44 |
version 1.217, 2019/03/07 20:24:21 |
|
|
wp->event = NULL; |
wp->event = NULL; |
|
|
wp->mode = NULL; |
wp->mode = NULL; |
wp->modeprefix = 1; |
|
|
|
wp->layout_cell = NULL; |
wp->layout_cell = NULL; |
|
|
|
|
wp->sy = sy; |
wp->sy = sy; |
|
|
screen_resize(&wp->base, sx, sy, wp->saved_grid == NULL); |
screen_resize(&wp->base, sx, sy, wp->saved_grid == NULL); |
if (wp->mode != NULL) |
if (wp->mode != NULL && wp->mode->mode->resize != NULL) |
wp->mode->resize(wp, sx, sy); |
wp->mode->mode->resize(wp->mode, sx, sy); |
|
|
wp->flags |= PANE_RESIZE; |
wp->flags |= PANE_RESIZE; |
} |
} |
|
|
|
|
if (wp->mode != NULL) |
if (wp->mode != NULL) |
return (1); |
return (1); |
wp->mode = mode; |
|
|
|
|
wp->mode = xcalloc(1, sizeof *wp->mode); |
|
wp->mode->wp = wp; |
|
wp->mode->mode = mode; |
|
wp->mode->prefix = 1; |
|
|
wp->modelast = time(NULL); |
wp->modelast = time(NULL); |
evtimer_set(&wp->modetimer, window_pane_mode_timer, wp); |
evtimer_set(&wp->modetimer, window_pane_mode_timer, wp); |
evtimer_add(&wp->modetimer, &tv); |
evtimer_add(&wp->modetimer, &tv); |
|
|
if ((s = wp->mode->init(wp, fs, args)) != NULL) |
if ((s = wp->mode->mode->init(wp->mode, fs, args)) != NULL) |
wp->screen = s; |
wp->screen = s; |
wp->flags |= (PANE_REDRAW|PANE_CHANGED); |
wp->flags |= (PANE_REDRAW|PANE_CHANGED); |
|
|
|
|
|
|
evtimer_del(&wp->modetimer); |
evtimer_del(&wp->modetimer); |
|
|
wp->mode->free(wp); |
wp->mode->mode->free(wp->mode); |
|
free(wp->mode); |
wp->mode = NULL; |
wp->mode = NULL; |
wp->modeprefix = 1; |
|
|
|
wp->screen = &wp->base; |
wp->screen = &wp->base; |
wp->flags |= (PANE_REDRAW|PANE_CHANGED); |
wp->flags |= (PANE_REDRAW|PANE_CHANGED); |
|
|
window_pane_key(struct window_pane *wp, struct client *c, struct session *s, |
window_pane_key(struct window_pane *wp, struct client *c, struct session *s, |
struct winlink *wl, key_code key, struct mouse_event *m) |
struct winlink *wl, key_code key, struct mouse_event *m) |
{ |
{ |
struct window_pane *wp2; |
struct window_mode_entry *wme = wp->mode; |
|
struct window_pane *wp2; |
|
|
if (KEYC_IS_MOUSE(key) && m == NULL) |
if (KEYC_IS_MOUSE(key) && m == NULL) |
return; |
return; |
|
|
if (wp->mode != NULL) { |
if (wme != NULL) { |
wp->modelast = time(NULL); |
wp->modelast = time(NULL); |
if (wp->mode->key != NULL) |
if (wme->mode->key != NULL) |
wp->mode->key(wp, c, s, wl, (key & ~KEYC_XTERM), m); |
wme->mode->key(wme, c, s, wl, (key & ~KEYC_XTERM), m); |
return; |
return; |
} |
} |
|
|