5f6b07f6ef00d7a59ca4e454d7336205eede6055
kate
  Wed Aug 28 16:03:23 2019 -0700
Add ifdef to force interaction display to linked features mode (no curves) when in multi-region view.  Awaiting JK input. refs #22422

diff --git src/hg/hgTracks/interactTrack.c src/hg/hgTracks/interactTrack.c
index c41110f..0a16f83 100644
--- src/hg/hgTracks/interactTrack.c
+++ src/hg/hgTracks/interactTrack.c
@@ -357,31 +357,36 @@
 }
 
 void interactLoadItems(struct track *tg)
     /* Load interact items in interact format */
 {
     loadAndFilterItems(tg);
 
     struct interactTrackInfo *tInfo = NULL;
     AllocVar(tInfo);
     tg->customPt = tInfo;
     tInfo->isDirectional = interactUiDirectional(tg->tdb);
     tInfo->offset = interactUiOffset(tg->tdb);
     tInfo->drawUp = trackDbSettingClosestToHomeOn(tg->tdb, INTERACT_UP);
     tInfo->clusterMode = interactUiClusterMode(cart, tg->track, tg->tdb);
 
+#define MR_FORCE_PACK 1
+#ifdef MR_FORCE_PACK
+    if (!tInfo->clusterMode && !isLinkedFeaturesMode(tg) && sameString(virtModeType, "default"))
+#else
     if (!tInfo->clusterMode && !isLinkedFeaturesMode(tg))
+#endif
         {
         // draw curve display
         tg->mapsSelf = TRUE;
         tg->totalHeight = interactTotalHeight;
         tg->drawLeftLabels = interactNoLeftLabels;
         tg->freeItems = interactFreeItems;
         return;
         }
 
     // convert to BEDs for linked feature display
     struct interact *inters = tg->items, *inter;
     struct linkedFeatures *lfs = NULL, *lf;
     struct hash *intersCluster = hashNew(0);
     boolean doColor = !tg->colorShades;
     if (!tInfo->clusterMode)
@@ -615,31 +620,30 @@
     {
     char *otherChrom = interactOtherChrom(inter);
     safef(itemBuf, sizeof itemBuf, "%s", inter->name);
     char *statusBuf = interactMouseover(inter, otherChrom);
 
     // Pick colors
 
     #define MG_LIGHT_MAGENTA    0xffffbbff
     #define MG_LIGHT_GRAY       0xff909090
     color = interactItemColor(tg, inter, hvg, scoreMin, scoreMax);
     if (vis == tvDense && otherChrom && color == MG_BLACK)
         // use highlight color for other chrom items in dense mode
         color = MG_LIGHT_MAGENTA;
     int peakColor = (color == MG_BLACK || tg->colorShades) ? MG_LIGHT_MAGENTA : MG_LIGHT_GRAY;
     
-    
     if (otherChrom)
         {
         // different chromosomes
         //      draw below same chrom items, if any
         int height = 0;
         int yOffOther = yOff;
         if (vis == tvDense)
             {
             height = tg->height;
             }
         else
             {
             height = tInfo->otherHeight/2;
             yOffOther = yOff + tInfo->sameHeight;
             }
@@ -878,31 +882,35 @@
         int x = x2 + tl.mWidth/2;
         struct interactLfEndNames *ends = getInteractLfEndNames(lf);
         char *rightLabel = (lf->orientation < 0 ? ends->source : ends->target);
         int w = mgFontStringWidth(font, rightLabel);
         hvGfxTextCentered(hvg, x, y, w, tg->heightPer, color, font, rightLabel);
         }
     }
 }
 
 void interactDrawItems(struct track *tg, int seqStart, int seqEnd,
         struct hvGfx *hvg, int xOff, int yOff, int width, 
         MgFont *font, Color color, enum trackVisibility vis)
 /* Draw a list of interact structures. */
 {
 struct interactTrackInfo *tInfo = (struct interactTrackInfo *)tg->customPt;
+#ifdef MR_FORCE_PACK
+if (tInfo->clusterMode || isLinkedFeaturesMode(tg) || differentString(virtModeType, "default"))
+#else
 if (tInfo->clusterMode || isLinkedFeaturesMode(tg))
+#endif
     {
     tg->drawItemAt = interactLinkedFeaturesDrawAt;
     linkedFeaturesDraw(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis);
     }
 else
     // curve, etc. connector display
     drawInteractItems(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis);
 }
 
 void interactMethods(struct track *tg)
 /* Interact track type methods */
 {
 tg->bedSize = 12;
 linkedFeaturesMethods(tg);         // for most vis and mode settings
 tg->loadItems = interactLoadItems;