IDE: DoRenameUnit: check if saving to absolute filename, IDE: save new lrs file to default location instead of test directory

git-svn-id: trunk@21098 -
This commit is contained in:
mattias 2009-08-04 17:02:44 +00:00
parent 9f0a0a4510
commit f0c7b749b8
2 changed files with 16 additions and 7 deletions

View File

@ -4692,6 +4692,7 @@ var
UnitOwners: TFPList; UnitOwners: TFPList;
APackage: TLazPackage; APackage: TLazPackage;
i: Integer; i: Integer;
LRSFilename: String;
begin begin
Result:=mrCancel; Result:=mrCancel;
@ -4942,10 +4943,13 @@ begin
{$ENDIF} {$ENDIF}
// save binary stream (.lrs) // save binary stream (.lrs)
if ResourceCode<>nil then begin if ResourceCode<>nil then begin
if (not (sfSaveToTestDir in Flags)) and (not ResourceCode.IsVirtual) then if (not (sfSaveToTestDir in Flags)) then
begin begin
if (ResourceCode.Modified) then begin if (ResourceCode.Modified) then begin
Result:=SaveCodeBufferToFile(ResourceCode,ResourceCode.Filename); LRSFilename:=ResourceCode.Filename;
if not FilenameIsAbsolute(LRSFilename) then
LRSFilename:=MainBuildBoss.GetDefaultLRSFilename(AnUnitInfo);
Result:=SaveCodeBufferToFile(ResourceCode,LRSFilename);
if not Result=mrOk then exit; if not Result=mrOk then exit;
end; end;
end else begin end else begin
@ -5029,7 +5033,7 @@ begin
SrcEdit:=GetSourceEditorForUnitInfo(AnUnitInfo); SrcEdit:=GetSourceEditorForUnitInfo(AnUnitInfo);
if NewUnitName='' then if NewUnitName='' then
NewUnitName:=AnUnitInfo.UnitName; NewUnitName:=AnUnitInfo.UnitName;
//debugln(['TMainIDE.DoRenameUnit ',AnUnitInfo.Filename,' NewUnitName=',NewUnitName,' OldUnitName=',AnUnitInfo.UnitName,' ResourceCode=',ResourceCode<>nil]); //debugln(['TMainIDE.DoRenameUnit ',AnUnitInfo.Filename,' NewUnitName=',NewUnitName,' OldUnitName=',AnUnitInfo.UnitName,' ResourceCode=',ResourceCode<>nil,' NewFilename="',NewFilename,'"']);
// check new resource file // check new resource file
NewLFMFilename:=ChangeFileExt(NewFilename,'.lfm'); NewLFMFilename:=ChangeFileExt(NewFilename,'.lfm');
@ -5113,7 +5117,8 @@ begin
NewResFilename:=NewResFilePath NewResFilename:=NewResFilePath
+ExtractFileNameOnly(NewFilename)+ResourceFileExt; +ExtractFileNameOnly(NewFilename)+ResourceFileExt;
end; end;
CodeToolBoss.SaveBufferAs(ResourceCode,NewResFilename,ResourceCode); if FilenameIsAbsolute(NewResFilename) then
CodeToolBoss.SaveBufferAs(ResourceCode,NewResFilename,ResourceCode);
if (AnUnitInfo.Component<>nil) then if (AnUnitInfo.Component<>nil) then
FormEditor1.RenameJITComponentUnitname(AnUnitInfo.Component,NewUnitName); FormEditor1.RenameJITComponentUnitname(AnUnitInfo.Component,NewUnitName);
@ -5134,7 +5139,7 @@ begin
if FilenameIsAbsolute(OldLFMFilename) and FileExistsUTF8(OldLFMFilename) then if FilenameIsAbsolute(OldLFMFilename) and FileExistsUTF8(OldLFMFilename) then
begin begin
LFMBuf:=CodeToolBoss.LoadFile(OldLFMFilename,false,false); LFMBuf:=CodeToolBoss.LoadFile(OldLFMFilename,false,false);
if LFMBuf<>nil then begin if (LFMBuf<>nil) and FilenameIsAbsolute(NewLFMFilename) then begin
Result:=SaveCodeBufferToFile(LFMBuf,NewLFMFilename,true); Result:=SaveCodeBufferToFile(LFMBuf,NewLFMFilename,true);
if Result<>mrOk then begin if Result<>mrOk then begin
DebugLn(['TMainIDE.DoRenameUnit SaveCodeBufferToFile failed for ',NewLFMFilename]); DebugLn(['TMainIDE.DoRenameUnit SaveCodeBufferToFile failed for ',NewLFMFilename]);
@ -5173,8 +5178,11 @@ begin
end; end;
// save file // save file
Result:=SaveCodeBufferToFile(NewSource,NewSource.Filename); if not NewSource.IsVirtual then begin
if Result<>mrOk then exit; Result:=AnUnitInfo.WriteUnitSource;
if Result<>mrOk then exit;
AnUnitInfo.Modified:=false;
end;
// change packages containing the file // change packages containing the file
Result:=PkgBoss.OnRenameFile(OldFilename,AnUnitInfo.Filename, Result:=PkgBoss.OnRenameFile(OldFilename,AnUnitInfo.Filename,

View File

@ -1470,6 +1470,7 @@ end;
function TUnitInfo.NeedsSaveToDisk: boolean; function TUnitInfo.NeedsSaveToDisk: boolean;
begin begin
Result:=IsVirtual or Modified or ChangedOnDisk(true); Result:=IsVirtual or Modified or ChangedOnDisk(true);
//DebugLn(['TUnitInfo.NeedsSaveToDisk ',filename,' Result=',Result,' Modified=',Modified]);
if not Result then begin if not Result then begin
if Source<>nil then if Source<>nil then
Result:=Source.FileOnDiskNeedsUpdate Result:=Source.FileOnDiskNeedsUpdate