=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/Attic/cmd-link-window.c,v retrieving revision 1.5 retrieving revision 1.6 diff -c -r1.5 -r1.6 *** src/usr.bin/tmux/Attic/cmd-link-window.c 2009/08/13 20:11:58 1.5 --- src/usr.bin/tmux/Attic/cmd-link-window.c 2009/09/20 17:27:18 1.6 *************** *** 1,4 **** ! /* $OpenBSD: cmd-link-window.c,v 1.5 2009/08/13 20:11:58 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: cmd-link-window.c,v 1.6 2009/09/20 17:27:18 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 44,96 **** { struct cmd_srcdst_data *data = self->data; struct session *dst; ! struct winlink *wl_src, *wl_dst; char *cause; ! int idx; ! if ((wl_src = cmd_find_window(ctx, data->src, NULL)) == NULL) return (-1); if ((idx = cmd_find_index(ctx, data->dst, &dst)) == -2) return (-1); ! wl_dst = NULL; ! if (idx != -1) ! wl_dst = winlink_find_by_index(&dst->windows, idx); ! if (wl_dst != NULL) { ! if (wl_dst->window == wl_src->window) ! return (0); ! ! if (data->chflags & CMD_CHFLAG('k')) { ! /* ! * Can't use session_detach as it will destroy session ! * if this makes it empty. ! */ ! session_alert_cancel(dst, wl_dst); ! winlink_stack_remove(&dst->lastw, wl_dst); ! winlink_remove(&dst->windows, wl_dst); ! ! /* Force select/redraw if current. */ ! if (wl_dst == dst->curw) { ! data->chflags &= ~CMD_CHFLAG('d'); ! dst->curw = NULL; ! } ! } ! } ! ! if (idx == -1) ! idx = -1 - options_get_number(&dst->options, "base-index"); ! wl_dst = session_attach(dst, wl_src->window, idx, &cause); ! if (wl_dst == NULL) { ! ctx->error(ctx, "create session failed: %s", cause); xfree(cause); return (-1); - } - - if (data->chflags & CMD_CHFLAG('d')) - server_status_session(dst); - else { - session_select(dst, wl_dst->idx); - server_redraw_session(dst); } recalculate_sizes(); --- 44,64 ---- { struct cmd_srcdst_data *data = self->data; struct session *dst; ! struct winlink *wl; char *cause; ! int idx, kflag, dflag; ! if ((wl = cmd_find_window(ctx, data->src, NULL)) == NULL) return (-1); if ((idx = cmd_find_index(ctx, data->dst, &dst)) == -2) return (-1); ! kflag = data->chflags & CMD_CHFLAG('k'); ! dflag = data->chflags & CMD_CHFLAG('d'); ! if (server_link_window(wl, dst, idx, kflag, !dflag, &cause) != 0) { ! ctx->error(ctx, "can't create session: %s", cause); xfree(cause); return (-1); } recalculate_sizes();