f30e46e4d2ee9f48ef87cc87b95159c37dffeb6a
galt
  Wed Feb 17 12:59:44 2016 -0800
Fixes #16818. Gets better cross-all-windows error handling working for bigDataUrl/network tracks.

Squashed commit of the following:

commit cdf9db633c9018538aabf9c8346eabee63b5a3cf
Author: Galt Barber <galt@soe.ucsc.edu>
Date:   Wed Feb 17 12:55:47 2016 -0800

Fixed width in bigWarn.c and background in multiWig.c

commit 3620dcd0912660fabbd993df4af119cc03676545
Author: Galt Barber <galt@soe.ucsc.edu>
Date:   Tue Feb 16 11:53:32 2016 -0800

Initial checking for multi-region all-windows warn. This is an attempt to handle timeout high-level errors better, when a track is taking too long to finish loading; and to handle the network errors across all of the windows together, i.e. using the entire screen width to display the errors, only diplaying the first error, and only drawing for the first window.

diff --git src/hg/hgTracks/multiWig.c src/hg/hgTracks/multiWig.c
index 7c05cff..534a6a4 100644
--- src/hg/hgTracks/multiWig.c
+++ src/hg/hgTracks/multiWig.c
@@ -403,34 +403,41 @@
 {
 struct track *subtrack;
 boolean errMsgShown = FALSE;
 int y = yOff;
 boolean errMsgFound = FALSE;
 // determine if any subtracks had errors and count them up
 for (subtrack = tg->subtracks; subtrack != NULL; subtrack = subtrack->next)
     {
     if (isSubtrackVisible(subtrack) )
 	{
 	if (subtrack->networkErrMsg)
 	    errMsgFound = TRUE;
 	}
     }
 
-if (errMsgFound)
+if (errMsgFound && currentWindow==windows)  // first window
     {
+    int clipXBak, clipYBak, clipWidthBak, clipHeightBak;
+    hvGfxGetClip(hvg, &clipXBak, &clipYBak, &clipWidthBak, &clipHeightBak);
+    hvGfxUnclip(hvg);
+    hvGfxSetClip(hvg, fullInsideX, yOff, fullInsideWidth, tg->height);
+    // use the height of the multiWig 
     Color yellow = hvGfxFindRgb(hvg, &undefinedYellowColor);
-    hvGfxBox(hvg, xOff, yOff, width, tg->height, yellow);
+    hvGfxBox(hvg, fullInsideX, yOff, fullInsideWidth, tg->height, yellow);
+    hvGfxUnclip(hvg);
+    hvGfxSetClip(hvg, clipXBak, clipYBak, clipWidthBak, clipHeightBak);
     }
 
 struct wigCartOptions *wigCart = tg->wigCartData;
 struct wigGraphOutput *wgo = tg->wigGraphOutput;
 
 int numTrack = 0;
 for (subtrack = tg->subtracks; subtrack != NULL; subtrack = subtrack->next)
     {
     if (isSubtrackVisible(subtrack))
 	{
         if (!subtrack->networkErrMsg || !errMsgShown)
 	    {
 	    if (subtrack->networkErrMsg)
 	       errMsgShown = TRUE;
 	    wgo->numTrack = numTrack++;