try to use stopPropagation to make sure touch events aren't handled by the browser...
[lantea.git] / js / map.js
index dc3ad9c776637595ddbc764b18b111e119dc67ba..361420b7e1e91088f204f932d678d6d0bf5e911d 100644 (file)
--- a/js/map.js
+++ b/js/map.js
@@ -163,13 +163,17 @@ function loadPrefs(aEvent) {
     });
     gWaitCounter++;
     var trackLoadStarted = false;
+    var redrawBase = 100;
     gTrackStore.getListStepped(function(aTPoint) {
       if (aTPoint) {
         // Add in front and return new length.
         var tracklen = gTrack.unshift(aTPoint);
-        // Redraw track every 100 values (initial paint will do first anyhow).
-        if (tracklen % 100 == 0)
+        // Redraw track periodically, larger distance the longer it gets.
+        // Initial paint will do initial track drawing.
+        if (tracklen % redrawBase == 0) {
           drawTrack();
+          redrawBase = tracklen;
+        }
       }
       else {
         // Last point received.
@@ -458,6 +462,10 @@ var mapEvHandler = {
   handleEvent: function(aEvent) {
     var touchEvent = aEvent.type.indexOf('touch') != -1;
 
+    if (touchEvent) {
+      aEvent.stopPropagation();
+    }
+
     // Bail out if the event is happening on an input.
     if (aEvent.target.tagName.toLowerCase() == "input")
       return;