diff --git a/ide/fpcompil.pas b/ide/fpcompil.pas index 13561e9b09..9504b57dbb 100644 --- a/ide/fpcompil.pas +++ b/ide/fpcompil.pas @@ -81,6 +81,7 @@ type ST : PAdvancedStaticText; KeyST : PColorStaticText; constructor Init; + destructor Done;virtual; procedure Update; end; @@ -514,6 +515,12 @@ begin Fillchar(Status,SizeOf(Status),#0); end; +destructor TCompilerStatusDialog.Done; +begin + if @Self=CompilerStatusDialog then + CompilerStatusDialog:=nil; + Inherited Done; +end; procedure TCompilerStatusDialog.Update; var @@ -860,6 +867,8 @@ begin CompilationPhase:=cpCompiling; New(CompilerStatusDialog, Init); CompilerStatusDialog^.SetState(sfModal,true); + { disable window closing } + CompilerStatusDialog^.Flags:=CompilerStatusDialog^.Flags and not wfclose; Application^.Insert(CompilerStatusDialog); CompilerStatusDialog^.Update; { hook compiler output } @@ -1019,16 +1028,22 @@ begin else CompilationPhase:=cpFailed; { Show end status } + { reenable window closing } + CompilerStatusDialog^.Flags:=CompilerStatusDialog^.Flags or wfclose; CompilerStatusDialog^.Update; + CompilerStatusDialog^.ReDraw; CompilerStatusDialog^.SetState(sfModal,false); if ((CompilationPhase in[cpAborted,cpDone,cpFailed]) or (ShowStatusOnError)) and (Mode<>cRun) then repeat CompilerStatusDialog^.GetEvent(E); if IsExitEvent(E)=false then CompilerStatusDialog^.HandleEvent(E); - until IsExitEvent(E); - Application^.Delete(CompilerStatusDialog); - Dispose(CompilerStatusDialog, Done); + until IsExitEvent(E) or not assigned(CompilerStatusDialog); + if assigned(CompilerStatusDialog) then + begin + Application^.Delete(CompilerStatusDialog); + Dispose(CompilerStatusDialog, Done); + end; CompilerStatusDialog:=nil; { end compilation returns true if the messagewindow should be removed } if CompilationPhase=cpDone then @@ -1233,7 +1248,10 @@ end; end. { $Log$ - Revision 1.3 2001-09-12 09:25:01 pierre + Revision 1.4 2001-09-18 11:33:26 pierre + * fix bug 1604 + + Revision 1.3 2001/09/12 09:25:01 pierre * fix bug 1585 Revision 1.2 2001/08/05 02:01:47 peter