diff options
author | Frediano Ziglio <fziglio@redhat.com> | 2015-08-06 16:02:16 +0100 |
---|---|---|
committer | Frediano Ziglio <fziglio@redhat.com> | 2015-08-06 16:02:16 +0100 |
commit | 6927a77cae11578f9a2726a734f1f344aae59f5c (patch) | |
tree | 91ff8e5c246d65f2ebdc39f1c28ced0aa3ee860b | |
parent | 2b0f5c8f7cea4f1bfe9352c7dcc20aa0165d8626 (diff) |
Use new saved information
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
-rw-r--r-- | play.cpp | 36 |
1 files changed, 24 insertions, 12 deletions
@@ -32,6 +32,8 @@ Rect get_win_pos(Window win) void play(const char *fn, Window win) { + Window target_win = 0; + if (win == 0) { fprintf (stderr, "play mode require a window to be specified\n"); exit(EXIT_FAILURE); @@ -67,9 +69,11 @@ void play(const char *fn, Window win) case XI_KeyRelease: ev.type = KeyRelease; keyboard: + if (rec.get_field(Record::Window, 0) != target_win) + break; ev.xkey.x = rec.get_field(Record::X); - ev.xkey.x_root = ev.xkey.x + rc.x; ev.xkey.y = rec.get_field(Record::Y); + ev.xkey.x_root = ev.xkey.x + rc.x; ev.xkey.y_root = ev.xkey.y + rc.y; ev.xkey.state = rec.get_field(Record::State); ev.xkey.keycode = rec.get_field(Record::Detail); @@ -83,29 +87,37 @@ void play(const char *fn, Window win) goto mouse; case XI_ButtonRelease: ev.type = ButtonRelease; - goto mouse; - case XI_Motion: - ev.type = MotionNotify; + mouse: + if (rec.get_field(Record::Window, 0) != target_win) + break; ev.xkey.x = rec.get_field(Record::X); - ev.xkey.x_root = ev.xkey.x + rc.x; ev.xkey.y = rec.get_field(Record::Y); + ev.xkey.x_root = ev.xkey.x + rc.x; ev.xkey.y_root = ev.xkey.y + rc.y; ev.xkey.state = rec.get_field(Record::State); -// XSendEvent(dpy, win, False, 0, &ev); - XWarpPointer(dpy, win, win, 0,0,0,0, ev.xkey.x, ev.xkey.y); + ev.xkey.keycode = rec.get_field(Record::Detail); + XSendEvent(dpy, win, False, 0, &ev); +// XSendEvent(dpy, win, True, ButtonPressMask, &ev); XFlush(dpy); break; - mouse: + case XI_Motion: + if (rec.get_field(Record::Window, 0) != target_win) + break; + ev.type = MotionNotify; ev.xkey.x = rec.get_field(Record::X); - ev.xkey.x_root = ev.xkey.x + rc.x; ev.xkey.y = rec.get_field(Record::Y); + ev.xkey.x_root = ev.xkey.x + rc.x; ev.xkey.y_root = ev.xkey.y + rc.y; ev.xkey.state = rec.get_field(Record::State); - ev.xkey.keycode = rec.get_field(Record::Detail); - XSendEvent(dpy, win, False, 0, &ev); -// XSendEvent(dpy, win, True, ButtonPressMask, &ev); +// XSendEvent(dpy, win, False, 0, &ev); + XWarpPointer(dpy, win, win, 0,0,0,0, ev.xkey.x, ev.xkey.y); XFlush(dpy); break; + case Record::TargetWindow: + target_win = rec.get_field(Record::Window); + break; + case Record::WindowMove: + break; default: fprintf (stderr, "unknown type %u\n", rec.get_type()); exit(EXIT_FAILURE); |