mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-02 01:59:29 +01:00
codetools: reparsing source on searching for a published method body
git-svn-id: trunk@10295 -
This commit is contained in:
parent
421ec5b6aa
commit
b8a4c2ed02
@ -540,26 +540,32 @@ var
|
||||
SrcClassName: String;
|
||||
begin
|
||||
Result:=false;
|
||||
ClassNode:=FindClassNodeInInterface(UpperClassName,true,false,true);
|
||||
AFindContext:=FindPublishedMethodNodeInClass(ClassNode,UpperMethodName,true);
|
||||
if AFindContext.Node=nil then begin
|
||||
DebugLn(['TEventsCodeTool.JumpToPublishedMethodBody method not found: ',UpperClassName,'.',UpperMethodName]);
|
||||
exit;
|
||||
ActivateGlobalWriteLock;
|
||||
try
|
||||
BuildTree(false);
|
||||
ClassNode:=FindClassNodeInInterface(UpperClassName,true,false,true);
|
||||
AFindContext:=FindPublishedMethodNodeInClass(ClassNode,UpperMethodName,true);
|
||||
if AFindContext.Node=nil then begin
|
||||
DebugLn(['TEventsCodeTool.JumpToPublishedMethodBody method not found: ',UpperClassName,'.',UpperMethodName]);
|
||||
exit;
|
||||
end;
|
||||
SrcTool:=TEventsCodeTool(AFindContext.Tool);
|
||||
ClassNode:=AFindContext.Node.Parent.Parent;
|
||||
if ClassNode.Desc<>ctnClass then begin
|
||||
DebugLn(['TEventsCodeTool.JumpToPublishedMethodBody method found in non class',UpperClassName,'.',UpperMethodName,' in ',SrcTool.MainFilename,' Node=',ClassNode.DescAsString]);
|
||||
exit;
|
||||
end;
|
||||
SrcClassName:=SrcTool.ExtractClassName(ClassNode,true);
|
||||
ANode:=SrcTool.FindMethodNodeInImplementation(
|
||||
SrcClassName,UpperMethodName,true);
|
||||
if ANode=nil then begin
|
||||
DebugLn(['TEventsCodeTool.JumpToPublishedMethodBody method not found ',SrcClassName,'.',UpperMethodName,' in ',SrcTool.MainFilename]);
|
||||
exit;
|
||||
end;
|
||||
Result:=SrcTool.FindJumpPointInProcNode(ANode,NewPos,NewTopLine);
|
||||
finally
|
||||
DeactivateGlobalWriteLock;
|
||||
end;
|
||||
SrcTool:=TEventsCodeTool(AFindContext.Tool);
|
||||
ClassNode:=AFindContext.Node.Parent.Parent;
|
||||
if ClassNode.Desc<>ctnClass then begin
|
||||
DebugLn(['TEventsCodeTool.JumpToPublishedMethodBody method found in non class',UpperClassName,'.',UpperMethodName,' in ',SrcTool.MainFilename,' Node=',ClassNode.DescAsString]);
|
||||
exit;
|
||||
end;
|
||||
SrcClassName:=SrcTool.ExtractClassName(ClassNode,true);
|
||||
ANode:=SrcTool.FindMethodNodeInImplementation(
|
||||
SrcClassName,UpperMethodName,true);
|
||||
if ANode=nil then begin
|
||||
DebugLn(['TEventsCodeTool.JumpToPublishedMethodBody method not found ',SrcClassName,'.',UpperMethodName,' in ',SrcTool.MainFilename]);
|
||||
exit;
|
||||
end;
|
||||
Result:=SrcTool.FindJumpPointInProcNode(ANode,NewPos,NewTopLine);
|
||||
end;
|
||||
|
||||
function TEventsCodeTool.RenamePublishedMethod(const UpperClassName,
|
||||
|
||||
@ -3742,10 +3742,10 @@ begin
|
||||
raise EPropertyError.Create('Method name must be an identifier'{@SCannotCreateName});
|
||||
exit;
|
||||
end;
|
||||
SetValue(FormMethodName);
|
||||
SetValue(FormMethodName); // this will jump to the method
|
||||
PropertyHook.RefreshPropertyValues;
|
||||
end;
|
||||
PropertyHook.ShowMethod(FormMethodName);
|
||||
end else
|
||||
PropertyHook.ShowMethod(FormMethodName);
|
||||
end;
|
||||
|
||||
function TMethodPropertyEditor.GetAttributes: TPropertyAttributes;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user