From 7ebde9c5f89b1e55cdbb10ed3d5aee30e1f63fbd Mon Sep 17 00:00:00 2001 From: Bert Freudenberg Date: Tue, 06 Nov 2012 18:04:06 +0000 Subject: Track time per finger, increase gap to 200 ms --- diff --git a/activity.py b/activity.py index 45363eb..1245451 100644 --- a/activity.py +++ b/activity.py @@ -86,7 +86,6 @@ class TouchArea(Gtk.DrawingArea): def __init__(self): Gtk.DrawingArea.__init__(self) self.fingers = {} - self.time = 0 self.set_events(Gdk.EventMask.TOUCH_MASK) self.connect('draw', self.__draw_cb) self.connect('event', self.__event_cb) @@ -101,12 +100,11 @@ class TouchArea(Gtk.DrawingArea): # we make it a string for use as dict key seq = str(event.touch.sequence) if event.type == Gdk.EventType.TOUCH_BEGIN: - if event.touch.time - self.time > 100: - self.remove_inactive_fingers() - self.fingers[seq] = Finger(event) + new_finger = Finger(event) + self.fingers[seq] = new_finger + self.remove_inactive_fingers(new_finger) else: self.fingers[seq].update(event) - self.time = event.touch.time self.queue_draw() def __draw_cb(self, widget, ctx): @@ -116,20 +114,25 @@ class TouchArea(Gtk.DrawingArea): for f in self.fingers: self.fingers[f].draw(ctx, alloc.width, alloc.height) - def remove_inactive_fingers(self): - for f in self.fingers: - if self.fingers[f].active: - return - self.fingers = {} + def remove_inactive_fingers(self, new_finger): + for f,old_finger in list(self.fingers.items()): + if not old_finger.active: + del self.fingers[f] + if new_finger.time - old_finger.time < 300: + new_finger.remember(old_finger) + class Finger: def __init__(self, event): self.trail = [ Point(event.touch.x, event.touch.y) ] self.color = (random(), random(), random()) + self.time = event.touch.time self.active = True + self.other = None def update(self, event): + self.time = event.touch.time if event.type == Gdk.EventType.TOUCH_UPDATE: self.trail.append( Point(event.touch.x, event.touch.y) ) elif event.type == Gdk.EventType.TOUCH_END: @@ -138,7 +141,14 @@ class Finger: self.active = False self.color = (1, 0, 0) + def remember(self, finger): + if self.other: + finger.remember(self.other) + self.other = finger + def draw(self, ctx, width, height): + if self.other: + self.other.draw(ctx, width, height) (r, g, b) = self.color ctx.set_source_rgb(r, g, b) self.draw_trail(ctx) -- cgit v0.9.1