version 1.12, 2015/06/04 11:43:51 |
version 1.13, 2015/12/13 14:32:38 |
|
|
"swap-window", "swapw", |
"swap-window", "swapw", |
"ds:t:", 0, 0, |
"ds:t:", 0, 0, |
"[-d] " CMD_SRCDST_WINDOW_USAGE, |
"[-d] " CMD_SRCDST_WINDOW_USAGE, |
0, |
CMD_WINDOW_MARKED_S|CMD_WINDOW_MARKED_T, |
cmd_swap_window_exec |
cmd_swap_window_exec |
}; |
}; |
|
|
enum cmd_retval |
enum cmd_retval |
cmd_swap_window_exec(struct cmd *self, struct cmd_q *cmdq) |
cmd_swap_window_exec(struct cmd *self, struct cmd_q *cmdq) |
{ |
{ |
struct args *args = self->args; |
|
const char *target_src, *target_dst; |
|
struct session *src, *dst; |
struct session *src, *dst; |
struct session_group *sg_src, *sg_dst; |
struct session_group *sg_src, *sg_dst; |
struct winlink *wl_src, *wl_dst; |
struct winlink *wl_src, *wl_dst; |
struct window *w; |
struct window *w; |
|
|
target_src = args_get(args, 's'); |
wl_src = cmdq->state.sflag.wl; |
if ((wl_src = cmd_find_window_marked(cmdq, target_src, &src)) == NULL) |
src = cmdq->state.sflag.s; |
return (CMD_RETURN_ERROR); |
|
target_dst = args_get(args, 't'); |
|
if ((wl_dst = cmd_find_window(cmdq, target_dst, &dst)) == NULL) |
|
return (CMD_RETURN_ERROR); |
|
|
|
sg_src = session_group_find(src); |
sg_src = session_group_find(src); |
|
|
|
wl_dst = cmdq->state.tflag.wl; |
|
dst = cmdq->state.tflag.s; |
sg_dst = session_group_find(dst); |
sg_dst = session_group_find(dst); |
if (src != dst && |
|
sg_src != NULL && sg_dst != NULL && sg_src == sg_dst) { |
if (src != dst && sg_src != NULL && sg_dst != NULL && |
|
sg_src == sg_dst) { |
cmdq_error(cmdq, "can't move window, sessions are grouped"); |
cmdq_error(cmdq, "can't move window, sessions are grouped"); |
return (CMD_RETURN_ERROR); |
return (CMD_RETURN_ERROR); |
} |
} |