src/hg/hgTracks/config.c 1.82

1.82 2009/07/14 17:45:55 larrym
re-enable drag-and-droom for AppleWebKit >= 531
Index: src/hg/hgTracks/config.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/config.c,v
retrieving revision 1.81
retrieving revision 1.82
diff -b -B -U 4 -r1.81 -r1.82
--- src/hg/hgTracks/config.c	27 Jun 2009 01:21:31 -0000	1.81
+++ src/hg/hgTracks/config.c	14 Jul 2009 17:45:55 -0000	1.82
@@ -443,14 +443,26 @@
 
 boolean dragZoomingConfig(struct cart *cart)
 // Returns TRUE if drag-and-zoom is currently on
 {
-// dragZooming defaults to on, except for AppleWebKit browsers (Chrome and Safari), where drag-and-zoom
-// does not currently work (may want to use "KHTML" as the test string instead of "AppleWebKit").
-// This code is overly conservative, because drag-and-zoom did work with older (pre 4.0) versions of
-// safari. Unfortunately, safari numbering is weird; e.g. version 1.3.2 shows up as 
-// "Safari/312.6" in the web logs, so for now, I'm defaulting drag-and-zoom to off
-// for all versions of Safari.
-
 char *ua = cgiUserAgent();
-return cartUsualBoolean(cart, "dragZooming", ua == NULL || !stringIn("AppleWebKit", ua));
+boolean defaultVal = TRUE;
+
+// dragZooming was broken in some versions of AppleWebKit browsers (used by Safari, Chrome and some other browsers).
+// This was explicitly fixed the WebKit team in version 531 (see http://trac.webkit.org/changeset/45143).
+// The following code is overly conservative, because drag-and-zoom did work with older (pre 4.0) versions of
+// safari. Unfortunately, I don't know in which version of WebKit this broke, so we disable all AppleWebKit
+// based browsers lower than 531.
+
+if(ua != NULL)
+    {
+    char *needle = "AppleWebKit/";
+    char *ptr = strstr(ua, needle);
+    if(ptr != NULL)
+        {
+        int version = 0;
+        sscanf(ptr + strlen(needle), "%d", &version);
+        defaultVal = version >= 531;
+        }
+    }
+return cartUsualBoolean(cart, "dragZooming", defaultVal);
 }