gitk: Do only the parts of the layout that are needed
authorPaul Mackerras <paulus@samba.org>
Wed, 29 Aug 2007 11:45:21 +0000 (21:45 +1000)
committerPaul Mackerras <paulus@samba.org>
Wed, 29 Aug 2007 11:45:21 +0000 (21:45 +1000)
commit0380081c65c3e8a46caad9aebe8e97ff65510453
tree9b86b7a94a0396d6282a791565347bea3f2f947a
parent8f0bc7e95e41673a853a53e17708c6f4f46e6420
gitk: Do only the parts of the layout that are needed

This changes layoutrows and optimize_rows to make it possible to lay
out only a little bit more of the graph than is visible, rather than
having to lay out the whole graph from top to bottom.  To lay out
some of the graph without starting at the top, we use the new make_idlist
procedure for the first row, then lay it out proceeding downwards
as before.  Empty list elements in rowidlist are used to denote rows
that haven't been laid out yet.

Optimizing happens much as before except that we don't try to optimize
unless we have three consecutive rows laid out (or the top 2 rows).
We have a new list, rowisopt, to record which rows have been optimized.

If we change a row that has already been drawn, we set a flag which
causes drawcommits to throw away everything drawn on the canvas and redraw
the visible rows.

Signed-off-by: Paul Mackerras <paulus@samba.org>
gitk