diff options
Diffstat (limited to 'record.cpp')
-rw-r--r-- | record.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -42,6 +42,7 @@ private: void handle_xinput(XGenericEventCookie *cookie); void handle_ConfigureNotify(XEvent *event); void handle_xev(XEvent *ev); + void record_move(); WriteRecordsFile file; bool has_focus, inside; @@ -57,6 +58,14 @@ DoRecord::DoRecord(Window _win, const char *fn): xev_init(win); xinput_init(dpy, win); + + /* mark which window we selected to record */ + Record r(Record::TargetWindow, get_record_time()); + r.set_field(Record::Window, win); + file.put(r); + + /* fake move to tell where mouse was */ + record_move(); } void @@ -86,6 +95,18 @@ DoRecord::go() } void +DoRecord::record_move() +{ + Record r(Record::WindowMove, get_record_time()); + r.set_field(Record::X, rc.x); + r.set_field(Record::Y, rc.y); + r.set_field(Record::Width, rc.width); + r.set_field(Record::Height, rc.height); + r.set_field(Record::Window, win); + file.put(r); +} + +void DoRecord::handle_xi_mouse(XIDeviceEvent* ev) { int mouse_x = (int) ev->root_x; @@ -104,6 +125,7 @@ DoRecord::handle_xi_mouse(XIDeviceEvent* ev) r.set_field(Record::Y, mouse_y - rc.y); r.set_field(Record::State, ev->mods.effective); r.set_field(Record::Detail, ev->detail); + r.set_field(Record::Window, win); file.put(r); if (verbose == 1) @@ -118,6 +140,7 @@ DoRecord::handle_xi_keys(XIDeviceEvent* ev) r.set_field(Record::Y, ev->root_y - rc.y); r.set_field(Record::State, ev->mods.effective); r.set_field(Record::Detail, ev->detail); + r.set_field(Record::Window, win); file.put(r); } @@ -167,6 +190,7 @@ DoRecord::handle_ConfigureNotify(XEvent *event) rc.y = e->y; rc.width = e->width; rc.height = e->height; + record_move(); } } |