mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-20 23:59:19 +02:00
IDE: Fix reading ancestor type TFrame for object in LFM when it is not a direct ancestor. Issue #38585.
git-svn-id: trunk@64763 -
This commit is contained in:
parent
2fa9987008
commit
bda23a6856
@ -6476,16 +6476,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function LoadAncestorDependencyHidden(AnUnitInfo: TUnitInfo;
|
function LoadAncestorDependencyHidden(AnUnitInfo: TUnitInfo;
|
||||||
const aComponentClassName: string;
|
const aComponentClassName: string; OpenFlags: TOpenFlags;
|
||||||
OpenFlags: TOpenFlags;
|
|
||||||
out AncestorClass: TComponentClass;
|
out AncestorClass: TComponentClass;
|
||||||
out AncestorUnitInfo: TUnitInfo): TModalResult;
|
out AncestorUnitInfo: TUnitInfo): TModalResult;
|
||||||
var
|
var
|
||||||
AncestorClassName, IgnoreBtnText: String;
|
AncsClsName, S: String;
|
||||||
CodeBuf: TCodeBuffer;
|
CodeBuf: TCodeBuffer;
|
||||||
GrandAncestorClass, DefAncestorClass: TComponentClass;
|
GrandAncestorClass, DefAncestorClass: TComponentClass;
|
||||||
begin
|
begin
|
||||||
AncestorClassName:='';
|
|
||||||
AncestorClass:=nil;
|
AncestorClass:=nil;
|
||||||
AncestorUnitInfo:=nil;
|
AncestorUnitInfo:=nil;
|
||||||
|
|
||||||
@ -6496,22 +6494,22 @@ begin
|
|||||||
if Result<>mrOk then exit;
|
if Result<>mrOk then exit;
|
||||||
AnUnitInfo.Source:=CodeBuf;
|
AnUnitInfo.Source:=CodeBuf;
|
||||||
end;
|
end;
|
||||||
if not CodeToolBoss.FindFormAncestor(AnUnitInfo.Source,aComponentClassName,
|
|
||||||
AncestorClassName,true)
|
|
||||||
then begin
|
|
||||||
DebugLn('LoadAncestorDependencyHidden Filename="',AnUnitInfo.Filename,'" ClassName=',aComponentClassName,'. Unable to find ancestor class: ',CodeToolBoss.ErrorMessage);
|
|
||||||
end;
|
|
||||||
|
|
||||||
// try the base designer classes
|
S:=aComponentClassName;
|
||||||
if not FindBaseComponentClass(AnUnitInfo,AncestorClassName,
|
repeat
|
||||||
aComponentClassName,AncestorClass) then
|
if not CodeToolBoss.FindFormAncestor(AnUnitInfo.Source,S,AncsClsName,true) then
|
||||||
begin
|
DebugLn('LoadAncestorDependencyHidden Filename="',AnUnitInfo.Filename,'" ClassName=',aComponentClassName,
|
||||||
DebugLn(['LoadAncestorDependencyHidden FindUnitComponentClass failed for AncestorClassName=',AncestorClassName]);
|
'. Unable to find ancestor class: ',CodeToolBoss.ErrorMessage);
|
||||||
exit(mrCancel);
|
// try the base designer classes
|
||||||
end;
|
if not FindBaseComponentClass(AnUnitInfo,AncsClsName,S,AncestorClass) then
|
||||||
|
begin
|
||||||
|
DebugLn(['LoadAncestorDependencyHidden FindUnitComponentClass failed for AncsClsName=',AncsClsName]);
|
||||||
|
exit(mrCancel);
|
||||||
|
end;
|
||||||
|
S:=AncsClsName;
|
||||||
|
until Assigned(AncestorClass);
|
||||||
|
|
||||||
// try loading the ancestor first (unit, lfm and component instance)
|
// try loading the ancestor first (unit, lfm and component instance)
|
||||||
|
|
||||||
if AnUnitInfo.UnitResourceFileformat<>nil then
|
if AnUnitInfo.UnitResourceFileformat<>nil then
|
||||||
DefAncestorClass:=AnUnitInfo.UnitResourceFileformat.DefaultComponentClass
|
DefAncestorClass:=AnUnitInfo.UnitResourceFileformat.DefaultComponentClass
|
||||||
else
|
else
|
||||||
@ -6521,13 +6519,11 @@ begin
|
|||||||
DefAncestorClass:=BaseFormEditor1.StandardDesignerBaseClasses[DesignerBaseClassId_TForm];
|
DefAncestorClass:=BaseFormEditor1.StandardDesignerBaseClasses[DesignerBaseClassId_TForm];
|
||||||
|
|
||||||
if (AncestorClass=nil) then begin
|
if (AncestorClass=nil) then begin
|
||||||
IgnoreBtnText:='';
|
S:='';
|
||||||
if DefAncestorClass<>nil then
|
if DefAncestorClass<>nil then
|
||||||
IgnoreBtnText:=Format(lisIgnoreUseAsAncestor, [DefAncestorClass.ClassName]);
|
S:=Format(lisIgnoreUseAsAncestor, [DefAncestorClass.ClassName]);
|
||||||
|
Result:=LoadComponentDependencyHidden(AnUnitInfo,AncsClsName,OpenFlags,
|
||||||
Result:=LoadComponentDependencyHidden(AnUnitInfo,AncestorClassName,
|
false,AncestorClass,AncestorUnitInfo,GrandAncestorClass,S);
|
||||||
OpenFlags,false,AncestorClass,AncestorUnitInfo,GrandAncestorClass,
|
|
||||||
IgnoreBtnText);
|
|
||||||
if Result<>mrOk then begin
|
if Result<>mrOk then begin
|
||||||
DebugLn(['LoadAncestorDependencyHidden DoLoadComponentDependencyHidden failed AnUnitInfo=',AnUnitInfo.Filename]);
|
DebugLn(['LoadAncestorDependencyHidden DoLoadComponentDependencyHidden failed AnUnitInfo=',AnUnitInfo.Filename]);
|
||||||
end;
|
end;
|
||||||
@ -6543,7 +6539,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//DebugLn('LoadAncestorDependencyHidden Filename="',AnUnitInfo.Filename,'" AncestorClassName=',AncestorClassName,' AncestorClass=',dbgsName(AncestorClass));
|
//DebugLn('LoadAncestorDependencyHidden Filename="',AnUnitInfo.Filename,'" AncsClsName=',AncsClsName,' AncestorClass=',dbgsName(AncestorClass));
|
||||||
if AncestorClass=nil then
|
if AncestorClass=nil then
|
||||||
AncestorClass:=DefAncestorClass;
|
AncestorClass:=DefAncestorClass;
|
||||||
Result:=mrOk;
|
Result:=mrOk;
|
||||||
|
Loading…
Reference in New Issue
Block a user