dd919a184eed24110f134dec8b56b61f034d23a0
kate
  Mon Jun 10 18:26:45 2019 -0700
Finish initial implementation of multi-region link on interact track details. refs #22422

diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 20c8913..870a6b6 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -9303,47 +9303,50 @@
 	    }
 	}
     else
 	{
 	if (positionIsVirt)
 	    errAbort("positionIsVirt=%d but virtMode=%d", positionIsVirt, virtMode);
 	}
 
 
     }
 else
     {
 
     if (sameString(virtModeType,"default"))  // we are leaving virtMode
 	{
-
 	virtMode = FALSE;
-
+        cartRemove(cart, "virtWinFull");
+        cartRemove(cart, "virtShortDesc");
 	}
     else
 	{
 
 	// ENTERING VIRTMODE
 
 	// First time initialization
 
 	findNearest = TRUE;
 
 	// For now, do this manually here:
 	// sets window to full genome size, which for these demos should be small except for allChroms
-	if (sameString(virtModeType, "exonMostly") || sameString(virtModeType, "geneMostly")
-       	 || sameString(virtModeType, "customUrl") || sameString(virtModeType, "kcGenes"))
+	if (sameString(virtModeType, "exonMostly") || 
+            sameString(virtModeType, "geneMostly") || 
+            sameString(virtModeType, "kcGenes") ||
+            (sameString(virtModeType, "customUrl") && 
+                    !cartUsualBoolean(cart, "virtWinFull", FALSE)))
 	    {
 	    // trying to find best vchrom location corresponding to chromName, winStart, winEnd);
 	    // try to find the nearest match
 	    if (!(chromName && findNearestVirtMatch(chromName, winStart, winEnd, findNearest, &virtWinStart, &virtWinEnd)))
 		{ // create 10k window near middle of vchrom
 		warn("Your new regions are not near previous location. Using middle of new coordinates.");
 		virtWinStart = virtSeqBaseCount / 2;
 		virtWinEnd = virtWinStart + 10000;
 		if (virtWinEnd > virtSeqBaseCount)
 		    virtWinEnd = virtSeqBaseCount;
 		}
 	    virtMode = TRUE;
 	    }
 	else if (sameString(virtModeType, "singleAltHaplo"))
 	    {