git-gui: Start UI with the index locked.

Because we immediately start a rescan operation, but do so slightly
delayed (by 1 ms, to let the UI show before we start forking off
git processes), we can't let the user try to activate any of the
restricted GUI commands before the 1 ms timer expires and we kick
off the rescan.

So now we lock the index before we enter the Tk event loop, ensuring
that it is impossible for the user to inject a conflicting UI event
before our rescan can begin.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Shawn O. Pearce 2006-11-18 03:31:25 -05:00
parent a49c67d1ff
commit 53716a7bc9

View File

@ -211,7 +211,7 @@ proc lock_index {type} {
uplevel #0 $w disabled uplevel #0 $w disabled
} }
return 1 return 1
} elseif {$index_lock_type eq {begin-update} && $type eq {update}} { } elseif {$index_lock_type eq "begin-$type"} {
set index_lock_type $type set index_lock_type $type
return 1 return 1
} }
@ -2906,4 +2906,5 @@ if {!$single_commit} {
populate_pull_menu .mbar.pull populate_pull_menu .mbar.pull
populate_push_menu .mbar.push populate_push_menu .mbar.push
} }
lock_index begin-read
after 1 do_rescan after 1 do_rescan