version 1.25, 2018/12/18 13:20:44 |
version 1.26, 2019/03/07 20:24:21 |
|
|
|
|
#include "tmux.h" |
#include "tmux.h" |
|
|
static struct screen *window_clock_init(struct window_pane *, |
static struct screen *window_clock_init(struct window_mode_entry *, |
struct cmd_find_state *, struct args *); |
struct cmd_find_state *, struct args *); |
static void window_clock_free(struct window_pane *); |
static void window_clock_free(struct window_mode_entry *); |
static void window_clock_resize(struct window_pane *, u_int, u_int); |
static void window_clock_resize(struct window_mode_entry *, u_int, u_int); |
static void window_clock_key(struct window_pane *, struct client *, |
static void window_clock_key(struct window_mode_entry *, struct client *, |
struct session *, struct winlink *, key_code, |
struct session *, struct winlink *, key_code, |
struct mouse_event *); |
struct mouse_event *); |
|
|
static void window_clock_timer_callback(int, short, void *); |
static void window_clock_timer_callback(int, short, void *); |
static void window_clock_draw_screen(struct window_pane *); |
static void window_clock_draw_screen(struct window_mode_entry *); |
|
|
const struct window_mode window_clock_mode = { |
const struct window_mode window_clock_mode = { |
.name = "clock-mode", |
.name = "clock-mode", |
|
|
static void |
static void |
window_clock_timer_callback(__unused int fd, __unused short events, void *arg) |
window_clock_timer_callback(__unused int fd, __unused short events, void *arg) |
{ |
{ |
struct window_pane *wp = arg; |
struct window_mode_entry *wme = arg; |
struct window_clock_mode_data *data = wp->modedata; |
struct window_pane *wp = wme->wp; |
|
struct window_clock_mode_data *data = wme->data; |
struct tm now, then; |
struct tm now, then; |
time_t t; |
time_t t; |
struct timeval tv = { .tv_sec = 1 }; |
struct timeval tv = { .tv_sec = 1 }; |
|
|
return; |
return; |
data->tim = t; |
data->tim = t; |
|
|
window_clock_draw_screen(wp); |
window_clock_draw_screen(wme); |
server_redraw_window(wp->window); |
server_redraw_window(wp->window); |
} |
} |
|
|
static struct screen * |
static struct screen * |
window_clock_init(struct window_pane *wp, __unused struct cmd_find_state *fs, |
window_clock_init(struct window_mode_entry *wme, |
__unused struct args *args) |
__unused struct cmd_find_state *fs, __unused struct args *args) |
{ |
{ |
|
struct window_pane *wp = wme->wp; |
struct window_clock_mode_data *data; |
struct window_clock_mode_data *data; |
struct screen *s; |
struct screen *s; |
struct timeval tv = { .tv_sec = 1 }; |
struct timeval tv = { .tv_sec = 1 }; |
|
|
wp->modedata = data = xmalloc(sizeof *data); |
wme->data = data = xmalloc(sizeof *data); |
data->tim = time(NULL); |
data->tim = time(NULL); |
|
|
evtimer_set(&data->timer, window_clock_timer_callback, wp); |
evtimer_set(&data->timer, window_clock_timer_callback, wme); |
evtimer_add(&data->timer, &tv); |
evtimer_add(&data->timer, &tv); |
|
|
s = &data->screen; |
s = &data->screen; |
screen_init(s, screen_size_x(&wp->base), screen_size_y(&wp->base), 0); |
screen_init(s, screen_size_x(&wp->base), screen_size_y(&wp->base), 0); |
s->mode &= ~MODE_CURSOR; |
s->mode &= ~MODE_CURSOR; |
|
|
window_clock_draw_screen(wp); |
window_clock_draw_screen(wme); |
|
|
return (s); |
return (s); |
} |
} |
|
|
static void |
static void |
window_clock_free(struct window_pane *wp) |
window_clock_free(struct window_mode_entry *wme) |
{ |
{ |
struct window_clock_mode_data *data = wp->modedata; |
struct window_clock_mode_data *data = wme->data; |
|
|
evtimer_del(&data->timer); |
evtimer_del(&data->timer); |
screen_free(&data->screen); |
screen_free(&data->screen); |
|
|
} |
} |
|
|
static void |
static void |
window_clock_resize(struct window_pane *wp, u_int sx, u_int sy) |
window_clock_resize(struct window_mode_entry *wme, u_int sx, u_int sy) |
{ |
{ |
struct window_clock_mode_data *data = wp->modedata; |
struct window_clock_mode_data *data = wme->data; |
struct screen *s = &data->screen; |
struct screen *s = &data->screen; |
|
|
screen_resize(s, sx, sy, 0); |
screen_resize(s, sx, sy, 0); |
window_clock_draw_screen(wp); |
window_clock_draw_screen(wme); |
} |
} |
|
|
static void |
static void |
window_clock_key(struct window_pane *wp, __unused struct client *c, |
window_clock_key(struct window_mode_entry *wme, __unused struct client *c, |
__unused struct session *s, __unused struct winlink *wl, |
__unused struct session *s, __unused struct winlink *wl, |
__unused key_code key, __unused struct mouse_event *m) |
__unused key_code key, __unused struct mouse_event *m) |
{ |
{ |
window_pane_reset_mode(wp); |
window_pane_reset_mode(wme->wp); |
} |
} |
|
|
static void |
static void |
window_clock_draw_screen(struct window_pane *wp) |
window_clock_draw_screen(struct window_mode_entry *wme) |
{ |
{ |
struct window_clock_mode_data *data = wp->modedata; |
struct window_pane *wp = wme->wp; |
|
struct window_clock_mode_data *data = wme->data; |
struct screen_write_ctx ctx; |
struct screen_write_ctx ctx; |
int colour, style; |
int colour, style; |
struct screen *s = &data->screen; |
struct screen *s = &data->screen; |