From fa1fef86110c4f9c3c9071d15558933462adef63 Mon Sep 17 00:00:00 2001 From: Bert Freudenberg Date: Tue, 06 Nov 2012 16:31:59 +0000 Subject: If there is a less than 100 ms gap between strokes, leave them on screen If a touch was canceled, color it red (not observed yet) --- diff --git a/activity.py b/activity.py index ecc113d..45363eb 100644 --- a/activity.py +++ b/activity.py @@ -86,6 +86,7 @@ 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) @@ -100,11 +101,12 @@ 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: - for f in self.inactive_fingers(): - del self.fingers[f] + if event.touch.time - self.time > 100: + self.remove_inactive_fingers() self.fingers[seq] = Finger(event) else: self.fingers[seq].update(event) + self.time = event.touch.time self.queue_draw() def __draw_cb(self, widget, ctx): @@ -114,9 +116,11 @@ class TouchArea(Gtk.DrawingArea): for f in self.fingers: self.fingers[f].draw(ctx, alloc.width, alloc.height) - def inactive_fingers(self): - return [f for f in self.fingers if not self.fingers[f].active] - + def remove_inactive_fingers(self): + for f in self.fingers: + if self.fingers[f].active: + return + self.fingers = {} class Finger: @@ -128,10 +132,11 @@ class Finger: def update(self, event): if event.type == Gdk.EventType.TOUCH_UPDATE: self.trail.append( Point(event.touch.x, event.touch.y) ) - elif event.type in ( - Gdk.EventType.TOUCH_CANCEL, - Gdk.EventType.TOUCH_END): + elif event.type == Gdk.EventType.TOUCH_END: + self.active = False + elif event.type == Gdk.EventType.TOUCH_CANCEL: self.active = False + self.color = (1, 0, 0) def draw(self, ctx, width, height): (r, g, b) = self.color -- cgit v0.9.1