fix #115 - Projet group, index of item after workspace reloading mismatch

This commit is contained in:
Basile Burg 2017-02-02 14:27:52 +01:00
parent b9d23ccbcb
commit fa231de8c7
No known key found for this signature in database
GPG Key ID: 1868039F415CB8CF
3 changed files with 15 additions and 2 deletions

View File

@ -314,6 +314,8 @@ type
procedure setProjectIndex(index: Integer); procedure setProjectIndex(index: Integer);
// indicates wether a project is marked for async compilation // indicates wether a project is marked for async compilation
function projectIsAsync(index: integer): boolean; function projectIsAsync(index: integer): boolean;
// indicates the project index after reloading
function reloadedProjectIndex: integer;
end; end;

View File

@ -948,7 +948,7 @@ begin
if source = CEMainForm then if source = CEMainForm then
begin begin
grp := getProjectGroup; grp := getProjectGroup;
pix := grp.getProjectIndex; pix := grp.reloadedProjectIndex;
prj := CEMainForm.fFreeProj; prj := CEMainForm.fFreeProj;
if assigned(prj) then if assigned(prj) then
fProject := prj.filename; fProject := prj.filename;

View File

@ -53,6 +53,7 @@ type
fModified: boolean; fModified: boolean;
fOnChanged: TNotifyEvent; fOnChanged: TNotifyEvent;
fBasePath: string; fBasePath: string;
fSavedIndex: integer;
fFreeStanding: ICECommonProject; fFreeStanding: ICECommonProject;
procedure setItems(value: TCollection); procedure setItems(value: TCollection);
function getItem(index: integer): TProjectGroupItem; function getItem(index: integer): TProjectGroupItem;
@ -87,6 +88,7 @@ type
procedure setProjectIndex(value: Integer); procedure setProjectIndex(value: Integer);
function projectIsAsync(ix: integer): boolean; function projectIsAsync(ix: integer): boolean;
function projectModified(ix: integer): boolean; function projectModified(ix: integer): boolean;
function reloadedProjectIndex: integer;
// //
function addItem(const fname: string): TProjectGroupItem; function addItem(const fname: string): TProjectGroupItem;
property item[ix: integer]: TProjectGroupItem read getItem; default; property item[ix: integer]: TProjectGroupItem read getItem; default;
@ -162,6 +164,7 @@ begin
fItems.FPOAttachObserver(self); fItems.FPOAttachObserver(self);
EntitiesConnector.addSingleService(self); EntitiesConnector.addSingleService(self);
EntitiesConnector.addObserver(self); EntitiesConnector.addObserver(self);
fSavedIndex := -1;
end; end;
destructor TProjectGroup.destroy; destructor TProjectGroup.destroy;
@ -308,6 +311,11 @@ begin
end; end;
end; end;
function TProjectGroup.reloadedProjectIndex: integer;
begin
exit(fSavedIndex);
end;
procedure TProjectGroup.afterLoad; procedure TProjectGroup.afterLoad;
var var
p: TProjectGroupItem; p: TProjectGroupItem;
@ -316,6 +324,7 @@ var
f: string = ''; f: string = '';
begin begin
inherited; inherited;
fSavedIndex := fProjectIndex;
for i:= projectCount-1 downto 0 do for i:= projectCount-1 downto 0 do
begin begin
p := item[i]; p := item[i];
@ -345,6 +354,7 @@ procedure TProjectGroup.afterSave;
begin begin
inherited; inherited;
fModified := false; fModified := false;
fSavedIndex := fProjectIndex;
end; end;
procedure TProjectGroup.addProject(project: ICECommonProject); procedure TProjectGroup.addProject(project: ICECommonProject);
@ -409,6 +419,7 @@ begin
fFilename:= ''; fFilename:= '';
fModified:=false; fModified:=false;
fProjectIndex := -1; fProjectIndex := -1;
fSavedIndex := -1;
doChanged; doChanged;
end; end;