From 17f639d4160095307aa526674f44d4af64d908b7 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Wed, 4 Nov 2015 08:06:54 +0100 Subject: [PATCH] fix, when opening a project from the explorer, the previous project was not freed --- src/ce_miniexplorer.pas | 53 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/src/ce_miniexplorer.pas b/src/ce_miniexplorer.pas index 32d06ad2..4ea2aa73 100644 --- a/src/ce_miniexplorer.pas +++ b/src/ce_miniexplorer.pas @@ -33,7 +33,7 @@ type { TCEMiniExplorerWidget } - TCEMiniExplorerWidget = class(TCEWidget) + TCEMiniExplorerWidget = class(TCEWidget, ICEProjectObserver) btnAddFav: TBitBtn; btnEdit: TBitBtn; btnShellOpen: TBitBtn; @@ -56,6 +56,7 @@ type procedure lstFilesEnter(Sender: TObject); procedure TreeEnter(Sender: TObject); private + fProj: ICECommonProject; fFavorites: TStringList; fLastFold: string; fLastListOrTree: TControl; @@ -75,6 +76,12 @@ type procedure lstFavSelect(Sender: TObject; Item: TListItem; Selected: Boolean); procedure shellOpenSelected; procedure lstFilterChange(sender: TObject); + // + procedure projNew(aProject: ICECommonProject); + procedure projChanged(aProject: ICECommonProject); + procedure projClosing(aProject: ICECommonProject); + procedure projFocused(aProject: ICECommonProject); + procedure projCompiling(aProject: ICECommonProject); public constructor create(aIwner: TComponent); override; destructor destroy; override; @@ -178,10 +185,13 @@ begin finally free; end; + // + EntitiesConnector.addObserver(self); end; destructor TCEMiniExplorerWidget.destroy; begin + EntitiesConnector.removeObserver(self); with TCEMiniExplorerOptions.create(nil) do try assign(self); @@ -201,6 +211,32 @@ begin end; {$ENDREGION} +{$REGION ICEProjectObserver ----------------------------------------------------} +procedure TCEMiniExplorerWidget.projNew(aProject: ICECommonProject); +begin + fProj := aProject; +end; + +procedure TCEMiniExplorerWidget.projChanged(aProject: ICECommonProject); +begin +end; + +procedure TCEMiniExplorerWidget.projClosing(aProject: ICECommonProject); +begin + if fProj = aProject then + fProj := nil; +end; + +procedure TCEMiniExplorerWidget.projFocused(aProject: ICECommonProject); +begin + fProj := aProject; +end; + +procedure TCEMiniExplorerWidget.projCompiling(aProject: ICECommonProject); +begin +end; +{$ENDREGION} + {$REGION Favorites -------------------------------------------------------------} procedure TCEMiniExplorerWidget.favStringsChange(sender: TObject); begin @@ -304,7 +340,6 @@ end; procedure TCEMiniExplorerWidget.btnEditClick(Sender: TObject); var fname: string; - proj: ICECommonProject = nil; begin if lstFiles.Selected = nil then exit; if lstFiles.Selected.Data = nil then exit; @@ -314,11 +349,17 @@ begin fname := fname[2..length(fname)]; {$ENDIF} if isValidNativeProject(fname) then - proj := TCENativeProject.create(nil) as ICECommonProject + begin + if assigned(fProj) then fProj.getProject.Free; + TCENativeProject.create(nil); + end else if isValidDubProject(fname) then - proj := TCEDubProject.create(nil) as ICECommonProject; - if assigned(proj) then - proj.loadFromFile(fname) + begin + if assigned(fProj) then fProj.getProject.Free; + TCEDubProject.create(nil); + end; + if assigned(fProj) then + fProj.loadFromFile(fname) else getMultiDocHandler.openDocument(fname); end;