Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBert Freudenberg <bert@freudenbergs.de>2012-11-06 16:31:59 (GMT)
committer Bert Freudenberg <bert@freudenbergs.de>2012-11-06 16:31:59 (GMT)
commitfa1fef86110c4f9c3c9071d15558933462adef63 (patch)
tree47246d885817b82858037d2c449526638ffa4fb8
parent80673c870c783316bf58c2ac9bfcbb898f97bfe8 (diff)
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)
-rw-r--r--activity.py21
1 files changed, 13 insertions, 8 deletions
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