2
0
pierre 24 жил өмнө
parent
commit
bad95b49e2
1 өөрчлөгдсөн 22 нэмэгдсэн , 4 устгасан
  1. 22 4
      ide/fpcompil.pas

+ 22 - 4
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