=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/Attic/window-choose.c,v retrieving revision 1.17 retrieving revision 1.18 diff -c -r1.17 -r1.18 *** src/usr.bin/tmux/Attic/window-choose.c 2010/12/29 21:49:06 1.17 --- src/usr.bin/tmux/Attic/window-choose.c 2012/04/23 22:40:47 1.18 *************** *** 1,4 **** ! /* $OpenBSD: window-choose.c,v 1.17 2010/12/29 21:49:06 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window-choose.c,v 1.18 2012/04/23 22:40:47 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott *************** *** 29,34 **** --- 29,35 ---- void window_choose_mouse( struct window_pane *, struct session *, struct mouse_event *); + void window_choose_fire_callback(struct window_pane *, int); void window_choose_redraw_screen(struct window_pane *); void window_choose_write_line( struct window_pane *, struct screen_write_ctx *, u_int); *************** *** 169,174 **** --- 170,189 ---- window_choose_redraw_screen(wp); } + void + window_choose_fire_callback(struct window_pane *wp, int idx) + { + struct window_choose_mode_data *data = wp->modedata; + const struct window_mode *oldmode; + + oldmode = wp->mode; + wp->mode = NULL; + + data->callbackfn(data->data, idx); + + wp->mode = oldmode; + } + /* ARGSUSED */ void window_choose_key(struct window_pane *wp, unused struct session *sess, int key) *************** *** 184,195 **** switch (mode_key_lookup(&data->mdata, key)) { case MODEKEYCHOICE_CANCEL: ! data->callbackfn(data->data, -1); window_pane_reset_mode(wp); break; case MODEKEYCHOICE_CHOOSE: item = &ARRAY_ITEM(&data->list, data->selected); ! data->callbackfn(data->data, item->idx); window_pane_reset_mode(wp); break; case MODEKEYCHOICE_UP: --- 199,210 ---- switch (mode_key_lookup(&data->mdata, key)) { case MODEKEYCHOICE_CANCEL: ! window_choose_fire_callback(wp, -1); window_pane_reset_mode(wp); break; case MODEKEYCHOICE_CHOOSE: item = &ARRAY_ITEM(&data->list, data->selected); ! window_choose_fire_callback(wp, item->idx); window_pane_reset_mode(wp); break; case MODEKEYCHOICE_UP: *************** *** 295,301 **** data->selected = idx; item = &ARRAY_ITEM(&data->list, data->selected); ! data->callbackfn(data->data, item->idx); window_pane_reset_mode(wp); break; } --- 310,316 ---- data->selected = idx; item = &ARRAY_ITEM(&data->list, data->selected); ! window_choose_fire_callback(wp, item->idx); window_pane_reset_mode(wp); break; } *************** *** 324,330 **** data->selected = idx; item = &ARRAY_ITEM(&data->list, data->selected); ! data->callbackfn(data->data, item->idx); window_pane_reset_mode(wp); } --- 339,345 ---- data->selected = idx; item = &ARRAY_ITEM(&data->list, data->selected); ! window_choose_fire_callback(wp, item->idx); window_pane_reset_mode(wp); }