abd7278ac7167ede325d8c144a35ea59a0798766
chmalee
  Wed Jun 17 03:55:47 2026 -0700
Add a right click option to change color or background highlight color of individual track items. Only works for bed like items, refs #37778

diff --git src/hg/hgTracks/bedTrack.c src/hg/hgTracks/bedTrack.c
index 33a6d8e244f..cbb3c1c8be1 100644
--- src/hg/hgTracks/bedTrack.c
+++ src/hg/hgTracks/bedTrack.c
@@ -674,30 +674,36 @@
 boolean withHgsid = (trackDbSetting(tdb, "hgsid") != NULL);
 boolean thickDrawItem = (trackDbSetting(tdb, "thickDrawItem") != NULL);
 
 if (tg->itemColor != NULL)
     {
     color = tg->itemColor(tg, bed, hvg);
     }
 else if (tg->colorShades)
     {
     adjustBedScoreGrayLevel(tdb, bed, scoreMin, scoreMax);
     color = tg->colorShades[grayInRange(bed->score, scoreMin, scoreMax)];
     }
 
 color = colorFromCart(tg, color);
 
+// user-chosen per-item color (right-click "Color this item"). Simple bed has no background-box
+// support, so both modes just recolor the glyph.
+Color itemColorOver;
+if (itemColorOverride(tg, bed, &itemColorOver, NULL))
+    color = itemColorOver;
+
 /*	Keep the item at least 4 pixels wide at all viewpoints */
 if (thickDrawItem && (w < 4))
     {
     x1 -= ((5-w) >> 1);
     w = 4;
     x2 = x1 + w;
     }
 if (color)
     {
     hvGfxBox(hvg, x1, y, w, heightPer, color);
     if (tg->drawLabelInBox)
         {
 	char *label = tg->itemName(tg, bed);
         drawScaledBoxLabel(hvg, s, e, scale, xOff, y, heightPer, color, font, label);
         }