Merge branch 'Designer/SelectClass' into 'main'

Display frame selection dialog when adding TFrame component from Component List window

See merge request freepascal.org/lazarus/lazarus!309
This commit is contained in:
Maxim Ganetsky 2024-07-29 13:28:10 +00:00
commit f65e2a2aea
2 changed files with 15 additions and 6 deletions

View File

@ -279,6 +279,7 @@ var
NewParent: TComponent;
CurDesigner: TDesigner;
lOldEvent: TOnComponentAdded;
TypeClass: TComponentClass;
begin
AComponent := GetSelectedComponent;
NewParent := GetSelectedDesignComponent;
@ -301,8 +302,13 @@ begin
if CurDesigner = nil then
Exit;
// get component class (e.g. display dialog to select TFrame)
TypeClass := AComponent.GetCreationClass;
if TypeClass = nil then
Exit;
// check parent
CurDesigner.AddComponentCheckParent(NewParent, NewParent, nil, AComponent.ComponentClass);
CurDesigner.AddComponentCheckParent(NewParent, NewParent, nil, TypeClass);
if NewParent = nil then
Exit;
@ -321,10 +327,10 @@ begin
begin
lOldEvent := CurDesigner.OnComponentAdded; // save event
CurDesigner.OnComponentAdded := nil; // clear event
CurDesigner.AddComponent(AComponent, AComponent.ComponentClass, NewParent, FAddCompNewLeft, FAddCompNewTop, 0, 0);
CurDesigner.AddComponent(AComponent, TypeClass, NewParent, FAddCompNewLeft, FAddCompNewTop, 0, 0);
CurDesigner.OnComponentAdded := lOldEvent; // restore event
end else begin
CurDesigner.AddComponent(AComponent, AComponent.ComponentClass, NewParent, FAddCompNewLeft, FAddCompNewTop, 0, 0);
CurDesigner.AddComponent(AComponent, TypeClass, NewParent, FAddCompNewLeft, FAddCompNewTop, 0, 0);
end;
end;

View File

@ -744,15 +744,18 @@ begin
//debugln('TComponentPalette.ComponentBtnDblClick ',TComponent(Sender).Name);
if SelectAButton(TSpeedButton(Sender)) and (Selected<>nil) then begin
if FormEditingHook<>nil then begin
TypeClass:=Selected.ComponentClass;
if assigned(Selected.OnGetCreationClass) then
Selected.OnGetCreationClass(Self,TypeClass);
// get component class (e.g. display dialog to select TFrame)
TypeClass:=Selected.GetCreationClass;
if TypeClass=nil then exit;
ParentComp:=FormEditingHook.GetDefaultComponentParent(TypeClass);
if ParentComp=nil then exit;
if not FormEditingHook.GetDefaultComponentPosition(TypeClass,ParentComp,X,Y)
then exit;
//debugln('TComponentPalette.ComponentBtnDblClick ',dbgsName(Sender),' ',dbgs(X),',',dbgs(Y));
DisableAutoSize:=true;
AComponent:=FormEditingHook.CreateComponent(ParentComp,TypeClass,'',X,Y,0,0,
DisableAutoSize);