34a45f462f1b0e73015f60354ded50644bf629b7 braney Wed Apr 15 13:03:18 2026 -0700 Apply colorOverride to track labels; add right-click "Change Track Color" dialog, refs #20460 Co-Authored-By: Claude Opus 4.6 (1M context) diff --git src/hg/hgTracks/imageV2.c src/hg/hgTracks/imageV2.c index ca7adb0023d..70da15c4437 100644 --- src/hg/hgTracks/imageV2.c +++ src/hg/hgTracks/imageV2.c @@ -302,30 +302,47 @@ jsonObjectAdd(ele, "url", newJsonString(trackDbSetting(track->tdb, "url"))); // 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)) + { + 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)); + } } void jsonTdbSettingsUse(struct jsonElement *settings) { // add the settings to the hgTracks output object jsonObjectAdd(jsonForClient, "trackDb", (struct jsonElement *) settings); } ///////////////////////// // IMAGEv2 // The new way to do images: PLEASE REFER TO imageV2.h FOR A DETAILED DESCRIPTION /////////////////////////