summaryrefslogtreecommitdiff
path: root/gitk
AgeCommit message (Collapse)AuthorFilesLines
2008-05-11gitk: Show current row number and total number of rowsLibravatar Paul Mackerras1-39/+28
This adds a couple of fields in the bar just below the upper panes that show the row number of the currently selected commit, and how many rows are displayed in total. The latter increments as commits are read in, and thus functions to show that progress is being made. This therefore also removes the code that showed progress using a green oscillating bar in the progress bar window (which some people disliked). Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-05-11Merge branch 'master' into devLibravatar Paul Mackerras1-15/+181
2008-05-11gitk: Allow users to view diffs in external diff viewerLibravatar Thomas Arcila1-2/+145
This allows gitk to run an external diff viewer such as meld. Right-click on a file in the file list view gives "External diff" popup menu entry, which launches the selected external diff tool. The menu entry is only active in "Patch" mode, not in "Tree" mode. The program to run to display the diff is configurable through Edit/Preference/External diff tool. The program is run with two arguments, being the names of files containing the two versions to diff. Gitk will create temporary directories called .gitk-tmp.<pid>/<n> to place these files in, and remove them when it's finished. If the file doesn't exist in one or other revision, gitk will supply /dev/null as the name of the file on that side of the diff. This may need to be adjusted for Windows or MacOS. [paulus@samba.org - cleaned up and rewrote some parts of the patch.] Signed-off-by: Thomas Arcila <thomas.arcila@gmail.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-05-10gitk: Synchronize highlighting in file view for 'f' and 'b' commandsLibravatar Paul Mackerras1-7/+25
This is based on a patch by Eric Raible <raible@gmail.com>, but does things a bit more simply. Previously, 'b', backspace, and delete all did the same thing. This changes 'b' to perform the inverse of 'f'. And both of them now highlight the filename of the currently diff. This makes it easier to review and navigate the diffs associated with a particular commit using only f, b, and space because the filename of the currently display diff will be dynamically highlighted. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-05-09gitk: Make updates go fasterLibravatar Paul Mackerras1-15/+210
This goes back to the method of doing updates where we translate the revisions we're given to SHA1 ids and then remove the ones we've asked for before or that we've already come across. This speeds up updates enormously in most cases since it means git log doesn't have to traverse large parts of the tree. We used to do this, but it had bugs, and commit 468bcaedbb1589f16955e63b6bfba01c2f53e433 (gitk: Don't filter view arguments through git rev-parse) went to the slower method to avoid the bugs. In order to do this properly, we have to parse the command line and understand all the flag arguments. So this adds a parser that checks all the flag arguments. If there are any we don't know about, we disable the optimization and just pass the whole lot to git log (except for -d/--date-order, which we remove from the list). With this we can then use git rev-parse on the non-flag arguments to work out exactly what SHA1 ids are included and excluded in the list, which then enables us to ask for just the new ones when updating. One wrinkle is that we have to turn symmetric diff arguments (of the form a...b) back into symmetric diff form so that --left-right still works, as git rev parse turns a...b into a b ^merge_base(a,b). This also updates a couple of copyright notices. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-05-03gitk: Disable "Reset %s branch to here" when on a detached headLibravatar Michele Ballabio1-1/+5
When we are on a detached head - since gitk does not display where we are - reset has no sense, so disable the relevant line on the context menu, and point out to the user that we are on a detached head. Otherwise, a reset from gitk when on a detached head returns the error: can't read "headids()": no such element in array can't read "headids()": no such element in array while executing "removehead $headids($name) $name" (procedure "movehead" line 4) invoked from within "movehead $newhead $mainhead" (procedure "readresetstat" line 20) invoked from within "readresetstat file4" ("eval" body line 1) invoked from within "eval $script" (procedure "dorunq" line 9) invoked from within "dorunq" ("after" script) [paulus@samba.org: changed menu item to "Detached head: can't reset"] Signed-off-by: Michele Ballabio <barra_cuda@katamail.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-04-28gitk: Fix handling of tree file list with special chars in namesLibravatar Paul Mackerras1-2/+3
Alex Riesen pointed out that displaying a commit in 'tree' mode fails if some files have names with special characters such as '{' or '}' in them, due to the fact that we treat the line returned from git ls-tree as a Tcl list at one point. This fixes it by doing what I originally intended but didn't quite get right. We split the line from git ls-tree at the first tab and treat the part before the tab as a list (which is OK since it doesn't have special characters in it) and the part after the tab as the filename. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-04-26gitk: Reorganize processing of arguments for git logLibravatar Paul Mackerras1-77/+114
This moves the scanning of the argument list for each view into a new function, parseviewargs, which is called from start_rev_list. This also makes the date mode and the merge mode be per-view rather than global. In merge mode, we work out the list of relevant files in a new function called from start_rev_list, so it will be updated on File->Reload. Plus we now do that after running the argscmd, so if we have one and it generates a -d or --merge option they will be correctly handled now. The other thing this does is to make errors detected in start_rev_list not be fatal. Now instead of doing exit 1 we just pop up and error window and put "No commits selected" in the graph pane. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-04-06gitk: Fix changing colors through Edit->PreferencesLibravatar Gerrit Pape1-3/+3
With tcl/tk8.5 the lset command seems to behave differently. When changing the background color through Edit->Preferences, the changes are applied, but new dialogs, such as View->New view... barf with Error: unknown color name "{#ffffff}" Additionally when closing gitk, and starting it up again, a bad value has been saved to ~/.gitk, preventing gitk from running properly; it fails with Error in startup script: unknown color name "{#ffffff}" ... This commit fixes the problem by changing the color dialogs to pass the empty string {} as the list index to choosecolor. This causes the lset and lindex commands used by choosecolor to use and set the whole variable (bgcolor, fgcolor or selectbgcolor) rather than treating them as a 1-element list. Tested with tcl/tk8.4 and 8.5. Dmitry Potapov reported this problem through http://bugs.debian.org/472615 Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-11Merge branch 'master' into devLibravatar Paul Mackerras1-23/+84
2008-03-11gitk: Avoid Tcl error when switching viewsLibravatar Paul Mackerras1-3/+1
Michele Ballabio <barra_cuda@katamail.com> pointed out that gitk sometimes throws a Tcl error (can't read "yscreen") when switching views, and proposed a patch. This is a different way of fixing it which is a bit neater. Basically, in showview we only set yscreen if the selected commit is on screen to start with, and then we only scroll the canvas to bring it onscreen if yscreen is set and the same commit exists in the new view. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-11[PATCH] gitk: Don't show local changes when we there is no work treeLibravatar David Aguilar1-1/+6
Launching gitk on a bare repository or a .git directory would previously show the work tree as having removed all files. We now inhibit showing local changes when gitk is not launched from within a work tree. Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-10[PATCH] gitk: Add horizontal scrollbar to the diff viewLibravatar Pekka Kaitaniemi1-6/+14
Adding horizontal scroll bar makes the scrolling feature more discoverable to the users. The horizontal scrollbar is a bit narrower than vertical ones so we don't make too big impact on available screen real estate. The text and scrollbar widget layout is done using grid geometry manager. An interesting side effect of Tk scrollbars is that the "elevator" size changes depending on the visible content. So the horizontal scrollbar "elevator" changes as the user scrolls the view up and down. Signed-off-by: Pekka Kaitaniemi <kaitanie@cc.helsinki.fi> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-10[PATCH] gitk: make autoselect optionalLibravatar Jeff King1-3/+14
Whenever a commit is selected in the graph pane, its SHA1 is automatically put into the selection buffer for cut and paste. However, some users may find this behavior annoying since it can overwrite something they actually wanted to keep in the buffer. This makes the behavior optional under the name "Auto-select SHA1", but continues to default to "on". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-10[PATCH] gitk: Mark another string for translationLibravatar Michele Ballabio1-1/+1
Signed-off-by: Michele Ballabio <barra_cuda@katamail.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-10[PATCH] Add an --argscmd flag to get the list of refs to showLibravatar Yann Dirson1-10/+40
This allows gitk to be used to display a different set of refs each the display is refreshed. This is useful when gitk is called from other porcelain suites, for doing such things as displaying the set of patches in a patch stack. The user specifies a command as the argument to the --argscmd option. The command is run initially and each time the display is refreshed, and is expected to generate a list of commit IDs, one per line. Those commits are appended to the commits passed on the command-line when constructing the git log command to be executed. The command is considered to be an attribute of a view, and has its own field in the saved view, and an edit field in the view editor. Signed-off-by: Yann Dirson <ydirson@altern.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-10gitk: Only restore window size from ~/.gitk, not positionLibravatar Paul Mackerras1-2/+10
This also limits the window size to the screen size. That is better than nothing, but it isn't perfect, since ideally we would take into account window decorations, and things such as gnome panels or the Mac OS X dock and menu bar, but I don't know how to do that. On Cygwin this is as good as restoring the whole geometry (size and position) at working around the Cygwin Tk bugs, according to Mark Levedahl. Tested-by: Mark Levedahl <mlevedahl@gmail.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-07gitk: Fix problem with target row not being in scroll regionLibravatar Paul Mackerras1-3/+6
Since we limit the rate at which we do updates to the canvas scrolling regions, it's possible to get into selectline for a row that is outside the currently-set scrolling region. When this happens, selectline can't scroll to show the selected line, and as a consequence, drawvisible chooses some other bogus row to be the target row. This fixes it by calling setcanvscroll from selectline in this case. We also set selectedline (and currentid) before calling drawvisible so that drawvisible makes the right choice of target row. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-07gitk: Avoid a crash in selectline if commitinfo($id) isn't setLibravatar Paul Mackerras1-1/+4
Occasionally I see a crash in selectline with commitinfo($id) not set. This makes sure it is set by calling getcommit $id if it isn't. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-04gitk: Fix some corner cases in computing vrowmod and displayorderLibravatar Paul Mackerras1-22/+23
First, insertfakerow and removefakerow weren't updating vrowmod, and hence displayorder was not getting updated when it needed to, in the case where the fake row was being inserted into or removed from the last arc. The comparison of varctok vs vtokmod was moved into modify_arc for these cases (and for the call in rewrite_commit) to avoid duplicating the extra code needed. Second, the logic in update_arcrows didn't end up truncating displayorder and unsetting cached_commitrow if the first modified row was in the last arc. This fixes these problems. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-04gitk: Correct a few strings and comments to say "git log"Libravatar Paul Mackerras1-5/+5
... instead of "git rev-list", since we now use git log for generating the list of commits. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-03gitk: Don't filter view arguments through git rev-parseLibravatar Paul Mackerras1-47/+22
Previously we passed the arguments indicating what commits the user wants to view through git rev-parse to get a list of IDs (positive and negative), then gave that to git log. This had a couple of problems, notably that --merge and --left-right didn't get handled properly. Instead we now just pass the original arguments to git log. When doing an update, we append --not followed by the list of commits we have seen that have no children, since we have got (or will get) their ancestors from the first git log. If the first git log isn't finished yet, we might get some duplicates from the second git log, but that doesn't cause any problem. Also get rid of the unused vnextroot variable. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-03-03gitk: Fix problems with target row stuffLibravatar Paul Mackerras1-54/+51
Occasionally the target row stuff would scroll the display to some uninteresting commit while reading. There were two problems: one was that drawvisible would set targetrow even if there was no target previously and no row selected, and the other was that it was possible for the target row to get pushed down past numcommits, if drawvisible was called after rows were added but before layoutmore got run. The first problem is fixed by just not setting targetrow/id unless there is a selected row or they were set previously. The second problem is fixed by updating numcommits immediately new rows are added. This leads to a simplification of layoutmore and chewcommits but also means that some of the things that were done in layoutmore now need to be done elsewhere, since layoutmore can no longer use numcommits to know how much it has seen previously. Hence the changes to getcommits, initlayout and setcanvscroll. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-02-24gitk: Handle updating with path limiting betterLibravatar Paul Mackerras1-4/+55
When updating the graph, gitk uses a git log command with commit limiting in order to get just the new commits. When path limiting is also in effect, git log rewrites the parents of the commits it outputs in order to represent just the subgraph that modifies the listed paths, but it doesn't rewrite the parents on the boundary of the graph. The result is that when updating, git log does not give gitk the information about where the new commits join in to the existing graph. This solves the problem by explicitly rewriting boundary parents when updating. If we are updating and are doing path limiting, then when gitk finds an unlisted commit (one where git log puts a "-" in front of the commit ID to indicate that it isn't actually part of the graph), then gitk will execute: git rev-list --first-parent --max-count=1 $id -- paths... which returns the first ancestor that affects the listed paths. (Currently gitk executes this synchronously; it could do it asynchronously, which would be more complex but would avoid the possibility of the UI freezing up if git rev-list takes a long time.) Then, if the result is a commit that we know about, we rewrite the parents of the children of the original commit to point to the new commit. That is mostly a matter of adjusting the parents and children arrays and calling fix_reversal to fix up the graph. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-02-18gitk: Fix bug where arcs could get lostLibravatar Paul Mackerras1-1/+5
Because we weren't fixing up vlastins when moving an arc from one place to another, it was possible for us later to decide to move an arc to the wrong place, and end up with an arc disconnected from the rest of the graph. This fixes it by updating vlastins when necessary. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-02-16Merge branch 'master' into devLibravatar Paul Mackerras1-55/+67
2008-02-16gitk: Cope better with getting commits that we have already seenLibravatar Paul Mackerras1-7/+18
This fixes a bug in updating the graph after we have cherry-picked a commit in gitk and then added some new stuff externally. First, we weren't updating viewincl with the new head added by the cherry- pick. Secondly, getcommitlines was doing bad things if it saw a commit that was already in the graph (was already in an arc). This fixes both things. If getcommitlines sees a commit that is already in the graph, it ignores it unless it was not listed before and is listed now. In that case it doesn't assign it a new arc now, and doesn't re-add the commit to its arc. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-02-14[PATCH] gitk: Heed the lines of context in merge commitsLibravatar Johannes Sixt1-1/+2
There is an edit box where the number of context lines can be chosen. But it was only used when regular diffs were displayed, not for merge commits. This fixes it. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-02-13[PATCH] gitk: learn --show-all outputLibravatar Linus Torvalds1-7/+8
It's really not very easy to visualize the commit walker, because - on purpose - it obvously doesn't show the uninteresting commits! We will soon add a "--show-all" flag to the revision walker, which will make it show uninteresting commits too, and they'll have a '^' in front of them. This is to update 'gitk' to show those negative commits in gray to futureproof it. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-02-13gitk: Fix cherry-picking to insert a real row not a fake rowLibravatar Paul Mackerras1-17/+59
The insertrow/removerow functions were really only suitable for inserting/removing a fake row such as the ones used for showing the local changes. When used to insert a real new row from a cherry-pick, they left things in an inconsistent state which then caused various strange layout errors. This renames insertrow/removerow to insertfakerow/removefakerow and adds a new insertrow that does actually go to all the trouble of creating a new arc and setting it up. This is more work but keeps things consistent. This also fixes a bug where cherrypick was not setting mainheadid, and one where selectline wasn't always resulting in targetrow/id being set to the selected row/id. Also insert/removefakerow now adjust numcommits and call setcanvscroll. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-02-12[PATCH] gitk: properly deal with tag names containing / (slash)Libravatar Gerrit Pape1-5/+1
When creating a tag through gitk, and the tag name includes a slash (or slashes), gitk errors out in a popup window. This patch makes gitk use 'git tag' to create the tag instead of modifying files in refs/tags/, which fixes the issue; if 'git tag' throws an error, gitk pops up with the error message. The problem was reported by Frédéric Brière through http://bugs.debian.org/464104 Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-02-12[PATCH] gitk: Add checkbutton to ignore space changesLibravatar Steffen Prohaska1-0/+13
Ignoring space changes can be helpful. For example, a commit claims to only reformat source code and you quickly want to verify if this claim is true. Or a commit accidentally changes code formatting and you want to focus on the real changes. In such cases a button to toggle of whitespace changes would be quite handy. You could quickly toggle between seeing and ignoring whitespace changes. This commit adds such a checkbutton right above the diff view. However, in general it is a good thing to see whitespace changes and therefore the state of the checkbutton is not saved. For example, space changes might happen unintentionally. But they are real changes yielding different sha1s for the blobs involved. Signed-off-by: Steffen Prohaska <prohaska@zib.de> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-02-12[PATCH] gitk: Fix "Key bindings" messageLibravatar Michele Ballabio1-39/+39
The "Key bindings" message under the "Help" menu was too long and could not be parsed by the translation engine. Fix both issues by translating one line at a time. Signed-off-by: Michele Ballabio <barra_cuda@katamail.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-15gitk: Fix bug causing Tcl error when no commits are selectedLibravatar Paul Mackerras1-1/+1
Some of the stuff that commit 31c0eaa8cc10944ebca8aa31fb59f0b77b1b6e77 added to drawvisible isn't appropriate to do when we have no commits, and this was causing a Tcl error if gitk was invoked in such a fashion that no commits were selected. This fixes it by bailing out of drawvisible early if there are no commits displayed. Bug reported by Johannes Sixt. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-15gitk: Fix bug where editing an existing view would cause an infinite loopLibravatar Paul Mackerras1-0/+1
This fixes a bug where changing the commit range or file list for an existing view and then clicking OK would cause gitk to go into an infinite loop. The problem was that newviewok was invoking reloadcommits via "run reloadcommits", but reloadcommits wasn't explicitly returning 0, and whatever it was returning was causing dorunq to run it over and over again. This fixes it by making reloadcommits return 0. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-15gitk: Select something appropriate on cherry-pick, branch reset and checkoutLibravatar Paul Mackerras1-1/+4
This makes gitk select the new commit when cherry-picking, and select the new checked-out head when resetting or checking out a branch. This feels more natural because the user is usually more interested in that commit now than whatever was selected before. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-14[PATCH] gitk: make Ctrl "+" really increase the font sizeLibravatar Johannes Schindelin1-0/+1
Only Ctrl "=" was bound to increase the font size, probably because English keyboards have the plus on the same key as the equal sign. However, not the whole world is English, and at least with some other keyboard layouts, Ctrl "+" did not work as documented. Noticed by Stephan Hennig. Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-13gitk: Select head of current branch by defaultLibravatar Paul Mackerras1-20/+15
Instead of selecting the first commit that appears, this makes gitk select the currently checked out head, if the user hasn't explicitly selected some other commit by the time it appears. If the head hasn't appeared by the time the graph is complete, then we select the first real commit. This applies both for graph updates and when the graph is being read in initially. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-12gitk: Fix a bug in make_disporderLibravatar Paul Mackerras1-1/+1
The make_disporder function has an optimization where it assumed that if displayorder was already long enough and the first entry in it for a particular arc was non-null, then the whole arc was present. This turns out not to be true in some circumstances, since we can add a commit to an arc (which truncates displayorder to the previous end of that arc), then call make_disporder for later arcs (which will pad displayorder with null elements), then call make_disporder for the first arc - which won't update the null elements. This fixes it by changing the optimization to check the last element for the arc instead of the first. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-11gitk: Fix typo in user message.Libravatar Christian Stimming1-3/+3
Signed-off-by: Christian Stimming <stimming@tuhh.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-01-10gitk: Fix handling of flag argumentsLibravatar Paul Mackerras1-3/+6
Despite the name, the --revs-only flag to git rev-parse doesn't make it output only revision IDs. It makes it output only arguments that are suitable for giving to git rev-list. So make start_rev_list and updatecommits cope with arguments output by git rev-parse that aren't revision IDs. This way we won't get an error when an argument such as "-300" has been given to gitk and the view is updated. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-09Merge branch 'master' into devLibravatar Paul Mackerras1-3/+3
2008-01-09[PATCH] gitk: use user-configured background in view definition dialogLibravatar Gerrit Pape1-3/+3
Have the text fields in the view definition dialog (View->New view...) use the background color as configured through the preferences, instead of hard-coded 'white'. This was suggested by Paul Wise through http://bugs.debian.org/457124 Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-07gitk: Index [fnvr]highlights by id rather than rowLibravatar Paul Mackerras1-40/+33
This means that we don't have to keep clearing them out whenever we change the row numbers for some commits. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-06Merge branch 'master' into devLibravatar Paul Mackerras1-60/+45
2008-01-06gitk: Restore some widget options whose defaults changed in Tk 8.5Libravatar Paul Mackerras1-60/+45
The default options for panedwindows in Tk 8.5 make the sash virtually invisible -- the handle is not shown and the relief is flat. This puts the defaults back to showing the handle and a raised relief on the sash, as in Tk 8.4. This uses the option command to do this, and also uses the option command to set the default font for various UI elements to the UI font ("uifont"). Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-06gitk: Fix potential bug with fake commit IDs in renumbervarcLibravatar Paul Mackerras1-9/+28
When a fake row is added, we add its (fake) ID to the children list for its (fake) parent. If renumbervarc were to then renumber the parent it would incorrectly use the fake child. This avoids the problem by adding a last_real_child procedure which won't return a fake ID, and using it in renumbervarc. For symmetry this also adds a first_real_child procedure and uses it in ordertoken. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-02gitk: Fix a couple of bugs in the find functionLibravatar Paul Mackerras1-4/+11
First, findmore would sometimes get a Tcl error due to relying on varcorder and vrownum having valid values for the rows being searched, but they may not be valid unless update_arcrows is called, so this makes findmore call update_arcrows if necessary. Secondly, in the "touching paths" and "adding/removing string" modes, findmore was treating fhighlights($row) == -1 as meaning the row matches, whereas it only means that we haven't received an answer from the external git diff-tree process about it yet. This fixes it. Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-01-02gitk: Fix some corner cases in the targetid/targetrow stuffLibravatar Paul Mackerras1-18/+51
* Make sure targetrow is never >= numcommits * Don't try to do anything about the target row if the targetid is no longer in the view; it'll just cause Tcl errors * In insertrow, increment targetrow if we are inserting the fake commit at or before the target row * In removerow, if we are removing the target row, make it the next one instead. Signed-off-by: Paul Mackerras <paulus@samba.org>
2007-12-30gitk: Keep the same commits visible as other commits come inLibravatar Paul Mackerras1-13/+42
Since commits come in out of order and get sorted as we see them, we can have commits coming in and being placed before the commits that are visible in the graph display pane. Previously we just displayed a certain range of row numbers, meaning that when incoming commits were placed before the displayed range, the displayed commits were displaced downwards. This makes it so that we keep the same set of commits displayed, unless the user explicitly scrolls the pane, in which case it scrolls as expected. We do this by having a "target" commit which we try to keep in the same visible position. If commits have come in before it we scroll the canvases by the number of rows that it has moved in the display order. This also fixes a bug in rowofcommit where it would test cached_commitrow before possibly calling update_arcrows, which is where cached_commitrow gets invalidated if things have changed. Now we call update_arcrows if necessary first. Signed-off-by: Paul Mackerras <paulus@samba.org>