d806d4e2ec73a0e53f8b65443bb5a403cc54364d
braney
  Mon Jun 29 12:11:00 2026 -0700
Enable Sort by Magnitude/Similarity on wiggle-only composites, refs #37816

The right-click "Sort by Magnitude/Similarity" menu items were previously
offered only on custom composites. Extend them to any composite whose
subtracks are all wiggle types (parentIsAllWiggle in utils.js).

diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 68d165a9c74..6b526fc00bb 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -5238,38 +5238,38 @@
 		    }
 		}
 	    }
 	}
     }
 trackList = windows->trackList;
 setGlobalsFromWindow(windows); // first window
 
 struct slName *orderedWiggles = NULL;
 char *sortTrack;
 char *wigOrder = NULL;
 if ((sortTrack = cgiOptionalString( "sortSim")) != NULL)
     {
     char buffer[1024];
     safef(buffer, sizeof buffer,  "simOrder_%s", sortTrack);
-    wigOrder = cartString(cart, buffer);
+    wigOrder = cartOptionalString(cart, buffer);
     }
 
 if ((sortTrack = cgiOptionalString( "sortExp")) != NULL)
     {
     char buffer[1024];
     safef(buffer, sizeof buffer,  "expOrder_%s", sortTrack);
-    wigOrder = cartString(cart, buffer);
+    wigOrder = cartOptionalString(cart, buffer);
     }
 
 if (wigOrder != NULL)
     {
     orderedWiggles = slNameListFromString(wigOrder, ' ');
     struct slName *name = orderedWiggles;
     // if we're sorting, remove existing sort order for this composite
     for(; name; name = name->next)
         {
         char buffer[1024];
         safef(buffer, sizeof buffer,  "%s_imgOrd", name->name);
         cartRemove(cart, buffer);
         }
     }