9796c4d65f1f1fcd8eae91e158b68bbf8ee8698f
kate
  Wed Apr 29 12:01:38 2020 -0700
Add map box on entire gene graph for click to hgc. refs #25465

diff --git src/hg/hgTracks/gtexTracks.c src/hg/hgTracks/gtexTracks.c
index 0162d2b..dfb2bc5 100644
--- src/hg/hgTracks/gtexTracks.c
+++ src/hg/hgTracks/gtexTracks.c
@@ -954,31 +954,32 @@
 return geneBed->chromStart;
 }
 
 static int gtexGeneItemEnd(struct track *tg, void *item)
 /* Return end chromosome coordinate of item, including graph */
 {
 struct gtexGeneInfo *geneInfo = (struct gtexGeneInfo *)item;
 struct gtexGeneBed *geneBed = geneInfo->geneBed;
 double scale = scaleForWindow(insideWidth, winStart, winEnd);
 int graphWidth = gtexGraphWidth(tg, geneInfo);
 return max(geneBed->chromEnd, max(winStart, geneBed->chromStart) + graphWidth/scale);
 }
 
 static void gtexGeneMapItem(struct track *tg, struct hvGfx *hvg, void *item, char *itemName, 
                         char *mapItemName, int start, int end, int x, int y, int width, int height)
-/* Create a map box on gene model and label, and one for each tissue (bar in the graph) in
+/* Create a map box on gene graph, gene model and label, 
+ * and one for each tissue (bar in the graph) in
  * pack or full mode.  Just single map for squish/dense modes */
 {
 if (tg->limitedVis == tvDense)
     {
     genericMapItem(tg, hvg, item, itemName, itemName, start, end, x, y, width, height);
     return;
     }
 struct gtexGeneInfo *geneInfo = item;
 struct gtexGeneBed *geneBed = geneInfo->geneBed;
 struct gtexGeneExtras *extras = (struct gtexGeneExtras *)tg->extraUiData;
 int geneStart = geneBed->chromStart;
 int geneEnd = geneBed->chromEnd;
 if (tg->limitedVis == tvSquish)
     {
     int tisId = maxTissueForGene(geneBed);
@@ -1061,30 +1062,36 @@
     int x1, x2;
     getItemX(itemStart, itemEnd, &x1, &x2);
     int w = x2-x1;
     int labelWidth = mgFontStringWidth(tl.font, itemName);
     if (x1-labelWidth <= insideX)
         labelWidth = 0;
     // map over label
     int itemHeight = geneInfo->height;
     mapBoxHc(hvg, geneStart, geneEnd, x1-labelWidth, y, labelWidth, itemHeight-3, 
                         tg->track, mapItemName, geneInfo->description);
     // map over gene model (extending to end of item)
     int geneModelHeight = gtexGeneModelHeight(extras);
     mapBoxHc(hvg, geneStart, geneEnd, x1, y+itemHeight-geneModelHeight-3, w, geneModelHeight,
                         tg->track, mapItemName, geneInfo->description);
     } 
+
+// add map box to expression graph
+x1 = insideX + graphX; // x1 is at left of graph
+height = topGraphHeight;
+width = gtexGraphWidth(tg, geneInfo);
+mapBoxHc(hvg, geneStart, geneEnd, x1, y, width, height, tg->track, mapItemName, itemName);
 }
 
 static char *gtexGeneItemName(struct track *tg, void *item)
 /* Return gene name */
 {
 struct gtexGeneInfo *geneInfo = (struct gtexGeneInfo *)item;
 return geneInfo->label;
 }
 
 static int gtexGeneHeight(void *item)
 {
 struct gtexGeneInfo *geneInfo = (struct gtexGeneInfo *)item;
 assert(geneInfo->height != 0);
 return geneInfo->height;
 }