diff options
-rw-r--r-- | library/bgerror.tcl | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/library/bgerror.tcl b/library/bgerror.tcl index 5f799c9..15f9448 100644 --- a/library/bgerror.tcl +++ b/library/bgerror.tcl @@ -4,7 +4,7 @@ # posts a dialog box with the error message and gives the user a chance # to see a more detailed stack trace. # -# RCS: @(#) $Id: bgerror.tcl,v 1.5 1999/04/16 01:51:25 stanton Exp $ +# RCS: @(#) $Id: bgerror.tcl,v 1.6 2000/04/10 23:19:58 ericm Exp $ # # Copyright (c) 1992-1994 The Regents of the University of California. # Copyright (c) 1994-1996 Sun Microsystems, Inc. @@ -23,6 +23,21 @@ proc bgerror err { global errorInfo tcl_platform + + # Normally, the bgerror dialog is made transient with respect to "." (due + # to the implementation of tk_dialog). On some systems (like Windows), + # when a window is withdraw or iconified, it's transient windows go with + # it. Unfortunately, there is also a grab on the dialog (again because of + # the implementation of tk_dialog). So if "." is withdrawn or iconified + # and the user gets a bgerror, the app will hang, for no apparent reason. + # + # One (somewhat hacky) way to address this is to un-transient the dialog + # if "." is withdrawn or iconified. + after idle { + if { ![winfo viewable .bgerrorDialog] } { + wm transient .bgerrorDialog {} + } + } # save errorInfo which would be erased in the catch below otherwise. set info $errorInfo ; |