From f480047750299f22659780f672304f1a103817eb Mon Sep 17 00:00:00 2001 From: mattias Date: Fri, 30 Dec 2022 13:10:17 +0100 Subject: [PATCH] designer: ask mediator for default size --- components/ideintf/formeditingintf.pas | 6 ++++++ ide/customformeditor.pp | 26 ++++++++++++++++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/components/ideintf/formeditingintf.pas b/components/ideintf/formeditingintf.pas index 3963f45201..b94e6fda82 100644 --- a/components/ideintf/formeditingintf.pas +++ b/components/ideintf/formeditingintf.pas @@ -148,6 +148,7 @@ type class function FormClass: TComponentClass; virtual; abstract; class function CreateMediator(TheOwner, aForm: TComponent): TDesignerMediator; virtual; class procedure InitFormInstance({%H-}aForm: TComponent); virtual; // called after NewInstance, before constructor + class function GetDefaultSize: TPoint; virtual; public procedure SetBounds(AComponent: TComponent; NewBounds: TRect); virtual; procedure GetBounds(AComponent: TComponent; out CurBounds: TRect); virtual; @@ -598,6 +599,11 @@ begin end; +class function TDesignerMediator.GetDefaultSize: TPoint; +begin + Result:=Point(320,240); +end; + procedure TDesignerMediator.SetBounds(AComponent: TComponent; NewBounds: TRect); begin SetComponentLeftTopOrDesignInfo(AComponent,NewBounds.Left,NewBounds.Top); diff --git a/ide/customformeditor.pp b/ide/customformeditor.pp index 83cbfab97e..f4927349d8 100644 --- a/ide/customformeditor.pp +++ b/ide/customformeditor.pp @@ -1290,15 +1290,27 @@ var end; procedure CreateMediator; + var + NewSize: TPoint; begin if Mediator<>nil then exit; MediatorClass:=GetDesignerMediatorClass(TComponentClass(NewComponent.ClassType)); - if MediatorClass<>nil then begin + if MediatorClass<>nil then + begin Mediator:=MediatorClass.CreateMediator(nil,NewComponent); - FreeMediator:=Mediator<>nil; + if Mediator<>nil then + begin + NewSize:=Mediator.GetDefaultSize; + NewWidth:=NewSize.X; + NewHeight:=NewSize.Y; + end; end; - //DebugLn(['TCustomFormEditor.CreateComponent ',DbgSName(NewComponent),' ',dbgs(Bounds(CompLeft,CompTop,CompWidth,CompHeight)),' ',Mediator<>nil]); + end; + + procedure MediatorInitComponent; + begin if Mediator<>nil then begin + //DebugLn(['TCustomFormEditor.CreateComponent ',DbgSName(NewComponent),' ',dbgs(Bounds(CompLeft,CompTop,CompWidth,CompHeight)),' ',Mediator<>nil]); Mediator.InitComponent(NewComponent,ParentComponent, Bounds(CompLeft,CompTop,CompWidth,CompHeight)); end; @@ -1412,6 +1424,8 @@ begin end; try + CreateMediator; + // set bounds CompLeft:=NewLeft; CompTop:=NewTop; @@ -1480,7 +1494,6 @@ begin AControl.DesignInfo := LeftTopToDesignInfo(CompLeft, CompTop); //DebugLn(['TCustomFormEditor.CreateComponent ',dbgsName(AControl),' ',LazLongRec(AControl.DesignInfo).Lo,',',LazLongRec(AControl.DesignInfo).Hi]); end; - CreateMediator; end else if (NewComponent is TDataModule) then @@ -1509,15 +1522,16 @@ begin CompLeft := Max(Low(SmallInt), Min(High(SmallInt), CompLeft)); CompTop := Max(Low(SmallInt), Min(High(SmallInt), CompTop)); + if Mediator=nil then + SetComponentLeftTopOrDesignInfo(NewComponent,CompLeft,CompTop); - SetComponentLeftTopOrDesignInfo(NewComponent,CompLeft,CompTop); if ParentComponent <> nil then begin DesignForm := GetDesignerForm(ParentComponent); if DesignForm <> nil then DesignForm.Invalidate; end; - CreateMediator; end; + MediatorInitComponent; except on e: Exception do begin DebugLn(e.Message);