summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrediano Ziglio <fziglio@redhat.com>2015-08-06 16:02:16 +0100
committerFrediano Ziglio <fziglio@redhat.com>2015-08-06 16:02:16 +0100
commit6927a77cae11578f9a2726a734f1f344aae59f5c (patch)
tree91ff8e5c246d65f2ebdc39f1c28ced0aa3ee860b
parent2b0f5c8f7cea4f1bfe9352c7dcc20aa0165d8626 (diff)
Use new saved information
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
-rw-r--r--play.cpp36
1 files changed, 24 insertions, 12 deletions
diff --git a/play.cpp b/play.cpp
index 509c058..0c0e759 100644
--- a/play.cpp
+++ b/play.cpp
@@ -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);