5720d40a1fc0248481b420dd41bec1d910b9fc16 galt Thu Mar 31 14:36:36 2016 -0700 Fixes gtex track by accounting for label width. diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c index 08ce117..24bf5c5 100644 --- src/hg/hgTracks/simpleTracks.c +++ src/hg/hgTracks/simpleTracks.c @@ -603,43 +603,49 @@ AllocVar(range); range->start = start + winOffset; range->end = end + winOffset; slAddHead(&rangeList, range); rangeWidth += (range->end - range->start); AllocVar(node); node->val = item; node->parentSs = sin->ss; node->noLabel = noLabel; slAddHead(&nodeList, node); noLabel = TRUE; // turns off labels for all following windows - for now. + } if (!foundWork) continue; slReverse(&rangeList); slReverse(&nodeList); // non-proportional fixed-width handling (e.g. GTEX) if (tg->nonPropPixelWidth) { int npWidth = tg->nonPropPixelWidth(tg, item); + // account for label width unless we are already pushed against left side. + if (rangeList->start != 0 && !tg->drawLabelInBox && !tg->drawName && withLabels) + npWidth += mgFontStringWidth(font, + tg->itemName(tg, item)) + extraWidth; + if (npWidth > rangeWidth) { // keep the first range but extend it range = rangeList; range->end = range->start + npWidth; range->next = NULL; // do not need the rest of the ranges } } if (spaceSaverAddOverflowMulti(ss, rangeList, nodeList, allowOverflow) == NULL) break; } } spaceSaverFinish(tg->ss); }