Designer: Simplify code.

git-svn-id: trunk@45460 -
This commit is contained in:
juha 2014-06-10 16:10:47 +00:00
parent 89f98718d1
commit 7138d69f4a
2 changed files with 10 additions and 26 deletions

View File

@ -105,7 +105,6 @@ type
FGridColor: TColor; FGridColor: TColor;
FLookupRoot: TComponent; FLookupRoot: TComponent;
FMediator: TDesignerMediator; FMediator: TDesignerMediator;
FFreeComponent: boolean;
FOnPastedComponents: TOnPastedComponents; FOnPastedComponents: TOnPastedComponents;
FProcessingDesignerEvent: Integer; FProcessingDesignerEvent: Integer;
FOnActivated: TNotifyEvent; FOnActivated: TNotifyEvent;
@ -275,10 +274,8 @@ type
ControlSelection : TControlSelection; ControlSelection : TControlSelection;
DDC: TDesignerDeviceContext; DDC: TDesignerDeviceContext;
constructor Create(TheDesignerForm: TCustomForm; constructor Create(TheDesignerForm: TCustomForm; AControlSelection: TControlSelection);
AControlSelection: TControlSelection);
procedure PrepareFreeDesigner(AFreeComponent: boolean); procedure PrepareFreeDesigner(AFreeComponent: boolean);
procedure FinalizeFreeDesigner;
procedure DisconnectComponent; override; procedure DisconnectComponent; override;
destructor Destroy; override; destructor Destroy; override;
@ -672,18 +669,11 @@ end;
procedure TDesigner.PrepareFreeDesigner(AFreeComponent: boolean); procedure TDesigner.PrepareFreeDesigner(AFreeComponent: boolean);
begin begin
FFreeComponent:=AFreeComponent; // was FinalizeFreeDesigner
end;
procedure TDesigner.FinalizeFreeDesigner;
begin
//debugln(['TDesigner.FinalizeFreeDesigner Self=',dbgs(Pointer(Self))]);
Include(FFlags, dfDestroyingForm); Include(FFlags, dfDestroyingForm);
if FLookupRoot is TComponent then if FLookupRoot is TComponent then
begin
// free or hide the form // free or hide the form
TheFormEditor.DeleteComponent(TComponent(FLookupRoot),FFreeComponent); TheFormEditor.DeleteComponent(TComponent(FLookupRoot),AFreeComponent);
end;
DisconnectComponent; DisconnectComponent;
Free; Free;
end; end;

View File

@ -6359,15 +6359,6 @@ end;
function TLazSourceFileManager.CloseUnitComponent(AnUnitInfo: TUnitInfo; function TLazSourceFileManager.CloseUnitComponent(AnUnitInfo: TUnitInfo;
Flags: TCloseFlags): TModalResult; Flags: TCloseFlags): TModalResult;
var
OldDesigner: TDesigner;
procedure FreeDesigner(AFreeComponent: boolean);
begin
AnUnitInfo.LoadedDesigner:=false;
OldDesigner.PrepareFreeDesigner(AFreeComponent);
OldDesigner.FinalizeFreeDesigner;
end;
procedure FreeUnusedComponents; procedure FreeUnusedComponents;
var var
@ -6388,6 +6379,7 @@ var
end; end;
var var
OldDesigner: TDesigner;
AForm: TCustomForm; AForm: TCustomForm;
LookupRoot: TComponent; LookupRoot: TComponent;
ComponentStillUsed: Boolean; ComponentStillUsed: Boolean;
@ -6424,9 +6416,10 @@ begin
end; end;
AForm:=FormEditor1.GetDesignerForm(LookupRoot); AForm:=FormEditor1.GetDesignerForm(LookupRoot);
OldDesigner:=nil;
if AForm<>nil then if AForm<>nil then
OldDesigner:=TDesigner(AForm.Designer); OldDesigner:=TDesigner(AForm.Designer)
else
OldDesigner:=nil;
if MainIDE.LastFormActivated=AForm then if MainIDE.LastFormActivated=AForm then
MainIDE.LastFormActivated:=nil; MainIDE.LastFormActivated:=nil;
ComponentStillUsed:=(not (cfCloseDependencies in Flags)) ComponentStillUsed:=(not (cfCloseDependencies in Flags))
@ -6456,19 +6449,20 @@ begin
end; end;
end else begin end else begin
// component with designer // component with designer
AnUnitInfo.LoadedDesigner:=false;
if ComponentStillUsed then begin if ComponentStillUsed then begin
// free designer, keep component hidden // free designer, keep component hidden
{$IFDEF VerboseIDEMultiForm} {$IFDEF VerboseIDEMultiForm}
DebugLn(['TLazSourceFileManager.CloseUnitComponent hiding component and freeing designer: ',AnUnitInfo.Filename,' ',DbgSName(AnUnitInfo.Component)]); DebugLn(['TLazSourceFileManager.CloseUnitComponent hiding component and freeing designer: ',AnUnitInfo.Filename,' ',DbgSName(AnUnitInfo.Component)]);
{$ENDIF} {$ENDIF}
FreeDesigner(false); OldDesigner.PrepareFreeDesigner(false);
end else begin end else begin
// free designer and design form // free designer and design form
{$IFDEF VerboseIDEMultiForm} {$IFDEF VerboseIDEMultiForm}
DebugLn(['TLazSourceFileManager.CloseUnitComponent freeing component and designer: ',AnUnitInfo.Filename,' ',DbgSName(AnUnitInfo.Component)]); DebugLn(['TLazSourceFileManager.CloseUnitComponent freeing component and designer: ',AnUnitInfo.Filename,' ',DbgSName(AnUnitInfo.Component)]);
{$ENDIF} {$ENDIF}
try try
FreeDesigner(true); OldDesigner.PrepareFreeDesigner(true);
finally finally
AnUnitInfo.Component:=nil; AnUnitInfo.Component:=nil;
end; end;