summaryrefslogtreecommitdiff
path: root/record.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'record.cpp')
-rw-r--r--record.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/record.cpp b/record.cpp
index abdfb96..1ac3440 100644
--- a/record.cpp
+++ b/record.cpp
@@ -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();
}
}