ff29e6faa49df5473ddd5ef2bec9b4c33cfa588c
chmalee
  Tue Aug 29 15:35:31 2023 -0700
Fix new mouseover code to account for track description heights, refs #31365

diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 0d4eb56..041d1c3 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -11272,30 +11272,35 @@
 
 jsonObjectAdd(jsonForClient, "measureTiming", newJsonBoolean(measureTiming));
 // js code needs to know if a highlightRegion is defined for this db
 checkAddHighlight(); // call again in case tracksDisplay's call to resolvePosition changed vars
 char *highlightDef = cartOptionalString(cart, "highlight");
 if (highlightDef)
     jsonObjectAdd(jsonForClient, "highlight", newJsonString(highlightDef));
 
 char *prevColor = cartOptionalString(cart, "prevHlColor");
 if (prevColor)
     jsonObjectAdd(jsonForClient, "prevHlColor", newJsonString(prevColor));
 
 jsonObjectAdd(jsonForClient, "enableHighlightingDialog",
 	      newJsonBoolean(cartUsualBoolean(cart, "enableHighlightingDialog", TRUE)));
 
+// add the center label height if center labels are present
+if (withCenterLabels)
+    jsonObjectAdd(jsonForClient, "centerLabelHeight",
+              newJsonNumber(tl.fontHeight));
+
 struct dyString *dy = dyStringNew(1024);
 jsonDyStringPrint(dy, (struct jsonElement *) jsonForClient, "hgTracks", 0);
 jsInline(dy->string);
 dyStringFree(&dy);
 
 dy = dyStringNew(1024);
 // do not have a JsonFile available when PDF/PS output
 if (enableMouseOver && isNotEmpty(mouseOverJsonFile->forCgi))
     {
     jsonWriteObjectEnd(mouseOverJson);
     /* if any data was written, it is longer than 4 bytes */
     if (strlen(mouseOverJson->dy->string) > 4)
 	{
 	FILE *trashJson = mustOpen(mouseOverJsonFile->forCgi, "w");
 	fputs(mouseOverJson->dy->string,trashJson);