diff options
Diffstat (limited to 'tmux.h')
-rw-r--r-- | tmux.h | 32 |
1 files changed, 21 insertions, 11 deletions
@@ -693,25 +693,37 @@ struct screen_write_ctx { * Window mode. Windows can be in several modes and this is used to call the * right function to handle input and output. */ +struct window_mode_entry; struct window_mode { const char *name; - struct screen *(*init)(struct window_pane *, struct cmd_find_state *, - struct args *); - void (*free)(struct window_pane *); - void (*resize)(struct window_pane *, u_int, u_int); - void (*key)(struct window_pane *, struct client *, + struct screen *(*init)(struct window_mode_entry *, + struct cmd_find_state *, struct args *); + void (*free)(struct window_mode_entry *); + void (*resize)(struct window_mode_entry *, u_int, u_int); + void (*key)(struct window_mode_entry *, struct client *, struct session *, struct winlink *, key_code, struct mouse_event *); - const char *(*key_table)(struct window_pane *); - void (*command)(struct window_pane *, struct client *, + const char *(*key_table)(struct window_mode_entry *); + void (*command)(struct window_mode_entry *, struct client *, struct session *, struct winlink *, struct args *, struct mouse_event *); - void (*formats)(struct window_pane *, struct format_tree *); + void (*formats)(struct window_mode_entry *, + struct format_tree *); }; #define WINDOW_MODE_TIMEOUT 180 +/* Active window mode. */ +struct window_mode_entry { + struct window_pane *wp; + + const struct window_mode *mode; + void *data; + + u_int prefix; +}; + /* Child window structure. */ struct window_pane { u_int id; @@ -780,11 +792,9 @@ struct window_pane { struct grid *saved_grid; struct grid_cell saved_cell; - const struct window_mode *mode; - void *modedata; + struct window_mode_entry *mode; struct event modetimer; time_t modelast; - u_int modeprefix; char *searchstr; TAILQ_ENTRY(window_pane) entry; |