diff options
author | Bernhard R. Link <brlink@debian.org> | 2008-10-11 13:30:58 +0200 |
---|---|---|
committer | Bernhard R. Link <brlink@debian.org> | 2008-10-11 13:30:58 +0200 |
commit | 96f8765e306e2a5ed27546d2fec9b08613d369c2 (patch) | |
tree | 038784f40037a112cc1ad5a8817ff2975da50580 /src/actions.c | |
parent | cdf47ffa11181bee433fd52f01fbc9d29f6d5323 (diff) | |
download | ratpoison-96f8765e306e2a5ed27546d2fec9b08613d369c2.zip |
cmd_swap checks that both frames are on the same screen
Diffstat (limited to 'src/actions.c')
-rw-r--r-- | src/actions.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/actions.c b/src/actions.c index c7534bc..4187877 100644 --- a/src/actions.c +++ b/src/actions.c @@ -4185,12 +4185,20 @@ cmd_exchangeright (int interactive, struct cmdarg **args) cmdret * cmd_swap (int interactive, struct cmdarg **args) { + rp_screen *s; rp_frame *dest_frame; rp_frame *src_frame; dest_frame = ARG(0, frame); src_frame = args[1] ? ARG (1, frame) : current_frame(); - + + if (!rp_have_xinerama) + { + s = frames_screen(src_frame); + if (screen_find_frame_by_frame(s, dest_frame) == NULL) + return cmdret_new (RET_FAILURE, "swap: frames on different screens"); + } + exchange_with_frame (current_screen(), src_frame, dest_frame); return cmdret_new (RET_SUCCESS, NULL); |