Code

git-gui: Fix bind errors when switching repository chooser panels
authorShawn O. Pearce <spearce@spearce.org>
Fri, 12 Oct 2007 15:15:02 +0000 (11:15 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Sat, 13 Oct 2007 03:05:59 +0000 (23:05 -0400)
We need to remove any variable traces we may have installed
when the panel is destroyed as the trace may attempt to use
a widget that no longer exists on this panel.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
lib/choose_repository.tcl

index 46d5b77c006b896472bda2d87f6cbc47f1084824..ab8e620c70bbaecd0397dd497c218f282da5ed92 100644 (file)
@@ -352,6 +352,7 @@ method _do_new {} {
        pack $w_body.where -fill x
 
        trace add variable @local_path write [cb _write_local_path]
+       bind $w_body.h <Destroy> [list trace remove variable @local_path write [cb _write_local_path]]
        update
        focus $w_body.where.t
 }
@@ -477,6 +478,10 @@ method _do_clone {} {
 
        trace add variable @local_path write [cb _update_clone]
        trace add variable @origin_url write [cb _update_clone]
+       bind $w_body.h <Destroy> "
+               [list trace remove variable @local_path write [cb _update_clone]]
+               [list trace remove variable @origin_url write [cb _update_clone]]
+       "
        update
        focus $args.origin_t
 }
@@ -948,6 +953,7 @@ method _do_open {} {
        pack $w_body.where -fill x
 
        trace add variable @local_path write [cb _write_local_path]
+       bind $w_body.h <Destroy> [list trace remove variable @local_path write [cb _write_local_path]]
        update
        focus $w_body.where.t
 }