Browse Source

* reinserted version 1.66 lost changes
+ CtrlT Undo works now !

pierre 25 years ago
parent
commit
4897ec254f
1 changed files with 38 additions and 21 deletions
  1. 38 21
      ide/text/weditor.pas

+ 38 - 21
ide/text/weditor.pas

@@ -2761,6 +2761,7 @@ procedure TCodeEditor.DelSelect;
 var LineDelta, LineCount, CurLine: Sw_integer;
 var LineDelta, LineCount, CurLine: Sw_integer;
     StartX,EndX,LastX: Sw_integer;
     StartX,EndX,LastX: Sw_integer;
     S: string;
     S: string;
+    SPos : TPoint;
 begin
 begin
   if IsReadOnly or (ValidBlock=false) then Exit;
   if IsReadOnly or (ValidBlock=false) then Exit;
 
 
@@ -2773,26 +2774,36 @@ begin
     S:=GetDisplayText(CurLine);
     S:=GetDisplayText(CurLine);
     if LineDelta=0 then StartX:=SelStart.X else StartX:=0;
     if LineDelta=0 then StartX:=SelStart.X else StartX:=0;
     if LineDelta=LineCount-1 then EndX:=SelEnd.X else EndX:=length(S);
     if LineDelta=LineCount-1 then EndX:=SelEnd.X else EndX:=length(S);
-    if (LineDelta<LineCount-1) and
-       ( (StartX=0) and (EndX>=length(S)) )
-       then begin
-         DeleteLine(CurLine);
-         if CurLine>0 then LastX:=length(GetDisplayText(CurLine-1))
-            else LastX:=0;
-       end
-       else begin
-         SetDisplayText(CurLine,RExpand(copy(S,1,StartX),StartX)+copy(S,EndX+1,255));
-         LastX:=StartX;
-         if (StartX=0) and (0<LineDelta) and
-       not(((LineDelta=LineCount-1) and (StartX=0) and (StartX=EndX))) then
-         begin
-      S:=GetDisplayText(CurLine-1);
-      SetDisplayText(CurLine-1,S+GetLineText(CurLine));
-      DeleteLine(CurLine);
-      LastX:=length(S);
-         end else
+    if (LineDelta<LineCount-1) and ((StartX=0) and (EndX>=length(S))) then
+      begin
+      { delete the complete line }
+        DeleteLine(CurLine);
+        if CurLine>0 then
+          LastX:=length(GetDisplayText(CurLine-1))
+        else
+          LastX:=0;
+      end
+    else
+      begin
+        if StoreUndo then
+          begin
+            SPos.X:=StartX;
+            SPos.Y:=CurLine;
+            AddAction(eaDeleteText,SPos,SPos,Copy(S,StartX+1,EndX-StartX));
+          end;
+        SetDisplayText(CurLine,RExpand(copy(S,1,StartX),StartX)+copy(S,EndX+1,255));
+        LastX:=StartX;
+        if (StartX=0) and (0<LineDelta) and
+           not(((LineDelta=LineCount-1) and (StartX=0) and (StartX=EndX))) then
+          begin
+            S:=GetDisplayText(CurLine-1);
+            SetDisplayText(CurLine-1,S+GetLineText(CurLine));
+            DeleteLine(CurLine);
+            LastX:=length(S);
+          end
+        else
          Inc(CurLine);
          Inc(CurLine);
-       end;
+      end;
     Inc(LineDelta);
     Inc(LineDelta);
   end;
   end;
   HideSelect;
   HideSelect;
@@ -4923,7 +4934,7 @@ end;
 
 
 function TFileEditor.IsChangedOnDisk : boolean;
 function TFileEditor.IsChangedOnDisk : boolean;
 begin
 begin
-  IsChangedOnDisk:=OnDiskLoadTime<>GetFileTime(FileName);
+  IsChangedOnDisk:=(OnDiskLoadTime<>GetFileTime(FileName)) and (OnDiskLoadTime<>-1);
 end;
 end;
 
 
 function TFileEditor.SaveFile: boolean;
 function TFileEditor.SaveFile: boolean;
@@ -4980,6 +4991,8 @@ begin
   begin
   begin
     FileName := FExpand(FileName);
     FileName := FExpand(FileName);
     Message(Owner, evBroadcast, cmUpdateTitle, @Self);
     Message(Owner, evBroadcast, cmUpdateTitle, @Self);
+    { if we rename the file the OnDiskLoadTime is wrong so we reset it }
+    OnDiskLoadTime:=-1;
     SaveAs := SaveFile;
     SaveAs := SaveFile;
     if IsClipboard then FileName := '';
     if IsClipboard then FileName := '';
     Message(Application,evBroadcast,cmFileNameChanged,@Self);
     Message(Application,evBroadcast,cmFileNameChanged,@Self);
@@ -5418,7 +5431,11 @@ end;
 END.
 END.
 {
 {
   $Log$
   $Log$
-  Revision 1.67  2000-01-03 11:38:35  michael
+  Revision 1.68  2000-01-04 12:33:08  pierre
+    * reinserted version 1.66 lost changes
+    + CtrlT Undo works now !
+
+  Revision 1.67  2000/01/03 11:38:35  michael
   Changes from Gabor
   Changes from Gabor
 
 
   Revision 1.65  1999/12/08 16:02:46  pierre
   Revision 1.65  1999/12/08 16:02:46  pierre