6d78a8e2d7230272d15508db74169ad20cd76f3f
braney
  Thu Apr 16 12:06:50 2026 -0700
Restrict color override to supported track types; add palette icon; deduplicate type check, refs #20460

Note: palette.png must be installed to htdocs/images/ (new file).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

diff --git src/hg/hgTracks/imageV2.c src/hg/hgTracks/imageV2.c
index 70da15c4437..5f95146aeae 100644
--- src/hg/hgTracks/imageV2.c
+++ src/hg/hgTracks/imageV2.c
@@ -304,31 +304,31 @@
 // Close with some standard vars
 jsonObjectAdd(ele, "shortLabel", newJsonString(track->shortLabel));
 jsonObjectAdd(ele, "longLabel", newJsonString(track->longLabel));
 jsonObjectAdd(ele, "canPack", newJsonNumber(track->canPack));
 
 if (track->limitedVis != track->visibility)
     jsonObjectAdd(ele, "limitedVis", newJsonNumber(track->limitedVis));
 jsonObjectAdd(ele, "visibility", newJsonNumber(track->visibility));
 
 if (trackDbSetting(track->tdb, "onlyVisibility"))
     {
     jsonObjectAdd(ele, "onlyVisibility", newJsonString(trackDbSetting(track->tdb, "onlyVisibility")));
     }
 
 // Color override support for right-click color picker
-if (cfgOptionBooleanDefault("showColorPicker", FALSE))
+if (tdbSupportsColorOverride(track->tdb))
     {
     char defaultColor[16];
     safef(defaultColor, sizeof(defaultColor), "#%02x%02x%02x",
           track->color.r, track->color.g, track->color.b);
     jsonObjectAdd(ele, "defaultColor", newJsonString(defaultColor));
     char varName[1024];
     safef(varName, sizeof(varName), "%s.colorOverride", track->track);
     char *overrideColor = cartOptionalString(cart, varName);
     if (isNotEmpty(overrideColor))
         jsonObjectAdd(ele, "colorOverride", newJsonString(overrideColor));
     safef(varName, sizeof(varName), "%s.colorOverrideOn", track->track);
     if (cartUsualBoolean(cart, varName, FALSE))
         jsonObjectAdd(ele, "colorOverrideOn", newJsonBoolean(TRUE));
     }
 }