Fossil

Check-in [70ba2951]
Login

Check-in [70ba2951]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Draw the upward riser arrow just a short ways, not to the top of screen, for nodes whose next child is off-screen.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | short-offscreen-risers
Files: files | file ages | folders
SHA1: 70ba2951f2802a2f76691bb9f04ffddc14b95076
User & Date: drh 2016-03-18 14:35:16.888
Context
2016-03-19
00:55
Update the built-in SQLite to include the "PRAGMA integrity_check" fix. ... (check-in: 9245076e user: drh tags: short-offscreen-risers)
2016-03-18
14:35
Draw the upward riser arrow just a short ways, not to the top of screen, for nodes whose next child is off-screen. ... (check-in: 70ba2951 user: drh tags: short-offscreen-risers)
14:10
Fix a case in the graph renderer where a non-leaf node whose immediate child is not on screen did now show the arrow going straight up to the top of the page. ... (check-in: da4a3b4f user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/graph.c.
325
326
327
328
329
330
331


332
333
334
335
336

337
338
339
340
341
342
343
344
    while( p->mxRail<GR_MAX_RAIL && pRow->mergeDown>(BIT(p->mxRail+1)-1) ){
      p->mxRail++;
    }
  }
}

/*


** Draw a riser from pRow to the top of the graph
*/
static void riser_to_top(GraphRow *pRow){
  u64 mask = BIT(pRow->iRail);
  pRow->aiRiser[pRow->iRail] = 0;

  while( pRow ){
    pRow->railInUse |= mask;
    pRow = pRow->pPrev;
  }
}


/*







>
>
|

|


>
|







325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
    while( p->mxRail<GR_MAX_RAIL && pRow->mergeDown>(BIT(p->mxRail+1)-1) ){
      p->mxRail++;
    }
  }
}

/*
** pRow has direct children, but they are all off-screen and not
** shown on the current graph.  Therefore, draw an arrow up from
** pRow but terminate it in empty space.
*/
static void riserToOffScreenChild(GraphRow *pRow){
  u64 mask = BIT(pRow->iRail);
  pRow->aiRiser[pRow->iRail] = 0;
  int n = 0;
  while( pRow && (n++)<3 ){
    pRow->railInUse |= mask;
    pRow = pRow->pPrev;
  }
}


/*
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
    int parentRid;

    if( pRow->iRail>=0 ){
      if( pRow->pChild==0 && !pRow->timeWarp ){
        if( omitDescenders || pRow->isLeaf ){
          /* no-op */
        }else{
          riser_to_top(pRow);
        }
      }
      continue;
    }
    if( pRow->isDup ){
      continue;
    }else{







|







478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
    int parentRid;

    if( pRow->iRail>=0 ){
      if( pRow->pChild==0 && !pRow->timeWarp ){
        if( omitDescenders || pRow->isLeaf ){
          /* no-op */
        }else{
          riserToOffScreenChild(pRow);
        }
      }
      continue;
    }
    if( pRow->isDup ){
      continue;
    }else{
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
      }
    }
    mask = BIT(pRow->iRail);
    pRow->railInUse |= mask;
    if( pRow->pChild ){
      assignChildrenToRail(pRow);
    }else if( !pRow->isLeaf ){
      riser_to_top(pRow);
    }
    if( pParent ){
      for(pLoop=pParent->pPrev; pLoop && pLoop!=pRow; pLoop=pLoop->pPrev){
        pLoop->railInUse |= mask;
      }
    }
  }







|







521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
      }
    }
    mask = BIT(pRow->iRail);
    pRow->railInUse |= mask;
    if( pRow->pChild ){
      assignChildrenToRail(pRow);
    }else if( !pRow->isLeaf ){
      riserToOffScreenChild(pRow);
    }
    if( pParent ){
      for(pLoop=pParent->pPrev; pLoop && pLoop!=pRow; pLoop=pLoop->pPrev){
        pLoop->railInUse |= mask;
      }
    }
  }
Changes to src/timeline.c.
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
    @   if( p.mi.length ) cls += " merge";
    @   if( p.f&1 ) cls += " leaf";
    @   var n = drawBox(cls,p.bg,p.x,p.y);
    @   n.id = "tln"+p.id;
    @   n.onclick = clickOnNode;
    @   n.style.zIndex = 10;
    if( !omitDescenders ){
      @   if( p.u==0 ) drawUpArrow(p,{x: p.x, y: -node.h},p.fg);
      @   if( p.d ) drawUpArrow({x: p.x, y: btm-node.h/2},p,p.fg);
    }
    @   if( p.mo>=0 ){
    @     var x0 = p.x + node.w/2;
    @     var x1 = p.mo*railPitch + node.w/2;
    @     var u = rowinfo[p.mu-1];
    @     var y1 = miLineY(u);







|







899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
    @   if( p.mi.length ) cls += " merge";
    @   if( p.f&1 ) cls += " leaf";
    @   var n = drawBox(cls,p.bg,p.x,p.y);
    @   n.id = "tln"+p.id;
    @   n.onclick = clickOnNode;
    @   n.style.zIndex = 10;
    if( !omitDescenders ){
      @   if( p.u==0 ) drawUpArrow(p,{x: p.x, y: p.y-40},p.fg);
      @   if( p.d ) drawUpArrow({x: p.x, y: btm-node.h/2},p,p.fg);
    }
    @   if( p.mo>=0 ){
    @     var x0 = p.x + node.w/2;
    @     var x1 = p.mo*railPitch + node.w/2;
    @     var u = rowinfo[p.mu-1];
    @     var y1 = miLineY(u);